Maintenir Session
TRUNCKS
Messages postés
1019
Date d'inscription
Statut
Membre
Dernière intervention
-
le père -
le père -
Bonjour à vous,
J'ai une page qui permet de se logger au moyen d'un mot de passe et d'un identifiant.
Lorsque l'utilisateur se logge, il se crée un identifiant aléatoire et on est rediriger vers la page.
Seulement, à partir de cette page, l'identifiant aléatoire est bien utilisé, mais si je change de page, il me redemande le mot de passe et l'id aléatoire est perdue.
( En gros, cela ne marche que sur la première page )
Ma question est: comment maintenir la session de l'utilisateur sur plusieurs pages.
Voici ce que je met au début de la première page:
J'ai une page qui permet de se logger au moyen d'un mot de passe et d'un identifiant.
Lorsque l'utilisateur se logge, il se crée un identifiant aléatoire et on est rediriger vers la page.
Seulement, à partir de cette page, l'identifiant aléatoire est bien utilisé, mais si je change de page, il me redemande le mot de passe et l'id aléatoire est perdue.
( En gros, cela ne marche que sur la première page )
Ma question est: comment maintenir la session de l'utilisateur sur plusieurs pages.
Voici ce que je met au début de la première page:
<?php require("conf.php"); // CONNEXION MYSQL $db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd); if(!$db_link) {echo htmlspecialchars("Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php"); exit;} // SELECTION DE L'ENREGISTREMENT CONTENANT L'ID EN COURS $requete=mysql_db_query($sql_bdd,"select * from membre where id=\"$id\"",$db_link) or die(mysql_error()); // SI L'ID N'EXISTE PAS if(mysql_num_rows($requete)==0) { // REDIRECTION PAGE ERREUR header("Location:$url_erreur"); exit; } // LIGNE FACULTATIVE : RECUPERATION DU PSEUDO $pseudo_membre=mysql_result($requete,0,"pseudo"); ?>
A voir également:
- Maintenir Session
- Www.yahoomail.com ouverture de session - Forum Yahoo mail
- Teamviewer code de session expiré ✓ - Forum logiciel systeme
- Session invalide ou obsolète ✓ - Forum finances
- Veuillez ouvrir une session avec les privilèges du gestionnaire ✓ - Forum Windows
- TeamViewer, quel risque de donner son le code - Forum Logiciels
7 réponses
Bonjour
Pour maintenir une session, il suffit de faire appel à session_start() au début de chaque script.
Si cette ligne n'est pas conf.php, il faut que tu l'ajoutes (avant le require("conf.php"); ou dans le conf.php)
D'autre part, d'où vient ta variable $id ? Si c'est d'une session, tu aurais dû l'initialiser quelque part avec $id=$_SESSION['id'], est-ce ben le cas ?
Pour maintenir une session, il suffit de faire appel à session_start() au début de chaque script.
Si cette ligne n'est pas conf.php, il faut que tu l'ajoutes (avant le require("conf.php"); ou dans le conf.php)
D'autre part, d'où vient ta variable $id ? Si c'est d'une session, tu aurais dû l'initialiser quelque part avec $id=$_SESSION['id'], est-ce ben le cas ?
Merci a toi,
En fait l'id n'est pas le ID auto incrémenté de la bdd mais un variable qui 'accueille l'identifiant aléatoire pour la connexion.
En fait l'id n'est pas le ID auto incrémenté de la bdd mais un variable qui 'accueille l'identifiant aléatoire pour la connexion.
De quel identifiant aléatoire parles-tu alors ? ou apparaît-il dans le script de ton 1er message ?
Mais surtout, as-tu bien partout des session_start() ?
Mais surtout, as-tu bien partout des session_start() ?
Voilà la page qui transmet les informations sur l'autre:
( Non je n'ai pas utilisé le session start, car en fait je ne sais pas exactement comme ça marche. Il faut le commercer où et le mettre où ? )
Merci à toi pour tes réponses
( Non je n'ai pas utilisé le session start, car en fait je ne sais pas exactement comme ça marche. Il faut le commercer où et le mettre où ? )
Merci à toi pour tes réponses
<?php require("conf.php"); /*-----------------------------------------------------------------*/ /* PROGRAMME PRINCIPAL */ /*-----------------------------------------------------------------*/ // CONNEXION A LA BASE DE DONNEE $conn = mysql_connect($sql_serveur, $sql_user, $sql_passwd) or trigger_error(mysql_error(),E_USER_ERROR);mysql_select_db($sql_bdd, $conn); // Récupération des variables necessaires à la vérification du champ 'actif' de la BDD $login = mysql_real_escape_string($_POST['pseudo_membre']); // Récupération de la valeur du champ actif pour le login $login $sql = "SELECT actif FROM utilisateurs WHERE pseudo = '$login' AND actif='1'"; $result = mysql_query($sql)or die(mysql_error()); $num_rows=mysql_num_rows($result); if( $num_rows == 1 ) $actif = 1; else $actif = 0; // ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET // MOT DE PASSE SAISIS A LA PAGE INDEX.HTM $requete="select pseudo,passe from utilisateurs where pseudo=\"$pseudo_membre\" and passe=\"$passe_membre\""; $row2 = mysql_query($requete)or die(mysql_error()); // SI AUCUN ENREGISTREMENT NE CORRESPOND if(mysql_num_rows($row2)==0) { // REDIRECTION VERS LA PAGE ERREUR echo "<script type=\"text/javascript\">document.location.href='erreur.htm';</script>"; } // SI LE LOGIN ET MOT DE PASSE SONT EXACTES else { // Il ne nous reste plus qu'à tester la valeur du champ 'actif' pour // autoriser ou non le membre à se connecter if($actif == '1') // Si $actif est égal à 1, on autorise la connexion { //... // On autorise la connexion... // CREATION D'UN IDENTIFIANT ALEATOIRE $taille = 20; $lettres = "abcdefghijklmnopqrstuvwxyz0123456789"; srand(time()); for ($i=0;$i<$taille;$i++) { $id.=substr($lettres,(rand()%(strlen($lettres))),1); } // MISE A JOUR DE L'IDENTIFIANT DANS LA TABLE $requete2="update utilisateurs set id=\"$id\" where pseudo=\"$pseudo_membre\" and passe=\"$passe_membre\""; $row3 = mysql_query($requete2)or die(mysql_error()); // REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE echo "<script type=\"text/javascript\">document.location.href='bdd/index.php?id=$id';</script>"; } else // Sinon la connexion est refusé... { //... echo "<script type=\"text/javascript\">document.location.href='enregistrement.htm';</script>";
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Avais-tu lu mon tout premier message ?
Je t'avais dit qu'il fallait un session_start() et je t'avais dit où le mettre.
Tu parles de session, mais il n'y a rien du tout dans ton programme qui y ressemble.
Je résume :
Tu DOIS avoir session_start() au début de chacun de tes scripts (avant d'envoyer quoi que ce soit au client)
Dans une page, tu enregistres les variables à garder dans le tableau superglobal $_SESSION :
$_SESSION['truc']=$unevariable;
$_SESSION['machin']=$autrevariable;
Dans l'autre page, tu récupères tes variables (après le session-start();):
$unevariable=$_SESSION['truc'];
$autrevariable=$_SESSION['machin];
Je t'avais dit qu'il fallait un session_start() et je t'avais dit où le mettre.
Tu parles de session, mais il n'y a rien du tout dans ton programme qui y ressemble.
Je résume :
Tu DOIS avoir session_start() au début de chacun de tes scripts (avant d'envoyer quoi que ce soit au client)
Dans une page, tu enregistres les variables à garder dans le tableau superglobal $_SESSION :
$_SESSION['truc']=$unevariable;
$_SESSION['machin']=$autrevariable;
Dans l'autre page, tu récupères tes variables (après le session-start();):
$unevariable=$_SESSION['truc'];
$autrevariable=$_SESSION['machin];
D'accord je comprend mieux maintenant, c'est la même chose que te transmettre un variable d'une page à une autre mais dans une session c'est ça ?
Je ne connaissais pas le principe en fait.
Il faut sécuriser d'une façon particulière au non ?
Merci en tout cas !
Je ne connaissais pas le principe en fait.
Il faut sécuriser d'une façon particulière au non ?
Merci en tout cas !
C'est le moyen le plus simple de transmettre des variables entre toutes les pages d'un site, à ma connaissance.
Il n'y a pas de façon particulière de sécuriser : il faut de toutes manières se méfier de toutes les variables qui viennent de l'extérieur en PHP. Mais en général (pas forcément toujours), les variables de session sont mémorisées dans un fichier et donc peu susceptibles d'être modifiées hors du contrôle du script.
Il n'y a pas de façon particulière de sécuriser : il faut de toutes manières se méfier de toutes les variables qui viennent de l'extérieur en PHP. Mais en général (pas forcément toujours), les variables de session sont mémorisées dans un fichier et donc peu susceptibles d'être modifiées hors du contrôle du script.