IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

identification de session infructueuse


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 66
    Par défaut identification de session infructueuse
    bonjour, j'essai de pondre un code pour une ouverture de session, sans la partie de connexion et vérification dans ma base tous va bien mais des-que je rajoute la partie base il n'y a plus d'ouverture de session un œil pourrais t'il me dire ce que j'ai omis merci .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <?php
    // on teste si le visiteur a soumis le formulaire de connexion
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
    	if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
     
    		$base = mysql_connect ('XXXXX', 'XXX', 'XXXX');
    		mysql_select_db ('XXXX', $base);
     
    		// on teste si une entrée de la base contient ce couple login / pass
    		$sql = 'SELECT count(*) FROM inscription WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
    		$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    		$data = mysql_fetch_array($req);
     
    		mysql_free_result($req);
    		mysql_close();
     
    		// si on obtient une réponse, alors l'utilisateur est un membre
    		if ($data[0] == 1) {
    session_start();
     
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    		// si on vient du formulaire
    		$login = $_POST['login'];
    		$_SESSION['login'] = $login;
    	}
    	else {
    		$login = $_SESSION['login'];
    	  }
    	}
      }
    }
    if (isset($_SESSION['login'])) {
    		//on vérifi si la session est en cours.
    		$_SESSION['login'] == 'session_is_registered';
    	}
    	else {
    		header('location: test_index.php');
    	}
    ?>
    avec le code ci dessus lorsque je soumet mon formulaire il se passe un instant et je revient sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('location: test_index.php');
    alors que le login et le pass sont bon et bien présent dans ma base.

    merci par avance
    cedcyr

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il y a des choses inutiles dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    // on teste si le visiteur a soumis le formulaire de connexion
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
    	if  (!empty($_POST['login'])) && !empty($_POST['pass']))) {
     
    		$base = mysql_connect ('XXXXX', 'XXX', 'XXXX');
    		mysql_select_db ('XXXX', $base);
     
    		$sql = 'SELECT login FROM inscription WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.md5($_POST['pass']).'"';
    		$req = mysql_query($sql);
    		$data = mysql_fetch_assoc($req);
     
    		if ($data) {
                          session_start();
                          $_SESSION['login'] = $data['login'];
                          echo 'Authentification réussie';
    	       }
                   else {
                          echo 'Erreur d\'authentification';
                   }
    	}
      }
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 66
    Par défaut je comprend bien.
    je vois la modif mais pour expliquez ma démarche, si j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    		// si on vient du formulaire
    		$login = $_POST['login'];
    		$_SESSION['login'] = $login;
    	}
    	else {
    		$login = $_SESSION['login'];
    	  }
    	}
      }
    }
    if (isset($_SESSION['login'])) {
    		//on vérifi si la session est en cours.
    		$_SESSION['login'] == 'session_is_registered';
    	}
    	else {
    		header('location: test_index.php');
    	}
    ?>
    c'est que je me suis aperçu qu'une fois que l'on partait de la page test_index1 (page d'ouverture de session) vers les autres pages de session en cours et que si on faisais précédent avec les flèches du navigateur lorsque l'on revenait sur ma page test_index1 on obtenait une page erreur car on ne venais pas dans la page avec 'post' et que si l'on tapait l'url directement dans la barre d'adresse on arrivait sur ma page sans être identifié . d'ailleurs ce code sans la connexion a ma bd fonctionnait très bien c'est quand je l'ai modifier que cela a boguer.

    je vais donc partir de votre suggestion et tester.

    je vous tien au courant.

    cedcyr

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 66
    Par défaut essai infructueux !
    re bonjour, j'ai donc essayer avec le code suivant pour le moment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    // on test si le visiteur a soumis le formulaire de connexion
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
    	if  ((!empty($_POST['login'])) && (!empty($_POST['pass']))) {
    	//connexion a ma base
    		$base = mysql_connect ('xx', 'xx', ' xx');
    		mysql_select_db ('xx', $base);
    	//recuperation des données
    		$sql = 'SELECT login FROM inscription WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.md5($_POST['pass']).'"';
    		$req = mysql_query($sql);
    		$data = mysql_fetch_assoc($req);
                      mysql_close();
    	//début de la session
    		if ($data) {
                          session_start();
                          $_SESSION['login'] = $data['login'];
    	                 $login = $_SESSION['login'];
    	       }
                   else {
                          echo 'Erreur d\'authentification';
                   }
    	}
      }
    la session ne démarre pas , en effet je passe a la page suivante (test_index1) en haut a droite il dit bien bonjour et rien car $login na pas été pris en compte et il ne fait pas d'erreur. j'ai donc l'impression que $data n'existe pas et pourtant mes paramètres de bd sont bon sinon php afficherait une erreur !

    mais ou est donc caché l'erreur, pourtant le code de récupération de ma base est bon car dans un autre formulaire il fonctionne

    merci

    cedcyr

  5. #5
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 333
    Par défaut
    re bonjour @cedcyr,

    Si je comprend bien, a ta page "index" tu as un formulaire d connexion qui envoie vers la meme page "index" ?

    et si la connexion est ok tu fait une redirection de page "index" vers la page "index1" .
    et pour simplifier, les autres pages pointent vers "index" et pas "index1" !!

    Il me semble que ton problème vient de la (si j'ai bien suivit...)

    Ton formulaire dans "index" doit envoyer vers une page "login.php" qui va tester et ne rien afficher. Cette page "login" va juste ecrire dans session et rediriger vers "index(1)" ou autre si erreur.

    ps : avais fait une blagounette sur ton sujet hier ('effacée par un modo), dsl si j'ai choqué une personne

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 66
    Par défaut voila mon plan actuel
    re papajoker, mon plan actuel est le suivant j'ai une page test_index qui possède des bouton qui même vers des pages or session (exemple test éclairage etc...) et un bouton connexion qui ouvre une lightbox formulaire pour la connexion. (ce formulaire est vérifier via jscript pour que les champs soit rempli avant post) puis je le post vers test_index1 qui ouvre la session avec le code ci-dessus (si ok test_index1 affiché sinon retour vers test_index) et lorsque je suis dans test_index1 (session ok) tous mes lien mènent vers des page session ou le non est afficher en haut a droite et si on clique sur déconnexion ou que l'on ferme le navigateur la session est détruite et donc retour a test_index.

    voila le plan et comme php et moi cela fait deux pour l'instant, car j'espère bien apprendre et surtout comprendre avec les tutos, des livres et tous ce que je peut lire ca et la c'est vrais que je pêche un peut.

    les codes précédent que tu a pu suivre dans un précédent post a fini par fonctionné mais il n'intégré pas la vérification dans la bd de mon site.

    donc mon dernier code posté donne pour résultat quelque soit le login et pass que tu rentre tu tombe sur test_index1 et $login n'est pas crée car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="sessions"><?php echo "bonjour " . $login;?></div>
    n'affiche que Bonjour , et si de la je part sur une autre page de la session cela me renvoi ver test _index du fait que en entête de chaque page j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    session_start();
    $login = $_SESSION['login'];
    if (isset($_SESSION['login'])) {
    		//on vérifi si la session est en cours.
    		$_SESSION['login'] == 'session_is_registered';
    	}
    	else {
    		header('location: test_index.php');
    }
     
    ?>
    ce qui me laisse pensé que ma session dans test_index1 na pas été crée.

    je suit preneur de toutes les remarques et suggestion pour résoudre ce detail.

    merci cedcyr

    ps quand a la blague dsl je ne l'ai pas vue et note que tu peut j'ai de l'humour !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Identification par session : erreur
    Par arnaudperfect dans le forum Langage
    Réponses: 2
    Dernier message: 16/03/2007, 12h40
  2. identification entrainant creation session
    Par killerhertz dans le forum ASP
    Réponses: 3
    Dernier message: 07/07/2006, 11h59
  3. Identification Access entrainant créeation de session
    Par killerhertz dans le forum ASP
    Réponses: 12
    Dernier message: 30/05/2006, 21h56
  4. Réponses: 13
    Dernier message: 25/05/2006, 05h13
  5. Probleme d'identification avec sessions PHP
    Par bontbont dans le forum Langage
    Réponses: 5
    Dernier message: 09/12/2005, 20h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo