script login-mot de passe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : script login-mot de passe

Re: script login-mot de passe

par noobinside » 09 avr. 2010, 17:05

4. On tue la session => $_SESSION = array(); session_destroy();
Je remplacerai même le $_SESSION = array(); par un session_unset(), qui est fait pour ça, ce qui donne :
session_unset();
session_destroy();
Noobinside, Pour gérer une fermeture de session, rien de plus simple :
<a href="<?php echo $_SERVER["PHP_SELF"]; ?>?session_destroy=true">Déconnexion</a>
Puis, en haut de chaque page du site (conseil : le mieux est de le mettre dans un fichier à part, que tu include() en haut de chaque page, et qui te permet de faire des traitements récurrents à chaque page, comme la gestion de la deconnexion, et d'autres choses.) :
if(isset($_GET["session_destroy"]) && $_GET["session_destroy"] == "true") {
    session_unset();
    sesion_destroy();
    header("Location: login.php");
    exit();
}
J'ai essayé ton code et ça marche très bien, la page n'est plus accessible une fois qu'on a cliqué sur déconnexion. Je connaissais pas $_SERVER["PHP_SELF"], très pratique :!: (ps: une ptite faute à "sesion_destroy", il manque un s, je le signale au cas où quelqu'un utiliserait ton script en faisant copier collé ;) )

Re: script login-mot de passe

par noobinside » 09 avr. 2010, 14:38

Merci AB pour le lien vers le tutoriel, par contre je suis assez largué quand je le lis, pas mal de fonctions que je ne connais pas, il va falloir que je l'appréhende doucement le temps de tout ingérer :idea:
Prends ton temps mais à part deux lignes qui sont pour travailler en utf-8 (que tu peux supprimer si tu travaille en ISO...) et la fonction trim que j'emploie pour supprimer les espaces vides en début et en fin de chaine, tout le reste est le strict minimum à assimiler pour avoir une structure de code fonctionnel et portable (ie qui peut fonctionner sur pratiquement tous les serveurs).
Donc si tu arrives à faire plus simple c'est pas forcément bon signe :wink: ... excepté bien sûr si tu inscris tes login et mots de passe en dur dans la page auquel cas la création de table et la connexion à la bdd est inutile (mais la bdd est la façon habituelle de faire, la plus sûre et celle qui offre le plus d'évolutivité)

En complément, la fonction pour supprimer la session est une bonne idée.
Oui j'ai l'intention d'apprendre, c'est juste que je suis pas un rapide (disons que je comprends vite mais qu'il faut m'expliquer longtemps :D ) du coup j'ai besoin de comprendre exactement ce qui se passe à chaque ligne de code et ça peut me prendre quelques heures pour être sûr de maîtriser les concepts, mais j'y viens :idea:

Re: script login-mot de passe

par AB » 09 avr. 2010, 02:45

Merci AB pour le lien vers le tutoriel, par contre je suis assez largué quand je le lis, pas mal de fonctions que je ne connais pas, il va falloir que je l'appréhende doucement le temps de tout ingérer :idea:
Prends ton temps mais à part deux lignes qui sont pour travailler en utf-8 (que tu peux supprimer si tu travaille en ISO...) et la fonction trim que j'emploie pour supprimer les espaces vides en début et en fin de chaine, tout le reste est le strict minimum à assimiler pour avoir une structure de code fonctionnel et portable (ie qui peut fonctionner sur pratiquement tous les serveurs).
Donc si tu arrives à faire plus simple c'est pas forcément bon signe :wink: ... excepté bien sûr si tu inscris tes login et mots de passe en dur dans la page auquel cas la création de table et la connexion à la bdd est inutile (mais la bdd est la façon habituelle de faire, la plus sûre et celle qui offre le plus d'évolutivité)

En complément, la fonction pour supprimer la session est une bonne idée.

Re: script login-mot de passe

par noobinside » 08 avr. 2010, 19:36

merci bien je vais essayer ça ce soir, ça tombe bien j'ai appris les include hier :D Bonne soirée à vous ;)

Re: script login-mot de passe

par VaN » 08 avr. 2010, 19:32

