Tutoriel Vidéo PHP : Sécuriser avec les Sessions

Dans ce tutoriel vidéo nous verrons comment utiliser les variable de sessions, $_SESSION, pour réaliser un espace réservé en PHP. Le système permettra donc de demander l'identification des utilisateurs lors de l'accès dans une page à accès restreint. Nous apprendrons donc :


Télécharger la vidéo
(Réservé aux premiums)


Après avoir appris sur Internet quoi de plus normal que de partager à son tour ? Passionné par le web depuis un peu plus de 5 ans maintenant j'aime partager mes compétences et mes découvertes avec les personnes qui ont cette même passion pour le web : Vous.

Vous aimerez aussi

Youtube Data API

Youtube Data API
37m

Envie d'uploader ou de lister des vidéo youtube directement en PHP ? Ce...

Système d'alerte

Système d'alerte
16m

Dans ce tutoriel vidéo vous découvrirez comment mettre en place un...

119 commentaires
Ajouter un commentaire

Waymo Il y a 14 jours Répondre

Bonjour,

j'ai un soucis, le tuto fonctionne très bien en local avec wamp mais depuis qu'il est en ligne, toutes les pages fonctionnent mais il m'affiche la page admin avec la possibilité de modif, créer et suppr une news sans me demander le log et le pass.
La session ne fonctionne plus en gros. Je n'ai aucunes erreurs je ne vois pas trop ou est le problème :/

Une idée ?

sébastien Il y a 20 jours Répondre

Merci pour ce tuto qui m'a bien aidé pour la réalisation d'un projet !!
Très bon travail merci encore !

Xav Il y a 1 mois Répondre

bonjour, merci pour le tuto, en revanche, les documents téléchargeables dans cet espace ne sont pas sécurisés, on peut y acceder si on a l'URL

johnny Il y a 2 mois Répondre

"On va tout faire passer par POST pour avoir plus de sécurité"
I loled. Sérieux, tu le penses vraiment ?

curl --data "variablepost1=v;variablepost2=vv" "http://faggot.ext "

Il y a 4 mois Répondre

nice tuto thy a lot

lolo301187 Il y a 5 mois Répondre

excellent tuto !!! Merci

Jo Il y a 6 mois Répondre

Ton application présente plusieurs failles :
* Injection SQL
* Vol de session avec le PHPSID

:)

Naenia Il y a 7 mois Répondre

Bonjour. Super tuto.
Arrêtez moi si je me trompe mais je pense qu'il manque un mysql_real_escape_string au niveau de extract($post) dans la page où l'on rentre ses identifiants.
Je dis peut-être n'importe quoi, je ne suis pas un expert mais lorsque je quote le champs "login", ça m'envoie une erreur sql si j'escape string pas.
Bien à vous.

doobleow7 Il y a 8 mois Répondre

Bonjour,

Tout d'abord félicitations pour ces tutos toujours aussi bien fait. Merci de partager. J'ai une petite question qui n'a en fait rien avoir avec le tuto lui-mme mais avec Coda et un petit détail que j'ai aperçu en regardant ce tuto. Vous taper à un moment donné "creerpage" dans Coda et Hop ! apparat une structure HTML de page. Un peu plus loin il me semble que vous faites de même avec une ligne du type "createform" ou quelque chose du genre. S'agit-il d'un pluggin Coda que je ne connaîtrais pas ? Et si oui, pourriez-vous partager ce bijou avec nous ?

Merci d'avance !!!

thibhenry Il y a 9 mois Répondre

au lieu de faire une classe, tu fais directement une fonction, c'est mieux
Et au lieu de faire :
if(isLogged() )
{
}
else
{
header('Location: login.php');
}

tu fais :

if(!isLogged() )
{
header('Location: login.php');
}


Sinon, merci bcp pour ce tuto !!!

adrienferreira Il y a 1 an Répondre

Merci encore !

SPP_/ROD Il y a 1 an Répondre

Merci ^^ ca m'a vraiment bien aidé pour mon dite !

jeff Il y a 1 an Répondre

bonjour,
je fait ton tuto,je suis sous windows7 et avec WAMPSERVER.
j'ai un message d'erreur a cette ligne:mysql_connect("localhost","root","root");
Peut_tu m'expliquer ?
Merci
<?php
session_start();
if(isset($_POST)&& !empty($_POST['login'])&&!empty($_POST['pass'])){
extract($_POST);
$pass = sha1($pass);
mysql_connect("localhost","root","");
mysql_select_db("zone membres");
$sql = "SELECT id FROM users WHERE login='$login' AND pass='$pass'";
$reg = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($req)>0){
$_SESSION['Auth'] = array(
'login' => $login,
'pass' => $pass
);
}
else{
echo "Mauvais identifiant";
}
}

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">

<html xmlns="http://www.w3.org/1999/xhtml " xml:lang="fr" >

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<!..titre..>

<title>Login</title>

</head>
<body>
<form action="login.php" method="post">
Login : <input type="text" name="login"/><br/>
Mot de pass : <input type="password" name="pass"/><br/>
<input type="submit" value="Me connecter"/>

