Bienvenue visiteur (Inscription |  Connexion)
Qui est en ligne ?
Il y a : 11 utilisateurs en ligne, consultez le détail
Auteur Message
lecharcutierdelinux
#0 Message posté le : 09-02-2007 à 11:01:42


Scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 27-01-2003
Nombre de messages : 530
Bonjour à tous,

Je suis en train de faire un petit site web en php/mysql.
Ma page d'accueil est simplement l'authentification du client:

login
password

Une fois que l'authentification est validé, ça fait appel à une page qui vérifie le mot de passe "verif.php". Si c'est OK j'ai un session_start. J'aimerais qu'en plus de ce session start je sois redirigé vers la page "welcome.php", qui est l'accueil du site.

Pour le moment, ma page verif c'est en gros ça (pris sur le site de phpdebutant):


<?php

// On démarre la session

session_start();

$loginOK = false;  // cf Astuce



// On n'effectue les traitement qu'à la condition que 

// les informations aient été effectivement postées

if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) ) {



  extract($_POST);  // je vous renvoie à la doc de cette fonction



  // On va chercher le mot de passe afférent à ce login

  $sql = "SELECT pseudo, age, sexe, ville, mdp FROM user WHERE login = '".addslashes($login)."'";

  $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);

  

  // On vérifie que l'utilisateur existe bien

  if (mysql_num_rows($req) > 0) {

     $data = mysql_fetch_assoc($req);

    

    // On vérifie que son mot de passe est correct

    if ($password == $data['mdp']) {

      $loginOK = true;

    }

  }

}



// Si le login a été validé on met les données en sessions

if ($loginOK) {

  $_SESSION['pseudo'] = $data['pseudo'];

  $_SESSION['age'] = $data['age'];

     $_SESSION['sexe'] = $data['sexe'];

  $_SESSION['ville'] = $data['ville'];

}

else {

  echo 'Une erreur est survenue, veuillez réessayer !'; 

}

?>




Y'a des trucs que je pige pas, pkoi la premiere ligne de cette page de verif est session_start. En effet ils disent de taper session_start avant même d'avoir vérifier le login et le password? Je pensais qu'une fois seulement l'authentification bonne on démarrait la session pour l'utilisateur (un peu comme une ouverture de session linux ou windows???).

Autre chose, je sais pas quelle ligne ajouter pour que je sois redirigé vers l'accueil de mon site si c'est OK: la page "welcome.php".



Dernière chose, comment faire pour rejeter qqun qui utiliserait un raccourçi. genre qqun qui tape directement "http://monsite/welcome.php". Il faudrait que le site soit accessible uniquement pour les gens qui ont ouvert la session, mais comment detecter ceux qui ont "sauter" l'authentification?

J'espère avoir été clair même si j'en doute un peu..D'avance merci!



-------------------------------------
Le BOF de Linux: LFS & Slack (ça fait + pro).Les RPM c'est pour les tapettes!Sexe : 38 centimetres, "Linux rulezzzz",Recompilations:167,Recompilations utiles:0.
jblecanard
#1 Message posté le : 09-02-2007 à 20:15:29


Jedi


Forum : Modérateur
Association : Membre fondateur
Arrivé(e) le : 08-01-2005
Nombre de messages : 4030
Alors dans l'ordre :

1- Ne met le session_start() qui si le mot de passe a été confirmé. Sur php débutant, ils disent de le mettre au début car il faut qu'il soit avant l'envoi des en-têtes. Le session_start() doit être utilisé sur toutes les pages. Utilise un cookie avant de le lancer. C'est àdire, vérifie l'existence d'un cookie défini lors d'une connexion avec succès. Si le cookie n'est pas défini, ne lance pas sessions_start(). Celà évitera aux non enregistrés de devoir accepter un cookie. En effet, session_start() utilise lui même un cookie... à moins de ne configurer php.ini pour qu'il utilise un sessionid. Il y a plein de manières de gérer les sessions. Explore un le php.ini pour voir...

2- Pour faire une redirection, à la fin de ton script, et si RIEN n'a été écris sur la page avec echo par exemple, utilise :

header("Location:http://www.tonsite.org/");
exit;

Tu peux aussi mettre un chemin relatif dans Location comme

header("Location:../index.php");

3- Enfin, pour que le site ne soit accessible qu'aux identifiés, fait le test de cookie, puis vérifie que les champs de $_SESSION sont remplis et enfin autorise l'affichage de la page. Pour empêcher cette affichagen, utilise la fonction die ou exit, ou redirige sur la page d'accueil.

--Message édité par jblecanard le 09-02-2007 à 20:19:50--


-------------------------------------
C'est une situation bien inconfortable que d'être assez sensible à la bêtise pour en souffrir et trop intelligent pour s'en indigner. - Gustave Thibon -
lecharcutierdelinux
#2 Message posté le : 09-02-2007 à 22:57:01


Scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 27-01-2003
Nombre de messages : 530
Super, je viens de faire ça, mes sessions fonctionnent et si on utilise un copier/coller de l'url on est bien rejeté.

Vraiment merci!

-------------------------------------
Le BOF de Linux: LFS & Slack (ça fait + pro).Les RPM c'est pour les tapettes!Sexe : 38 centimetres, "Linux rulezzzz",Recompilations:167,Recompilations utiles:0.
jblecanard
#3 Message posté le : 10-02-2007 à 13:46:03


Jedi


Forum : Modérateur
Association : Membre fondateur
Arrivé(e) le : 08-01-2005
Nombre de messages : 4030
Résolu ? Dossier vert

-------------------------------------
C'est une situation bien inconfortable que d'être assez sensible à la bêtise pour en souffrir et trop intelligent pour s'en indigner. - Gustave Thibon -