[RESOLU] Espace membre : Connexion avec email / mot de passe

Eléphant du PHP | 386 Messages

05 mai 2013, 01:27

Bonjour,

J'aimerais que la connexion à mon espace membre se fasse avec l'email et non plus avec le pseudo.
J'ai essayé le script ci-dessous, et un var_dump sur $_SESSION donne null pour l'id et le pseudo.
<?php
require('../include/config.inc.php');

if (!empty($_POST['email']) && !empty($_POST['pass'])) :

	$email = $_POST['email'];
	$pass = sha1($_POST['pass']);
	
    $req = $connect->prepare('SELECT * FROM wa_communaute WHERE email = :email AND pass = :pass');
    $req->execute(array('email' => $email,'pass' => $pass));
    $result = $req->fetchAll();
    if(count($result) == 1) :
		session_start();
		$_SESSION['id'] = $result['id'];
		$_SESSION['pseudo'] = $result['pseudo'];
		header('Location: ../home');
    else:
        echo '<div class="error-login">Vos identifiants sont incorrects !</div>';
    endif;
else:
    echo '<div class="error-login">Veuillez remplir tous les champs !</div>';
endif;
?>
Merci d'avance ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 mai 2013, 15:47

Salut

fetchAll retourne un tableau de tableau donc la c'est $result[0]['id'] par exemple


Je te conseil d'afficher les erreurs c'est indispensable lorsque l'on développe (toutes les erreurs: E_ALL).

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 386 Messages

05 mai 2013, 16:53

Merci ça fonctionne, mais pourquoi ça marche avec [0] ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 mai 2013, 17:05

parce que fetchAll retourne un tableau qui contient des tableaux.


dans ton cas tu aurais simplement utilisé fetch tu conservais ton code ;)

regarde la des deux méthodes sur php.net


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 386 Messages

06 mai 2013, 01:46

Si j'utilise fetch, mes identifiants sont incorrects alors que si j'utilise fetchAll, mes identifiants sont bons, et je me connecte ^^

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 mai 2013, 15:53

Revoi l'utilisation du fetch il ne joue pas sur la requête les données sont les mêmes.
La seule différence c'est que fetch retourne une seule ligne de résultat par appel alors que fetchAll retourne le tout dans un tableau.

http://www.php.net/manual/fr/pdostatement.fetch.php

@+
Il en faut peu pour être heureux ......

ViPHP
AB
ViPHP | 5818 Messages

07 mai 2013, 04:32

Cela dit si tu utilise $result = fetch(), la ligne suivante if(count($result) == 1) n'a plus de sens...
J'ai détaillé cet exemple dans ce topic (formulaire de connexion).