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 :

Formulaire de connexion


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Points : 50
    Points
    50
    Par défaut Formulaire de connexion
    Bonjour à tous,

    Voici j'ai un petit souci sur mon code que je n'arrive pas à m'expliquer.
    Il s'agit d'un formulaire de connexion avec vérification des entrées de l'utilisateur avant l'envoi.

    Et j'ai un souci au niveau des vérification.

    Je check tout d'abord si il n'y a pas de champ vide (ça, ça marche), ensuite si ma requête obtient une réponse ou pas dans la base avec le login/password et c'est là qu'il y a un souci car si un mauvais login ou mot de passe est entrée je tombe sur une page blanche au lieu du message d'erreur, en revanche tout fonctionne si le login/password est bon.

    Voici mon 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or die("Impossible de se connecter : " . mysql_error());
     
    if(isset($_POST[''connexion]) && $_POST['connexion'] == 'Connexion'){
    	if(!empty($_POST['login']) &&  !empty($_POST['login'])){
    		//si une entrée de la base contient login / pass
    		$mysql_result = mysql_query("SELECT login, groupe, nom, prenom, password FROM users WHERE login='".mysql_real_escape_string($_POST['login'])."' AND password='".mysql_real_escape_string($_POST['password']."'");
     
    		$nbUsers = mysql_num_rows($mysql_result) or die(mysql_error());
    		$ligne = mysql_fetch_array($mysql_result) or die(mysql_error());
     
    		mysql_close;
     
    		// si oin obtient une réponse
    		if($nbUsers > 0){
    			session_start();
    			$_SESSION['login'] = $ligne[0];
    			$_SESSION['groupe'] = $ligne[1];
    			$_SESSION['nom'] = $ligne[2];
    			$_SESSION['prenom'] = $ligne[3];
    			header('Location: index.php?page=Accueil');
    			exit();
    		}
    		else{
    			$errreur = 'Login ou mot de passe incorrect.';
    		}
    	}
    	else{
    		$erreur = 'Au moins un de ces champs est vide.';
    	}
    }
    ?>
     
    <form action="index.php?page=log" method="POST" name="log">
    	<table>
    		<tr>
    			<td>Login</td>
    			<td><input type="text" name="login" /></td>
    		</tr>
    		<tr>
    			<td>Mot de passe</td>
    			<td><input type="password" name="password" /></td>
    		</tr>
    		<tr>
    			<td colspan="2">
    				<div><?php if(isset($erreur)) echo $erreur; ?></div>
    			<td>
    		</tr>
    	</table>
    </form>

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Une page blanche, c'est une fatal error pas affichée. Active l'affichage des erreurs et regarde le message
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST[''connexion])...)
    Il n'y a rien qui te choques là ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Celira Voir le message
    Une page blanche, c'est une fatal error pas affichée. Active l'affichage des erreurs et regarde le message
    L'affichage des erreurs est déjà activé. Justement si ça avait été un problème de syntaxe ou une erreur dans le genre au moins je l'aurais vu tout de suite

    Citation Envoyé par Bovino Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST[''connexion])...)
    Il n'y a rien qui te choques là ?
    Oups Mais ce n'est qu'une erreur de recopie du code (J'ai pas pu faire de copier-coller du code, j'ai dû le retaper à la main) j'ai pas fait l'erreur dans le code d'origine.

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    si un mauvais login ou mot de passe est entrée je tombe sur une page blanche au lieu du message d'erreur
    Tu veux dire quand tu entres dans le cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    else{
    	$errreur = 'Login ou mot de passe incorrect.';
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Il y a aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!empty($_POST['login']) &&  !empty($_POST['login']))

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Tu veux dire quand tu entres dans le cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    else{
    	$errreur = 'Login ou mot de passe incorrect.';
    }

    Quelle truffe je fais. J'aurais aimé que ce soit ça mais pareil que précédemment, mal recopié.

    Idem pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!empty($_POST['login']) &&  !empty($_POST['login']))
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!empty($_POST['login']) &&  !empty($_POST['password']))

    J'ai re-checké minutieusement, il n'y a normalement plus d'erreur de ce type. Désolé

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Points : 50
    Points
    50
    Par défaut
    Le PC sur lequel je bosse à ses ports USB bloqués et n'est pas online, je peux donc pas directement faire un copié-collé. Et j'ai voulu poster trop vite

    Je reposte le code sans les faute de recopie pour une meilleure lecture

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or die("Impossible de se connecter : " . mysql_error());
     
     
    if(isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion'){
    	if(!empty($_POST['login']) &&  !empty($_POST['password'])){
    		//si une entrée de la base contient login / pass
    		$mysql_result = mysql_query("SELECT login, groupe, nom, prenom, password FROM users WHERE login='".mysql_real_escape_string($_POST['login'])."' AND password='".mysql_real_escape_string($_POST['password']."'");
     
    		$nbUsers = mysql_num_rows($mysql_result) or die(mysql_error());
    		$ligne = mysql_fetch_array($mysql_result) or die(mysql_error());
     
    		mysql_close;
     
    		// si on obtient une réponse
    		if($nbUsers > 0){
    			session_start();
    			$_SESSION['login'] = $ligne[0];
    			$_SESSION['groupe'] = $ligne[1];
    			$_SESSION['nom'] = $ligne[2];
    			$_SESSION['prenom'] = $ligne[3];
    			header('Location: index.php?page=Accueil');
    			exit();
    		}
    		else{
    			$erreur = 'Login ou mot de passe incorrect.';
    		}
    	}
    	else{
    		$erreur = 'Au moins un de ces champs est vide.';
    	}
    }
    ?>
     
    <form action="index.php?page=log" method="POST" name="log">
    	<table>
    		<tr>
    			<td>Login</td>
    			<td><input type="text" name="login" /></td>
    		</tr>
    		<tr>
    			<td>Mot de passe</td>
    			<td><input type="password" name="password" /></td>
    		</tr>
    		<tr>
    			<td colspan="2">
    				<div><?php if(isset($erreur)) echo $erreur; ?></div>
    			<td>
    		</tr>
    	</table>
    </form>
    Encore désolé

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['connexion'])...)
    Il est où le champ "connexion" ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Points : 50
    Points
    50
    Par défaut
    Bovino Tu auras le droit de me châtier

    J'ai sauté une ligne du tableau en recopiant aussi pffffff.

    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
     
    <form action="index.php?page=log" method="POST" name="log">
    	<table>
    		<tr>
    			<td>Login</td>
    			<td><input type="text" name="login" /></td>
    		</tr>
    		<tr>
    			<td>Mot de passe</td>
    			<td><input type="password" name="password" /></td>
    		</tr>
    		<tr>
    			<td colspan="2"><input type="submit" name="connexion" value="Connexion" /></td>
    		</tr>
    		<tr>
    			<td colspan="2">
    				<div><?php if(isset($erreur)) echo $erreur; ?></div>
    			<td>
    		</tr>
    	</table>
    </form>

  11. #11
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 101
    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 101
    Points : 4 446
    Points
    4 446
    Par défaut
    Bonjour,

    ce n'est pas la redirection ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: index.php?page=accueil');
    peut être que Accueil <=> accueil si il cherche ensuite Accueil.php ??

    ou alors ceci
    mysql_close;
    ps: au passage je mettrais le mysql_connect après les if $_POST
    $moi= ( !== ) ? : ;

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Points : 50
    Points
    50
    Par défaut
    Bonjour Papajoker,

    Non ça ne viens pas de la redirection, elle fonctionne bien lorsque que le bon login/password est renseigné. Le fait qu'il n'y ai pas l'extension .php n'est pas une erreur, c'est juste géré dans la page index.php dans laquelle je fais un include des pages du site dont celle-ci.

    mysql_close(); j'y avais pensé aussi en le déplaçant à la fin du code et même en le supprimant, mais ça ne vient pas de là.

  13. #13
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par oOBaalberithOo Voir le message
    mysql_close(); j'y avais pensé aussi en le déplaçant à la fin du code et même en le supprimant, mais ça ne vient pas de là.
    Cela ne va pas t'aider pour le pb présent mais d'une manière générale n'utilise pas mysql_close(). PHP se débrouille bien tout seul et sauf rares exceptions cela apporte bien plus souvent des problèmes qu'une optimisation quelconque.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Points : 50
    Points
    50
    Par défaut
    Ok, merci du conseil.

Discussions similaires

  1. Formulaire de connexion qui ne connecte pas
    Par Lexion71 dans le forum Langage
    Réponses: 3
    Dernier message: 28/12/2007, 18h41
  2. Formulaire de connexion
    Par Interface dans le forum Langage
    Réponses: 6
    Dernier message: 21/09/2007, 14h06
  3. formulaire de connexion ne fonctionne pas
    Par masterix59 dans le forum Langage
    Réponses: 2
    Dernier message: 20/09/2007, 00h31
  4. formulaire de connexion utilisateurs
    Par lucienkany dans le forum Access
    Réponses: 1
    Dernier message: 02/07/2007, 22h45
  5. PB Utilisation formulaire de connexion
    Par stan314 dans le forum Access
    Réponses: 2
    Dernier message: 25/05/2006, 12h59

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