Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/09/2012, 09h26   #1
transact
Membre régulier
 
Avatar de transact
 
Homme
Inscription : décembre 2008
Messages : 283
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : décembre 2008
Messages : 283
Points : 71
Points : 71
Par défaut Script identification utilisateur/mot de passe

Bonjour à toutes et à tous,

Pouvez-vous me dire ce qui cloche dans mon code car si je mets le else dans la boucle while l'identification ne s'effectue pas.

Code :
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
 
<pre>
<?php 
	session_start();
	require_once("includes/inc_connexion.php"); // on se connecte à la Base de données	
	$conn=opendb_conn();
 
	if(isset($_POST['submit'])) {
		// bouton submit pressé, je traite le formulaire
		$login = (isset($_POST['pseudo']))?$_POST['pseudo']:'';
		$password = (isset($_POST['pass']))?$_POST['pass']:'';
		extract($_POST); // importation des variables dans la table des symboles
		// constitution de la requete
		$req="select login, password from membres";	
		// on prépare la requete a executer sur le serveur
		$stm=$conn->query($req);
		// on exécute la requete
		//$stm->execute();	
		// parcourir l'ensemble des tuples de la table des membres
		while($result=$stm->fetch(PDO::FETCH_ASSOC)) {
			// tester si le login et le password sont en correspondance
			if(($result['login']==$login) && ($result['password']==$password)) {
				// on debute alors la session
				//session_start();
				// on assigne les variables de session
				$_SESSION['pseudo'] = $_POST['pseudo'];
				$_SESSION['pass'] = $_POST['pass'];
				// on affiche le message de connexion
				echo '<p style="color:green">authentifi&eacute;'.' ['.$_SESSION['pseudo'].']'.'</p>';			 
			} //if			
			else {
				//echo "ko";
				header('Location: http://localhost/index.php');
			}			
		} //while											
	} //if
	$stm->closeCursor();
?>
</pre>
Merci d'avance.
Transact
transact est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2012, 09h47   #2
transact
Membre régulier
 
Avatar de transact
 
Homme
Inscription : décembre 2008
Messages : 283
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : décembre 2008
Messages : 283
Points : 71
Points : 71
Il semblerait que la condition else ne soit jamais pris en compte dans la boucle while.
transact est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2012, 09h53   #3
FirePrawn
Responsable (X)HTML/CSS

 
Avatar de FirePrawn
 
Homme Sébastien Germez
Ingénieur réalisateur
Inscription : mars 2011
Messages : 2 662
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Germez
Âge : 25
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 2 662
Points : 20 535
Points : 20 535
Bonjour,

Peut-être parce que tu ne rentres pas dans ton while ?
L'exécution de ta requête est commentée, donc à mon avis le while ne renvoie jamais true...
__________________
Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez-moi !
Avant toute chose : lire le mode d'emploi du forum et ses règles.
Je ne réponds pas aux questions techniques en MP.
FirePrawn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2012, 10h08   #4
transact
Membre régulier
 
Avatar de transact
 
Homme
Inscription : décembre 2008
Messages : 283
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : décembre 2008
Messages : 283
Points : 71
Points : 71
J'ai décommenté le execute() mais cela ne change rien, et je rentre bien dans le while.
transact est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2012, 10h13   #5
FirePrawn
Responsable (X)HTML/CSS

 
Avatar de FirePrawn
 
Homme Sébastien Germez
Ingénieur réalisateur
Inscription : mars 2011
Messages : 2 662
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Germez
Âge : 25
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 2 662
Points : 20 535
Points : 20 535
Alors ça vient peut être de ta requête.

Ta requête renvoie TOUS les utilisateurs avec leur mot de passe.
Il ne serait pas plus simple de faire un Select login, pass from membres where login = $login plutôt ?
Comme ça s'il y a un résultat c'est bon, sinon c'est pas bon.
__________________
Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez-moi !
Avant toute chose : lire le mode d'emploi du forum et ses règles.
Je ne réponds pas aux questions techniques en MP.
FirePrawn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2012, 10h28   #6
transact
Membre régulier
 
Avatar de transact
 
Homme
Inscription : décembre 2008
Messages : 283
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : décembre 2008
Messages : 283
Points : 71
Points : 71
Si j'écris cela :
Code :
$req="select login, password from membres where login =".$login;
J'ai le message d'erreur suivant :
Citation:
Fatal error: Call to a member function fetch() on a non-object in C:\Users\sogia\Desktop\www\wineBusiness\connexion.php on line 19
transact est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2012, 11h11   #7
FirePrawn
Responsable (X)HTML/CSS

 
Avatar de FirePrawn
 
Homme Sébastien Germez
Ingénieur réalisateur
Inscription : mars 2011
Messages : 2 662
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Germez
Âge : 25
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 2 662
Points : 20 535
Points : 20 535
Il faut adapter la syntaxe...

J'ai donné cette requête pour te faire comprendre l'idée. Tu utilises PDO, sers t'en.
__________________
Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez-moi !
Avant toute chose : lire le mode d'emploi du forum et ses règles.
Je ne réponds pas aux questions techniques en MP.
FirePrawn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2012, 11h18   #8
transact
Membre régulier
 
Avatar de transact
 
Homme
Inscription : décembre 2008
Messages : 283
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : décembre 2008
Messages : 283
Points : 71
Points : 71
Je ne vois pas comment faire avec PDO pour adapter la syntaxe!
transact est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2013, 15h22   #9
transact
Membre régulier
 
Avatar de transact
 
Homme
Inscription : décembre 2008
Messages : 283
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : décembre 2008
Messages : 283
Points : 71
Points : 71
Voici un code qui fonctionne à la perfection
Code php :
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
 
/** script d'identification du couple login/password présent dans la table des membres */
require_once("includes/inc_connexion.php");
$conn = opendb_conn(); // on se connecte Ã* la Base de données
 
if (isset($_POST['submit'])) {
    // bouton submit presse, je traite le formulaire
    $pseudo = (isset($_POST['pseudo'])) ? $_POST['pseudo'] : '';
    $pseudo = htmlentities(trim($pseudo));
    $password = (isset($_POST['password'])) ? $_POST['password'] : '';
    $password = sha1($password);
    /* constitution de la requete avec la clause where RECUPERANT LES PARAMETRES login ET password
      Cette requete a pour avantage de cibler exactement le couple login/password
      ceci evite de faire plus bas un test if() ... else
      Dans la liste de sélection nous récupérons les champs id et actif de la table producteurs
     */
    $req = "select membre_id,pseudo, password,actif from membres where pseudo='" . $pseudo . "' and password='" . $password . "'";
    // on prépare la requete a executer sur le serveur
    $stm = $conn->prepare($req);
    // on exécute la requete
    $stm->execute();
    // PDO::FETCH_ASSOC: retourne un tableau indexé par le nom de la colonne comme retourné dans le jeu de résultats
    $result = $stm->fetch(PDO::FETCH_ASSOC);
    /* // pour les tests
      print '<pre>';
      print_r($result);
      print '</pre>';
     */
    $actif = $result['actif']; //récupération de la valeur du champ 'actif'
    $id = $result['membre_id']; //récupération de la valeur de l'id producteur en base
    $pseudo_db = $result['pseudo'];
    $password_db = $result['password'];
    // si le compte a été activé via le lien du mail d'activation et que le couple pseudo/password correspond
    if (($actif == '1') && ($pseudo == $pseudo_db) && ($password == $password_db)) {
        // on assigne les variables de session ... mais on n'ouvre pas de session pour l'instant
        $_SESSION['pseudo'] = $pseudo;
        $_SESSION['id'] = $id; // cette variable sera utilisée dans ajout_publierAnnonce.php
        $stm->closeCursor(); // fermeture du curseur
    } else {
        // cependant si le compte est inactif ou que le couple login/password ne correspond pas
        echo "Votre login ou votre mot de passe est incorrect !";
        //header('Location: http://localhost/clothesBusiness/index.php'); // on reste sur la page index.php
    } // fin if(($actif == '1') && ($pseudo == $pseudo_db) && ($password == $password_db))
} //fin if(isset($_POST['submit']))
$conn = null;
transact est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h18.


 
 
 
 
Partenaires

Hébergement Web