| Qui est en ligne ? |
| Il y a : 38 utilisateurs en ligne, consultez le détail |
Forum » Serveur, Réseaux et Programmation » les sessions php + Pseudoframes |
Forum modéré par : jblecanard |
| Même auteur |
|
Score ( voter ) : |
|
| Page : [1] |
| Auteur | Message |
|---|---|
|
|
#0 Message posté le : 09-02-2007 à 11:01:42 |
Scarabée Forum : Inscrit Association : Arrivé(e) le : 27-01-2003 Nombre de messages : 527 |
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. |
|
|
#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 - |
|
|
#2 Message posté le : 09-02-2007 à 22:57:01 |
Scarabée Forum : Inscrit Association : Arrivé(e) le : 27-01-2003 Nombre de messages : 527 |
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. |
|
|
#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 - |
| Page : [1] |
Forum » Serveur, Réseaux et Programmation » les sessions php + Pseudoframes |
Forum modéré par : jblecanard |
| Même auteur |
|
Score ( voter ) : |
|
- Petit scarabée : 0 pastille, moins de 100 messages
- Scarabée : 0 pastille, plus de 100 messages
- Hobbit : 1 pastille, plus de 1000 messages
- Naboo : 2 pastilles, plus de 2000 messages
- Elfe : 3 pastilles, plus de 3000 messages
- Jedi : 4 pastilles, plus de 4000 messages
- Maître Jedi : 5 pastilles, plus de 5000 messages