4. On tue la session => $_SESSION = array(); session_destroy();
Je remplacerai même le $_SESSION = array(); par un session_unset(), qui est fait pour ça, ce qui donne :
session_unset();
session_destroy();
Noobinside, Pour gérer une fermeture de session, rien de plus simple :
<a href="<?php echo $_SERVER["PHP_SELF"]; ?>?session_destroy=true">Déconnexion</a>
Puis, en haut de chaque page du site (conseil : le mieux est de le mettre dans un fichier à part, que tu include() en haut de chaque page, et qui te permet de faire des traitements récurrents à chaque page, comme la gestion de la deconnexion, et d'autres choses.) :
if(isset($_GET["session_destroy"]) && $_GET["session_destroy"] == "true") {
    session_unset();
    sesion_destroy();
    header("Location: login.php");
    exit();
}

Re: script login-mot de passe

par visualight » 08 avr. 2010, 18:32

edit: Bon en fait il semblerait que PHP tue automatiquement la session après un certain temps d'inactivité :priere:

Mieux vaut contrôler tes sessions du début jusqu'à la fin...

1. On initialise les sessions => sessions_start();
2. On crée les sessions => $_SESSION['nomdelasession'] = 'valeur de la session';
3. On teste la ou les sessions => if ($_SESSION['nomdelasession'] == 'valeur de la session') { ...
4. On tue la session => $_SESSION = array(); session_destroy();

Le fait de laisser "mourrir" tes sessions naturellement (par le serveur) peut être dangereux : question de sécurité.

Tu peux également intégrer un contrôle de la durée d'expiration des session (timeout session côté serveur) :
<?php
ini_set('session.gc_maxlifetime', 3600); // Valeur en secondes
session_start();
...
?>


A+

Re: script login-mot de passe

par noobinside » 08 avr. 2010, 17:56

Merci AB pour le lien vers le tutoriel, par contre je suis assez largué quand je le lis, pas mal de fonctions que je ne connais pas, il va falloir que je l'appréhende doucement le temps de tout ingérer :idea:

J'ai utilisé ta méthode Van et ça marche très bien, il me reste à trouver comment faire un bouton de déconnexion (j'ai l'impression que la connexion reste active sinon, je me trompe?), je fais une petite recherche sur le net ça doit pas être bien compliqué ;)

edit: Bon en fait il semblerait que PHP tue automatiquement la session après un certain temps d'inactivité :priere:

Re: script login-mot de passe

par AB » 08 avr. 2010, 16:06

Il y a un tuto complet sur le sujet à cette adresse.

Re: script login-mot de passe

par VaN » 08 avr. 2010, 13:27

Merci beaucoup pour vos réponses :D

C'est vrai pour le coup de l'url, j'y avais pas pensé, ça mérite d'apprendre à faire des sessions. :oops:

Je vais manger et lire après tes explications VaN, je reviendrais ptet si j'ai une question :mrgreen:
Une fois que tu auras assimilé le système de sessions, et que tu as réussi à en faire une fonctionne, tu es prêt à t'attaquer à un vrai espace membre sécurisé, avec une base de données utilisateurs. Bonne chance : )

Re: script login-mot de passe

par noobinside » 08 avr. 2010, 13:01

Merci beaucoup pour vos réponses :D

C'est vrai pour le coup de l'url, j'y avais pas pensé, ça mérite d'apprendre à faire des sessions. :oops:

Je vais manger et lire après tes explications VaN, je reviendrais ptet si j'ai une question :mrgreen:

Re: script login-mot de passe

par VaN » 08 avr. 2010, 12:59

Disons que tu as la base, mais ton script n'est pas vraiment au point.

Déjà, il ne permet pas de gérer plusieurs comptes, via une base de données. Si c'est pour accéder à une page que tu dois être le seul à pouvoir voir, ça va. Mais si c'est pour un espace membre, ça ne va plus.

De plus, l'accès à ta page maj.php n'est au final pas du tout sécurisé. Que se passe t-il su un utilisateur tente d'afficher http://www.tonsite.com/maj.php ? Et bien aucun contrôle n'est fait. Il affiche la page correctement.

Dans ta page maj.php, il faut que tu vérifie qu'une session à bien été créée sur ta page de sécurité. Et sur ta page de sécurité, une fois que le test de login/mot de passe est correct, avant de rediriger vers maj.php, il faut que tu créés cette session, ainsi :
session_start();
$_SESSION["authed"] = true;
Ensuite, sur ta page maj.php, tu vérifie qu'une session est ouverte :
session_start(); // à mettre tout en haut de ta page maj.php
if(isset($_SESSION["authed"]) && $_SESSION["authed"] === true) {
// C'est bon
}
else {
// Aucune session n'est ouverte, ca signifie que l'utilisateur à afficher la page maj.php directement via son navigateur, on le redirige vers la page d'identification
}

Re: script login-mot de passe

par Nours312 » 08 avr. 2010, 12:55

par les "aspirateurs de site" ... si il ne la connaissent pas ... non ... à moins qu'il la devine ;) ...

sinon, ça marche !? ... mais qu'en est il si l'internaute vas directement sur la page maj.php en tapant directement dans l'url !??

pour sécuriser une page, passes par des session et/ou un htacess ;)
http://fr.php.net/manual/fr/book.session.php
http://www.securiteinfo.com/conseils/htaccess.shtml

@++

script login-mot de passe

par noobinside » 08 avr. 2010, 12:30

Bonjour :o


Je cherche à rendre une page internet accessible seulement après avoir entré un identifiant et un mot de passe.


Je tenais à faire le script moi même alors je n'ai pas regardé de scripts tous faits, du coup comme je débute j'imagine que mon script est perfectible même s'il fonctionne bien, le voici:

(pour l'exemple j'ai choisi comme identifiant "admin" et comme mot de passe "voiture", qui correspondent respectivement aux champs "identifiant" et "pass" du formulaire, si l'identifiant et le pass sont bons, ça redirige vers "maj.php" )

Code : Tout sélectionner

<?php if(!$_POST["identifiant"] && !$_POST["pass"]){ echo "Veuillez remplir les champs s'il vous plait."; } elseif(!$_POST["identifiant"]){ echo "Veuillez entrer votre identifiant s'il vous plaît"; } elseif(!$_POST["pass"]){ echo "Veuillez entrer votre mot de passe s'il vous plaît"; } elseif($_POST["identifiant"]!="admin" || $_POST["pass"]!="voiture" ){ echo "Vous avez entré un mauvais identifiant et/ou un mauvais mot de passe."; } else{ header("location: maj.php" ); } ?>
Est-ce que ça vous semble protéger la page internet?


Autre question: A partir du moment ou une page est nommée en .php, et que le site internet ne contient aucun lien dirigeant vers cette page, excepté via un header dans du code php sous certaines conditions, la page est-elle téléchargeable par les aspirateurs de site?

Merci :!: