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 :

Problème de connexion


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut Problème de connexion
    Bonjour,

    Depuis hier matin, je ne dois pas avoir les yeux en face des trous :

    J'ai une page connect.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <table border="0" width="400" align="center">
    	<tr>
    		<td width="200"><b>Votre login</b></td>
    		<td width="200"><input type="text" name="login"></td>
    	</tr>
    	<tr>
    		<td width="200"><b>Votre mot de passe<b></td>
    		<td width="200"><input type="password" name="password"></td>
    	</tr>
    	<tr>
    		<td colspan="2"><input type="submit" name="submit" value="login"></td>
    	</tr> 
    </table>
    La page verifConnect.php :
    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
    <?php
    	$id = $_POST["login"];
    	$motDePasse = $_POST["password"];
     
    	$requete = $bdd->prepare('SELECT * FROM profil WHERE email = ? AND password = ?');
    	$requete->execute(array($_POST['login'], $_POST['password']));
     
    	if ($requete->fetch() == FALSE) {
    		echo "Paramètres de connexion invalides<br/>";
    	} else {
    		$_SESSION["membre"] = TRUE;
    		$_SESSION["email"] = $id;
    		header("Location: profil.php");
    		die();
    	}
    ?>
    Et ma page profil.php ayant dans son header le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    	// Vérification de l'autorisation
    	if (!$_SESSION["membre"]) {
    	   // Si l'utilisateur n'est pas autorisé il est reconduit
    	   // sur le formulaire d'identification
    	   header("Location: connect.php");
    	   die();
    	}   
    ?>
    Si le mot de passe ou l'identifiant n'est pas bon, il m'affiche bien l'info mais, si c'est bon, je me retrouve ... Sur connect.php ...

    Une idée ?

    Merci d'avance.

    Scots

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    est-ce que tu as pensé à mettre au début du script profil.php ?

    Pense aussi à vérifier la présence des clés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $id = (isset($_POST["login"])) ? $_POST["login"] : '';
    et quand tu vérifies le fetch() fais une comparaison typée : === false.

    Enfin il est préférable d'utiliser exit; à la place de die(); qui n'est qu'un alias du premier terme.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    Yes !

    En fait avant tout ça j'ai des includes (et après) donc le header qui lui contient bien entendu :

    => La connexion à la base,
    => Le session_start();

    J'avoue que j'ai vérifié quand même ;-)

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Ok, pose donc un print_r($_SESSION); dans profil.php et vérifie ce que la session contient au moment du bug.

    J'avais pas vu mais tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete->execute(array($_POST['login'], $_POST['password']));
    alors qu'un peu plus haut tu as défini $id et $motDePasse

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    J'ai modifié le verifConnect.php pour avoir ça :
    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
    <?php
     
    		$id = (isset($_POST["login"])) ? $_POST["login"] : '';
    		$motDePasse = (isset($_POST["password"])) ? $_POST["password"] : '';
     
    		$requete = $bdd->prepare('SELECT * FROM profil WHERE email = ? AND password = ?');
    		$requete->execute(array($_POST['login'], $_POST['password']));
     
    		if ($requete->fetch() === FALSE) {
    			echo "Paramètres de connexion invalides<br/>";
    		} else {
    			$_SESSION["membre"] = TRUE;
    			$_SESSION["email"] = $id;
    			header("Location: profil.php");
    			die();
    		}
    	?>
    Du coup, quand je clique sur le bouton login : il ne bouge plus ...

    Ce n'est pas bien ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete->execute(array($_POST['login'], $_POST['password']));
    Ah oui, je défini les variables pour rien c'est ça ?

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    tu devrais faire plutôt comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete->execute(array($id, $motDePasse));

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    Tu as raison. C'est corrigé. Mais bien entendu ça ne change rien.

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    que donne le print_r($_SESSION); au début de profil.php au moment du bug ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    Et bien je ne sais pas :

    Comme je t'ai dis plus haut, depuis la modif, le bouton login ne fait plus rien. La page se rafraîchi et c'est tout.

  10. #10
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Lol,
    c'est pas l'ajout du isset() qui fait dérailler le script...

    Poste le code complet du formulaire stp

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    C'est depuis que je l'ai ajouté oui.

    Le formulaire :
    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
    <form method="post" action="verifLogin.php">
    		<table border="0" width="400" align="center">
    			<tr>
    				<td width="200"><b>Votre login</b></td>
    				<td width="200"><input type="text" name="login"></td>
    			</tr>
    			<tr>
    				<td width="200"><b>Votre mot de passe<b></td>
    				<td width="200"><input type="password" name="password"></td>
    			</tr>
    			<tr>
    				<td colspan="2"><input type="submit" name="submit" value="login"></td>
    			</tr> 
    		</table>
    	</form>
    La page de vérification :
    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
    <?php
     
    		$id = (isset($_POST["login"])) ? $_POST["login"] : '';
    		$motDePasse = (isset($_POST["password"])) ? $_POST["password"] : '';
     
    		$requete = $bdd->prepare('SELECT * FROM profil WHERE email = ? AND password = ?');
    		$requete->execute(array($id, $motDePasse));
     
    		if ($requete->fetch() === FALSE) {
    			echo "Paramètres de connexion invalides<br/>";
    		} else {
    			$_SESSION["membre"] = TRUE;
    			$_SESSION["email"] = $id;
    			header("Location: profil.php");
    			die();
    		}
    	?>
    Je refais un test sans le isset() : Non, pareil

  12. #12
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    une autre version de verifLogin.php :
    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
    <?php
     
    error_reporting(E_ALL);
    session_start();
     
    if ( ! empty($_POST['login']) && ( ! empty($_POST['password'])))
    {
        $stmt = $bdd->prepare('SELECT * FROM profil WHERE email = :login AND password = :mdp');
        $qry  = $stmt->execute(array(
            ':login' => $_POST['login'],
            ':mdp'   => $_POST['password']
        ));
     
        if ($qry)
        {
            if ($qry->fetch())
            {
                $_SESSION['membre'] = true;
                $_SESSION['email']  = $_POST['login'];
                header('Location: profil.php');
                exit;        
            }
            else
                echo 'Paramètres de connexion invalides<br/>';
        }
        else
            echo 'Oups, problème technique';
    }
    else
        echo 'Paramètres de connexion invalides<br/>';
     
    ?>

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    Hélas

    C'est pire, la page plante. Plus rien ne s'affiche.

  14. #14
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bon, je vais aller me recoucher ^^

    Comment ça ? Ta page reste blanche ? Même le HTML ne s'affiche plus ??
    Si c'est le cas, il faut que tu regardes du côté des inclusions, voir s'il n'y aurait pas une qui planterait lamentablement.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    Pas exactement lol

    En fait j'arrive sur la page verifLogin et TOUT s'affiche AVANT le "content" où se trouve le code.

    En gros je n'ai plus le includ footer par exemple mais bien le header.

  16. #16
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Poste le code complet de ton script.
    Regarde aussi dans les logs de PHP et Apache, histoire de voir ce qui lui plait pas.

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    Mais j'ai mis les 3 codes complets de mes 3 pages ?.. Qu'est-ce qu'il te manque ?

    Voici mon include header.php :
    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
    	<?php
    		session_start();
    	?>
     
    	<div id="page">
    		<?php include("inc/sqlconnect.php"); ?>
     
    		<header>
    			<h1><a href="/">logo</a></h1>
    		</header>
     
    		<?php include("inc/menu.php"); ?>
     
     
    		<div id="content">
    			<aside>
    				Sidebar
    			</aside>
     
    			<article>
    Pour info, je suis sur un IIS7 avec PHP 5.3.13

  18. #18
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Regarde dans les logs si le serveur IIS ne te filerait pas des infos sur le problème.

    Regarde aussi le code source de la page générée s'il n'y aurait pas un truc qui traînerait.

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    Je n'ai pas accès à grand chose

    Tout ce que je peux voir c'est qu'il boucle on dirait :

    connect => verifLogin => profil => connect ... Le tout dans la même seconde.

  20. #20
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Tu développes sans avoir accès complètement à ton environnement d'exécution (au moins les logs) ?
    Dans ce cas, c'est le plus pénible. Il va falloir que tu traces à la main le comportement de tes scripts avec des echo et exit; un peu partout pour voir comment les appels et inclusions se font.
    J'ai du mal à comprendre comment il peut boucler sur les scripts...

Discussions similaires

  1. [Première installation] Problème de connexion
    Par sekiryou dans le forum Installation
    Réponses: 2
    Dernier message: 02/03/2004, 20h18
  2. [ Oracle 9ias / 10g] problème de connexion
    Par Boosters dans le forum JDeveloper
    Réponses: 2
    Dernier message: 20/01/2004, 18h23
  3. Problème de connexion au serveur MYSQL
    Par ETOKA dans le forum Outils
    Réponses: 2
    Dernier message: 27/11/2003, 10h28
  4. Réponses: 11
    Dernier message: 13/10/2003, 15h48
  5. problème de connexion 2 PC
    Par guitalca dans le forum Développement
    Réponses: 3
    Dernier message: 22/09/2003, 15h04

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