</form>

</body>

</html>

jeff Il y a 1 an Répondre

bonjour,
je fait ton tuto,je suis sous windows7 et avec WAMPSERVER.
j'ai un message d'erreur a cette ligne:mysql_connect("localhost","root","root");
Peut_tu m'expliquer ?
Merci
<?php
session_start();
if(isset($_POST)&& !empty($_POST['login'])&&!empty($_POST['pass'])){
extract($_POST);
$pass = sha1($pass);
mysql_connect("localhost","root","");
mysql_select_db("zone membres");
$sql = "SELECT id FROM users WHERE login='$login' AND pass='$pass'";
$reg = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($req)>0){
$_SESSION['Auth'] = array(
'login' => $login,
'pass' => $pass
);
}
else{
echo "Mauvais identifiant";
}
}

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">

<html xmlns="http://www.w3.org/1999/xhtml " xml:lang="fr" >

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<!..titre..>

<title>Login</title>

</head>
<body>
<form action="login.php" method="post">
Login : <input type="text" name="login"/><br/>
Mot de pass : <input type="password" name="pass"/><br/>
<input type="submit" value="Me connecter"/>

</form>

</body>

</html>

Natà Il y a 1 an Répondre

Salut, j'ai suivi le tuto à la lettre et bien réussi à l'intégrer sur mon site, site que j'avais commencé il y a un moment et sans grandes connaissance...

Depuis que j'ai découvert Grafikart, j'ai décidé de le re-coder, en suivant les préconisations "standard" (bizarrement beaucoup moins d'erreurs à l'épreuve du validator :p ).

Mais seulement cette fonction ne fonctionne plus et je ne comprend pas d'où est-ce que ça vient. Les seules différences entre l'ancien site et le nouveau se situent dans l'entête.

Note: Ces 2 fichiers sont encodés en UTF-8

Ancien:

<?php
session_start();
require("auth.php");
if(Auth::isLogged()){

}
else{
header('location:login.php');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">
<html xmlns="http://www.w3.org/1999/xhtml " xml:lang="fr" lang="fr">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="content-language" content="fr" />
<link href="style.css" title="Défaut" rel="stylesheet" type="text/css" media="screen" />

</head>

Nouveau:

<?php
session_start();
require("auth.php");
if(Auth::isLogged()){

}
else{
header('location:login.php');
}

?><!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml ">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="theme/style.css" title="Défaut" rel="stylesheet" type="text/css" media="screen" />
</head>

Apparemment ça vient du Charset/Encodage, en bidouillant ça fonctionne mais je ne comprend pas POURQUOI donc si vous auriez une explication je vous en serais grandement reconnaissant.

Aurox Il y a 1 an Répondre

Merciii
Ça faisait un petit moment que je cherchais une explication un peu plus compréhensible que celle de php.net sur la gestion des sessions
merci beaucoup à toi, super tuto !!!

Laure M Il y a 1 an Répondre

JE fais ton tutoriel en le passant en PDO. Or la requête mysql_num_rows n'existe pas en PDO. J'ai essayer plusieurs choses mais je n'ai toujours pas trouver de solution. Peut-tu m'aider ?

Exemple :
$sql = "SELECT id FROM admin";
try{
$req = $DB->query($sql);
$d = $req->fetchAll();
echo count($d);
if($d>0){
$_SESSION["Auth"] = array(
'login' => $login,
'mdp' => $mdp
);
echo ($_SESSION);
}
else{
echo 'Mauvais identifiant';
}
}
catch (PDOException $e){
echo 'La requète ne marche pas';
}

Shakuro Il y a 1 an Répondre

Hello,

Merci pour ce tuto, ce site est une véritable mine d'or, beau travaille en tout cas. Cela dit j'ai une petite question, ce tuto peut être modifié pour me permettre de faire un formulaire étalé sur plusieurs pages? voici un petit schéma:

Formulaire1 => Formulaire2 => Formulaire3 => Resumé => Envoi par la fonction mail()

Je suis un petit novice et je n'ai pas trouvé de tuto vidéo nous permettant de faire cela, celui-ci me semble être une bonne approche?

morgy Il y a 2 ans Répondre

Salut,
ça fait des heures que je suis bloqué au méme endroit:
login.php:
<?php
session_start();
if(isset($_POST) && !empty($POST['login']) && !empty($POST['pass'])){
extract($_POST);
$pass = sha1($pass)
mysql_connect("localhost","root","");
mysql_select_db('tuto');
$sql = " SELECT id FROM users WHERE login='$login' AND pass='$pass'";
$req = mysql_query($sql) or die(mysql_error());
echo mysql_num_rows($req);
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">
<html xmlns="http://www.w3.org/1999/xhtml " xml:lang="fr" >
<head>
<title>mon site</title>
</head>
<body>
<p>page publique</p>
<form method="post" action="login.php">
Identifiant : <input type="text" name="login"/>
<br />
Votre mot de passe : <input type="password" name="pass"/>
<p>
<input type="submit" value="Connexion" />
</p>
</body>
</html>

Quand je teste ça me dit :"Parse error: parse error in C:\wamp\www\tuto\login.php on line 6"

Help me plz!

morgy Il y a 2 ans - Répondre

ahhhh non c bon..... c'était un PUT.... de point virgule, j'ai honte... :p

monkeydluffy Il y a 2 ans Répondre

Merci Grakikart :-)

Je vais surement faire ça, très utile cette petite fonction ^^

Encore un gros bravo pour les tutos demain je passe au dernier venu ^^

monkeydluffy Il y a 2 ans Répondre

Bonjour Tout le monde, encore un grand bravo pour le tuto....

J'ai bien tout suivi et modifié quelques parties et je voulais savoir comment peut-on récupérer le mot de la base données et le renvoyer en clair par email.?

Car si je recherche un mot de passe dans la BDD, il me retourne la valeur sha1
39dfa55283318d31afe5a3ff4a0e3253e2045e43 donc comment repasser en clair pour l'envoyer au client ?

Merci d'avance bonne journée

Grafikart Il y a 2 ans - Répondre

Impossible, le script ne marche que dans un sens, impossible de décoder le mot de passe. Tu dois en générer un nouveau -> L'envoyer par mail et le sauvegarder encodé dans la base de donnée

polly Il y a 2 ans Répondre

ah on voit dans ce tuto que tu es un big bang theory viewer!

Micjag Il y a 2 ans Répondre

* oups oublier de faire ma demande ^^ donc en gros ci quelqu'un peut m'indiquer un bon tuto ou mm me dire comment faire

Micjag Il y a 2 ans Répondre

Ps: très bon tuto

Micjag Il y a 2 ans Répondre

*Petite question surement bête ^^ je viens de suivre le tuto et de faire cette réalisation, ensuite j'ai fait une recherche de tuto sur google qui explique comment injecter "Sécuriser avec les Sessions" dans mon template .

Ps: mai connaissance en php sons 0.5 ^^ je mi lance

richard Il y a 2 ans Répondre

Bonjour et merci vraiment super tuto!
j'aurais une tite question quelqu'un à une idée pour ajouter dans la page privé "Bonjour $login"?
Merci

gilles Il y a 2 ans Répondre

Bonsoir

apres avoir saisi le login et le mot de passe j aimerai recuperer le nom et le role de l utilisateur comment dois je proceder j ai essayer des tas de truc et je n est pas trouvé pouvez vous m aider

merci d avance

Gilles

musicalitymaker Il y a 2 ans Répondre

Salut tout le monde,
J'ai un problème avec mon navigateur. Il affiche des message d'erreur avec la fonction sesson_start(), session_destroy() et le header();

Message d'erreur de la fonction session_destroy() : Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in /xxx/xxx/xxx/xx/xxx/logout.php on line 3

[...Message raccourci pour plus de lisibilité...]

Grafikart Il y a 2 ans - Répondre

Ton erreur de session 'headers already started' indique que du contenu est affiché avant le premier appel à session_start(); vérifie que tu n'a aucun echo ni aucun espace en dehors de ton code PHP avant le session_start.

Titi Il y a 2 ans Répondre

Merci très bon tuto

orange23 Il y a 2 ans Répondre

Merci beaucoup pour ton aide, car même si l'erreur saute aux yeux, j'aurai longtemps cherché...

orange23 Il y a 2 ans Répondre

Bonjour à tous,
J'ai un petit problème, ma page privée m'affiche:
Parse error: parse error in C:\Program Files\wamp\www\session\auth.php on line 6
avec le sript suivant:
<?php

class Auth{

static function isLogged(){
if(isset($_SESSION['Auth']) $$ isset($_SESSION['Auth']['login']) $$ isset($_SESSION['Auth']['pass'])){
return true;
}
else{
return false;
}
}
}
?>
Si quelqu'un peu m'aider merci d'avance

Badbart Il y a 2 ans - Répondre

c'est pas $$ mais &&

naflo Il y a 2 ans Répondre

Merci pour ce tuto qui fonctionne très bien en local, par contre j'ai eu des problème avec des hébergement mutualisé (free, online.net) qui utilisent les cookies de session même en php5. Je n'y arrive donc pas.

Badbart Il y a 2 ans - Répondre

pour les sessions free suffit de créé un dossier sessions à la racine du ftp

jtraulle Il y a 2 ans Répondre

Super la musique en arrière plan, c'est quoi ?

stephbf Il y a 2 ans Répondre

salut super tuto et surtout grace a ce tuto je maitrise mieux les sessions. merci

Baptiste Il y a 2 ans Répondre

Salut!

j'ai un problème avec 1and1... Eb local ça marche nickel, mais la vieille version 4 de 1and1 me pose problème! Le Auth ne marche pas, il faut la version 5 minimum... Que faire?!
merci!!

++

Baptiste Il y a 2 ans - Répondre

Salut,
en fait j'ai trouvé, avec un htaccess on peut se mettre en php5

++

Corto54 Il y a 2 ans Répondre

Bonjour, je vient juste vous signaler que la video ne marche plus !

bibiphaue Il y a 2 ans Répondre

le seul souci dans ca , c'est que si une personne a les mêmes identifiants , elle peut se connecter , quelqu'un a t'il une idée pour vérifier si la personne est dejà connecté , rejeter celui qui veut prendre les mêmes identifiants.

J'avais pensé avec la fonction remote server address, c'est à dire voir si les identifiants sont identiques et avec une ip différente ?

Laurie Il y a 2 ans Répondre

Merci !

raiton Il y a 2 ans Répondre

edit: les ';' sont bon vous inquiété pas ^^

raiton Il y a 2 ans Répondre

Bonsoir,

Super tuto, si on cherche un peu à le completer il devient parfait .

Cependant j'ai un bloquage sur l'étape ou on mets une deuxiéme sécurité sql dans auth.php qui vérifie que les logins sont pas bidons, je suis sur que ma syntax est nickel, mais ca marche pas, en enlevant ce passage ca marche d'enfer :

static function isLogged(){

if(isset($_SESSION['auth']) && isset($_SESSION['auth']['login']) && isset($_SESSION['auth']['pass'])) {
extract($_SESSION['auth'])
mysql_connect("localhost", "root", "");
mysql_select_db("arsc");


$sql = " SELECT nid FROM utilisateurs WHERE slogin ='$login' AND spassword='$pass' ";
$req = mysql_query($sql) or die (mysql_error());


if(mysql_num_rows($req)>0){
return true;
}

else {
return false;
}
}

else {
return false;
}
}

fabien Il y a 2 ans Répondre

bonjour,

j'ai bien suivi le tuto, super merci à grafikart, mais j'ai un souci avec firefox : quand je me logue, il m'affiche bien la page privée mais elle est vide... toute blanche.
Voici le code :
[code]<?php
session_start();
require("auth.php");
if(Auth::isLogged()){
}
else{
header('Location:login.php');
}
?>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=UTF-8">
<TITLE>page privée</TITLE>
</HEAD>
<BODY>
page privée
<a href="logout.php">Se déconnecter</a>
</BODY>
</HTML>[/code]
si quelqu'un voit un truc, merci d'avance

superloulou88 Il y a 2 ans Répondre

Je viens de prendre compte prenium comment on prend la source ?

MErci

Badbart Il y a 2 ans - Répondre

Ya pas de source pour un tuto comme ca, c'est des explications, pas une création.

starbuck Il y a 2 ans Répondre

Oui je l'ai fait
C'est pour ça que je ne comprend pas le soucis

jerome Il y a 11 mois - Répondre

bonjour, j'ai exactement le même problème que toi ! tu l'as résolu ?

bizhon Il y a 2 ans Répondre

Tu dois avoir un soucis au niveau de ta base de donnée.
Tu as bien ajouté un utilisateur avant dans base de donnée??

starbuck Il y a 2 ans Répondre

Salut!
Voila, alors j'ai quasiment tout compris à ton tuto mais en fait là j'ai un petit probleme. J'en suis à cette étape:
<?php
session_start();
if(isset($_POST) && !empty($POST['login']) && !empty($_POST['password'])){
extract($_POST);
$password = sha1('$password');
mysql_connect("localhost", "root", "");
mysql_select_db("utilisateurs");
$sql = " SELECT id FROM users WHERE login='$login' AND password='$password'";
$req = mysql_query($sql) or die(mysql_error());
echo mysql_num_rows($req);
};
?>
Donc quand j'actualise la page dans le localhost, je met n'importe quoi comme identifiants mais aucun 0 ne s'affiche. Tu serai d'ou viens le probleme?
Merci d'avance pour ton aide

bizhon Il y a 2 ans Répondre

Dsl pour les 2 posts précédents puisque j'ai trouvé mon erreur ...

Voici l'erreur :

dans admin.php

j'ai ajouté un header quand Auth::isLogged = true ... alors que je suis déjà sur cette page :/ Boulet lol!Merci pour ton tuto en tout cas

doudouzeb Il y a 2 ans - Répondre

salut, chaque erreur m'aide à ne pas les faires...merci !!

bizhon Il y a 2 ans Répondre

Je rectifie , j'ai aussi un soucis sous IE:
- Chargement de la page tres longue , comme si il y avait une boucle dans mon programme ...

Je me permets d'inserer mon bout de code de admin.php

<?php
session_start();
require("auth.php");
if(Auth::isLogged())
{
header('Location:admin.php');
}
else
{
header('Location:login.php');
}

?>

Si quelqu'un arrive a voir mon erreur :$, ça serait vraiment sympas !
Merci

legraveleux emile Il y a 2 ans Répondre

Le php est un langage très simple

bizhon Il y a 2 ans Répondre

Oui oui bien sur !
Je vais essayer ce soir de le faire sans les pages dynamiques, exactement comme dans le tuto.
Si j'ai une solution, je n'hesiterais pas a la faire circuler via ce site

bizhon Il y a 2 ans Répondre

Bonjour,
je suis attentivement tes tutos et je dois qu'ils vraiment au top !! Un grand merci.

Cependant j'ai un petit soucis quand je veux me rediriger vers la page "privee".
Je passe par des pages dynamiques exemple : header('Location:index.php?p=admin');
la page admin etant la page privée.
Sous firefox, j'ai une erreur de type : La cause de ce problème peut être la désactivation ou le refus des cookies et sous IE la page bloque ...

Je voulais si quelqu'un utilise les sessions avec des pages dynamiques?

Merci d'avance.
Bonne journée


Arnaud Il y a 2 ans - Répondre

A tu mis ca en tout premier ? :

<?php

session_start();
require("le_nom_du_fichier_authentifiant.php");

?>

Hennek Il y a 2 ans Répondre

Oubliez mon commentaire ... j'ai voulu allez trop vite :/

Hennek Il y a 2 ans Répondre

Bonjour à tous, j'ai suivit le tuto, mais j'ai un problème que je ne comprends pas, j'obtiens ceci :

Unknown column 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3' in 'where clause'

Quelqu'un pourrait m'expliquer ?

louisdsm Il y a 2 ans Répondre

Bonjour j'ai juste une question ya t'il de php 5 dans Auth.php Merci

laurwin Il y a 2 ans Répondre

Salut à tous ^^

J'avais une question, Grafikart, tu parles de sécurité avec la fonction sha1() au cas où la personne aurait accès à notre base de donnée et qu'il verrait tous les mots de passe, mais finalement, si la personne accède à la base de donnée, il lui suffira juste de changer le mot de passe avec cette fonction sha1 pour qu'il puisse se connecter avec le login de son choix... non ?

PS: j'ai dû me déconnecter car je n'arrive pas à poster des commentaires via mon compte, y'a t il un soucis ? ^^

Grafikart Il y a 2 ans

Pour les mots de passe ça évite que si la personne utilise le mot de passe entré sur ton service sur d'autres services elles se fassent voler d'autres trucs. Tu peux imaginer sauvegarder des données plus sensibles (comme les codes de carte bleues par exemple)

PS : normalement tu devrais pouvoir poster des commentaires depuis ton compte, c'est corrigé.

laurwin Il y a 2 ans - Répondre

Oki, merci Grafikart, je comprends mieux

(Et merci aussi pour les commentaires^^)

stylgrafik Il y a 2 ans Répondre

Bonjour,

Quelqu'un serait m'expliquer pourquoi j'ai du remplacer
header('Location: http://www.styl-grafik.com/admin/connect.php '); par
echo '<script language="Javascript"> document.location.replace("connect.php"); </script>';

mathias Il y a 2 ans Répondre

Pour mon test quand je click sur connection la page m'affiche : Unknown column '39dfa55283318d31afe5a3ff4a0e3253e2045e43' in 'where clause'

Ysn Il y a 2 ans Répondre

Tu peux mettre ceci aussi " header('Pragma:nocache'); "

Yann Il y a 2 ans Répondre

Donc dans ce cas il suffit d'avoir des pages avec la balise meta no-cache ?

Ysn Il y a 2 ans Répondre

Salut Grafikart
Merci avant toute chose pour tes tutoriels tres bien fait !
bon voila, j'ai remarqué qu'il y avait un petit probleme au niveau de Auth.php c.a.d que quand on se déconnecte avec la page logout.php, il se trouve que les variable de session ne sont pas vraiment détruite parce que si dans le cas ou on retourne en arriere vers une page protéger avec le scripte Auth.php ceci grace au bouton retour du navigateur, alors on remarque qu'on peux accéder a toute les pages soidisant sécurisé !
Donc, si tu a une solution a ce probleme
Merci encore

Grafikart Il y a 2 ans

Le navigateur garde en cache les rendu des précédente page. Ce qu'il veut dire que même si l'utilisateur peux afficher la page il ne pourra y effectuer aucune action. Ceci ne représente pas une faille au niveau sécurité.

Ysn Il y a 2 ans - Répondre

Ok compris ! merci encore

Nibdok Il y a 2 ans Répondre

juste par curiosité (maintenant que j'ai bien progressé en php mysql depuis mes derniers posts ^^) est ce que juste dans la page login redéfinir les variable comme suit :
$login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
$mdp = sha1(mysql_real_escape_string(htmlspecialchars($_POST['mdp'])));
est-ce que cela suffit d'après toi comme sécurité en terme d'injection ?
n'étant pas encore pro je préfère demander ^^

Merci d'avance.

Grafikart Il y a 2 ans - Répondre

Normalement c'est bon.

Baptiste Il y a 3 ans Répondre

super ça marche nickel! merci à tous

Baptiste Il y a 3 ans Répondre

voilà: http://goguelyterrassement.free.fr/info.php
je vois pas trop en quoi ça m'avance! lol

Badbart Il y a 3 ans - Répondre

Ca avance que ton free.fr utilise php 4, hors il faut php 5 pour ton script. Donc tu dois forcer free.fr a utiliser php5. Pour ca, créé un fichier .htaccess a la racine du free.fr, avec dedans marquer "php 1" sans guillemet.

Badbart Il y a 3 ans Répondre

Si ça marche en local et pas sur free, tu peux toujours faire un phpinfo() voir la version php etc etc qu'utilise free.

Baptiste Il y a 3 ans Répondre

salut!
j'ai un problème en voulant aller sur la page protégée: il y a:
Parse error: syntax error, unexpected T_STATIC, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /mnt/162/sdd/e/a/goguelyterrassement/admin/auth.php on line 5

line 5 de mon auth.php c'est:
static function islogged(){


que ce passe t il? merci!

je suis sur free... en local ça marche.
merci

Jaieulememe Il y a 2 ans

Pour utiliser les sessions sur free il faut créé un dossier nommé "sessions" à la racine de ton site ...

folvool Il y a 1 an - Répondre

Bonjour,

J'ai la même erreur et je suis chez OVH. Avez-vous une idée?

Merci

belisaire Il y a 3 ans Répondre

<?php

require("../auth.php");
if(Auth::isLogged){} else{header("Location:login.php");}
?>

l'autre c'était pas le bon ^^

mais quelqu'un c'est ou il y a l'erreur ???

belisaire Il y a 3 ans Répondre

dsl mais ca je l'ai vu et ça change rien

Badbart Il y a 3 ans Répondre

header("Location:'login.php'");
header("Location:login.php");
Enfin suffisez de lire le message d'erreur en gros, et au pire le 'googleifier' pour avoir de l'aide.

belisaire Il y a 3 ans Répondre

voilà j'ai deux problè un avec le bou de code dans ma page privé
ça m'affiche ça :

Parse error: parse error, expecting `','' or `')'' in C:\wamp\www\auth.php on line 6

mon code est :

<?php
session_start();
require("../auth.php");
if(Auth::isLogged()){
}else{
header("Location:'login.php'");
}
?>

grafik ou quekqu'un d'autre voit un problème ????

Akizuki Il y a 3 ans Répondre

Salut,
déjà, merci pour le tuto, j'en cherchais un depuis un moment, et t'expliques super bien
J'ai juste un petit problème à un moment, au niveau des classes, et de "isLogged".(Je débute un peu en php, et surtout en POO)
Je t'explique : quand je veux afficher la "pageprivee.php", après le

require("auth.php");
if(Auth::isLogged){} else{header('Location:login.php');

J4ai ça, dans mon navigateur : "Fatal error: Undefined class constant 'isLogged' in C:\wamp\www\site\pageprivee.php on line 4"

Une idée ? ^^'

JLou Il y a 2 ans - Répondre

Tu as oublié les parenthèses après isLogged, alors sa cherche la constante de classe isLogged au lieu de la fonction isLogged()

Skater54 Il y a 3 ans Répondre

C'est quel logiciel mac que vous utilisé pour programmer ? Comment il s'appelle ?

amoric69 Il y a 2 ans - Répondre

coda

Baptiste Il y a 3 ans Répondre

salut!
très bon tuto! ça marche très bien!
j'ai une question: j'ai un dossier administration sur mon site avec plusieurs pages à sécuriser. Je peux sécuriser le dossier d'un coup? où il faut mettre une vérification à chaque page?
merci!

@+

JOnathan Il y a 3 ans Répondre

C'est bon j'ai trouver la solution .

Parcontre j'ai un bug qui n'apparais que maintenant : Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/iphoneapp/www/dvdxpress/administration/modif.php:1) in /home/iphoneapp/www/dvdxpress/administration/modif.php on line 2

Il n'y a rien au dessus de session_start et hier cela marquer parfaitement . . .


Le code : <?php
session_start();
require("auth.php");
if(Auth::isLogged()){
}
else{
header('Location:index.php');
}
?>

Jonathan Il y a 3 ans Répondre

bonjour je voudrais savoir si vous pouviez m'aider sur la page proteger sa marque

Parse error: syntax error, unexpected '{' in /home/iphoneapp/www/dvdxpress/administration/auth.php on line 6

je voudrias avoir comment regler ce probleme ?

voici le code :
<?php

session_start();
require("auth.php");
if(Auth::isLogged()){
}
else{
header('Location:index.php');
}
?>

MogWaï Il y a 3 ans Répondre

PS : Pour connaitre la version de PHP installé sur le serveur il vous faut créer un fichier .php contenant le code "phpinfo();" et de l'appeler depuis votre navigateur.

MogWaï Il y a 3 ans Répondre

Attention !!!

Pour les utilisateur de free :
Par défaut PHP est en version 4.43 pour la passer en version 5 il vous suffit de créer un .htaccess à la racine du site contenant le code "php 1".

En effet "static function" dans le fichier "auth.php" renvoie une erreur de syntaxe car Static n'est digéré que à partir de PHP 5.0 ...

Free quand tu nous tiens !!!

A plus +

MogWaï Il y a 3 ans Répondre

Attention !!!

Pour tous les utilisateur de free :
Il faut créer un dossier "sessions" à la racine du site pour éviter les erreurs de "session_start()"

Merci Raton pour tes tutos d'une qualité rare !

turlututu Il y a 3 ans Répondre

Et l'aut ..$encrypt = md5(sha1("sapher")); haha

Merci

sapher Il y a 3 ans Répondre

Comme le MD5, le SHA1 à des bibliothèques sur le net. C'est pas vraiment sécurisé, mais on fait avec ce qu'on a. La plupart du temps (^^) quand un pirate débarque sur votre serveur mysql c'est qu'il y a une certaine prestance pour contourner ce genre de petit problème.

Pour entrer dans la paranoia, $encrypt = md5(sha1("sapher"));

arnaud Il y a 3 ans Répondre

Bonjour,
Grafikart pourais tu m'indiquer comment renvoyer le message d'erreur a un endroit plus précis a savoir :

else{
echo "Mauvais identifiants";
}
a coter ou en haut du formulaire par example... Merci

shadow man Il y a 3 ans Répondre

Quel est l'intérêt de vérifier le contenu de la session ?

Par défaut la session est sauvegardée en tant que fichier sur un zone inaccessible par la serveur Apache (donc pas possible depuis le protocole http de récupérer sont contenu).
Une requête SQL est une perte de temps non négligeable donc inutile de faire ce genre de chose.

Apaulo13 Il y a 3 ans Répondre

Merci, Merci Beaucoup.
Super tutoriel et un bon moment de passé à me laisser guider par un bon professeur.
Que du bonheur car maintenant j'ai un bon point de départ pour développer mes accès privé.

coucou Il y a 3 ans Répondre

merci c tres bien

Lordangel Il y a 3 ans Répondre

Vraiment un super tuto !! Merci le Raton laveur. J'attends vos autres tutoriels avec impatience.

musician-rider Il y a 3 ans Répondre

Tout d'abord merci pour ce tuto, vraiment très pratique ^^
Je voudrais juste savoir s'il existe une fonction qui permet de décrypter les mots de passe cryptés par sha1 ?

Fanzie Il y a 3 ans Répondre

merci pour ce tuto. Juste ce dont j'ai besoin.

Petite question : Quel éditeur de script utilises-tu ? Il est très intéressant !

Ravi Il y a 3 ans Répondre

merci beaucoup encore une fois ^^

Artkabis Il y a 3 ans Répondre

Encore un très bon tuto, c'est exactement ce que je recherchais. J'avoue que j'apprécie aussi ta méthode avec les classes static.

En tout cas merci pour ce partage, le tuto est clair et la méthode efficace.

Bonne continuation pour la suite de t'es projets...

Deezer Il y a 3 ans Répondre

Moi lorsque j'ai mis :
39dfa55283318d31afe5a3ff4a0e3253e2045e43 après je clique sur afficher ca me mets
id : 1
login : 0
pass : 39
Pourquoi ca n'affiche pas mes vrais identifiants :
id:1
login:eski-mot
pass : 0000


??

sami Il y a 3 ans Répondre

merciiiiiii grafikart c'est trop top ces tutorials Samir du Maroc developpeur php/mysql debutant.

Huviel Il y a 3 ans Répondre

J'ai uploadé mes fichiers et là c'est la cata. En local tout marche bien, mais sur mon ftp j'ai ce message:

"page public
Warning: Cannot modify header information - headers already sent by (output started at /home/aemaethe/public_html/index.php:9) in /home/aemaethe/public_html/index.php on line 11"

Je vois pas comment corriger ça. Quelqu'un aurait une idée.

lordangel Il y a 3 ans Répondre

Super tuto, je suis quelque tutos php sur ce site depuis un moment et j'y apprend vraiment beaucoup. Merci Grafikart.

Huviel Il y a 3 ans Répondre

Pardon pour le doublon.

J'ai résolu mon problème, j'avais mal orthographié une variable. Très bon tuto en tout cas, agréable à écouter :-)

D'ailleurs je vais attaquer celui sur l'upload d'images.

Huviel Il y a 3 ans Répondre

Bonjour,

J'ai un petit soucis avec le tuto,une fois loggué je ne suis pas redirigé. Même si je tente d'accéder à une page via mon navigateur il me redemande mon login.

Pourtant j'ai bien mis le header pour la redirection.

Vous avez une idée sur le pourquoi du problème ?

iankoOol Il y a 3 ans Répondre

p'tit café pour la peine

iankoOol Il y a 3 ans Répondre

Hello,

Haaa la réponse à ma question précédente...

Aussi, qu'elle est la bonne méthode pour protéger l'acces au données Mysql ?

1 fichier php contenant les infos de connection mysql dans un sous dossier protéger par un htaccess, et appelé via (include ?) est-il suffisant ?

Sorry je suis graphiste freelance, xhtml/css, utilisateur du CMS Typolight, débutant php pour voir plus loin...
D'ailleurs les tutos Graphikart sont top de top pour capter les bases du langage php, un grand grand merci...

Grafikart Il y a 3 ans Répondre

@s-wf : Absolument aucune sécurité. Ca me permet d'être sur que personne utilise le script tel quel, et que les gens cherchent un peu

s-wf Il y a 3 ans Répondre

je me trompe ou y a aucune securite question injection sql et autre Oo

Thormes Il y a 3 ans Répondre

Bonsoir,
Je tiens tout d'abord a te féliciter pour l'ensemble de ton travail et surtout des tuto proposés de si bonne qualité.

J'ai tout suivi scrupuleusement, j'ai visionné et re re re visionné de nombreuses fois mais rien n'y fait,... j'explique mon problème avant de perdre les derniers cheveux qu'il me reste :D

mes identifiants sont bons mais pas moyen de me connecter à la page privee... pourtant ma location:prive si les identifiants sont bons sont exacts,...

Bref si tu as une idée du problème, je serai ravi

s-wf Il y a 3 ans Répondre

J'ai beau chercher je trouve pas comment telecharger

Grafikart Il y a 3 ans Répondre

@Deezer : Pas compris

Deezer Il y a 3 ans Répondre

Je vote pour les tutos sous Windows svp Raton;..

Salazar Il y a 3 ans Répondre

Trés bon tutoriel

Merci

Wan972 Il y a 3 ans Répondre

Encore un tutoriel qui me tape l'oeil.

Merci Graphikart

leknoppix Il y a 3 ans Répondre

Que dire à part de dire Merci.

cerise Il y a 3 ans Répondre

oh Grafikart tout tout pleins de merci pour toi
cerise

legendary Il y a 3 ans Répondre

super ! merci beaucoup

iankoOol Il y a 3 ans Répondre

bravo pour tout les supers tuto !!!

Petite question, le fait de mettre les indentifiants mysql dans la page n'est-il pas une brèche dans la sécurisation ?
Une base mysql d'un site peut contenir le site en lui même et ainsi être accessible et modifiable ... ?

fedora Il y a 3 ans Répondre

@ Grafikart: sa marche Merci j'ai vue ce tuto. vraiment tu nous aide bcp Grafikart
Merci mon Frère.

Nono Il y a 3 ans Répondre

Comme tous les autres, je te remercie pr ton tuto très instructif !
Par contre je suis comme Charlouf, je me demande quel est l'avantage d'utiliser des fonctions en POO ?
Merci encore !

Grafikart Il y a 3 ans Répondre

@Fedora : Tu peux pas voir les vidéo depuis vimeo ? Et dailymotion ça marche ?

@KriS Concept : Tu peux effectivement utiliser les cookies moyennant quelques modifications, l'idée c'est de vérifier qu'il y a une session OU des cookies, par contre je te conseille de vérifier la validiter de tes cookies quand tu les récupère, histoire que quelqu'un ne puisse pas changer l'id de son cookie par exemple. (vérifier que id + login et valide)

KriS Concept Il y a 3 ans Répondre

Hello, très bon tutoriel (comme d'hab...), est-ce qu'on peux coupler ce système à des cookies ou autre. Je cherche un système pour conserver les identifiants si l'utilisateur ferme et ré-ouvre son navigateur.

Merci par avance
Encore bravo Grafikart ;-)

fedora Il y a 3 ans Répondre

@ Grafikart : comment je puisse voir ce video SVP ?

Babou Il y a 3 ans Répondre

Super tuto, rien à dire J'avais énormément besoin de ce tuto puisque je me suis fais hacker par l'administration qui n'était pas protéger ^^'
Bref, j'avais aussi besoin de plusieurs type de rang, mais comme tu l'a dit, je vais un peu cherche
Bye, merci encore.

Charlouf Il y a 3 ans Répondre

Salut.Merci pour ce tuto encore une fois très bien expliqué et bien développé au niveau de la sécurité.Cependant j'ai une petite question: je ne suis pas très à l'aise avec la POO(je ne fais que du procédural) et je ne comprends pas l'intérêt de mettre les fonctions dans une class.On pourrait aussi mettre les fonctions les unes à la suite des autres dans le fichier php?Qu'est ce que la class apporte ici?Merci.

Grafikart Il y a 3 ans Répondre

@Jasse29 : Faut que je change de formule d'hébergement pour pouvoir ajouter de nouvelle vidéo. En attendant, tu peux les télécharger depuis mon compte vimeo (en bas a droite, dans la sidebar sur la page d'une vidéo)

Skob Il y a 3 ans Répondre

Hey !
Je connaissait les sessions, mais ton tutoriel m'a appris a mettre
$SESSION['Auth'] = array( ...
qui permet de mieux organiser de 1 le code et de 2 la lecture des données (je faisait plusieurs sessions pour les infos du style $_SESSSION['pseudo'],$_SESSSION['pass'], etc...) pour la fonction aussi qui est bien =)
Sur ce je vous laisse, à très bientôt et contenue ses magnifiques tutoriels
Skob

Jasse29 Il y a 3 ans Répondre

Re-,

On ne peut pas télécharger cette vidéo ?

PS : Désolé pour le double post. Quand on n'a pas de tête, on a des doigts

Jasse29 Il y a 3 ans Répondre

Bonjour,

Riches d'enseignements, et certainement très utile... Il va falloir que je pratique

dodo021 Il y a 3 ans Répondre

Merci pour se tuto très intéressant comme d'habitude.

Have Fun DoDo021

Laisser un commentaire

Si vous avez une question il est conseillé d'utiliser le forum si vous voulez une réponse sûre.