Bonjour à tous,
j'ai crée un à l'aide de ce tuto [http://www.grafikart.fr/tutoriels/php/gestion-membre-229]() un espace membre et je voudrais maintenant mettre en place une page profil pour les membre en utilisant des variables de session et j'ai beau chercher je n'y arrive pas, je pense que je dois modifier le fichier (auth.php)
<?php require_once 'cnx.php' ?>
<?php
class Auth{
static function islog(){
global $cnx;
if(isset($_SESSION['Auth']) && isset($_SESSION['Auth']['email']) && isset($_SESSION['Auth']['password'])){
$q=array('email'=>$_SESSION['Auth']['email'],'password'=>$_SESSION['Auth']['password']);
$sql = 'SELECT email,password,prenom FROM inscription WHERE email = :email AND password = :password';
$req = $cnx->prepare($sql);
$req->execute($q);
$count = $req->rowCount($sql);
if($count == 1){
return true;
}else{
return false;
}
}
}
}
?>
je n'arrive pas à définir de $_SESSION['prenom'] etc.. dans la fonction islog .
Je ne sais pas si vous m'avez compris ?
merci d'avance
Bonjour,
Je suis pose que $count vaut toujours false ?
Pour avoir le $count comme vous le définissez, il vous faire le rowCount sur les résultats et non sur la requête.
$data = $req->execute($q);
$count = $data->rowCount();
Bonjour, j'ai essayé mais cela me renvoi une erreur
```Fatal error: Call to a member function rowCount() on a non-object ```
Bonjour,
j'ai modifié mais cela ne change rien, sur ma page profil j'appel ma fonction sur ma page profil comme cela :
<?php
session_start();
require('auth.php');
if(Auth::islog()){
}
else{
header('Location:index.php');
}
?>
Lorsque dans le formulaire de cette page profil je veux afficher l'adresse mail la variable fonctionne :
<?php echo $_SESSION['Auth']['email']; ?>
lorsque j'appel la variable de prenom cela me met une erreur :
Notice: Undefined index: prenom in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\site\user-profile-settings.php on line479
Ce qui est normal car dans mon fichier auth.php je n'arrive pas à définir une variable de session car dès que j'essai cela renvoi le membre à la page de connexion comme ci les identifiants etaient inccorect.
J'ai beau chercher je n'y arrive pas. Auriez vous une idée de la solution ?
merci
J'ai fait le code à ma maniére:
<?php
require_once 'cnx.php'
class Auth{
static function islog(){
global $cnx;
if(isset($_SESSION['Auth']) && isset($_SESSION['Auth']['email']) && isset($_SESSION['Auth']['password'])){
$sql = $cnx->prepare("SELECT email,password,prenom FROM inscription WHERE email = ? AND password = ?");
$sql->execute(array($_SESSION['Auth']['email'], $_SESSION['Auth']['password']));
$count = $req->rowCount($sql);
if($count > 0){
return true;
} else {
return false;
}
}
}
}
?>
Si sa ne marche toujours pas, c'est qu'il ne trouve pas la variable "$cnx".
Derien
Salut et merci ,
cela me met une erreur :
Notice: Undefined variable: req
Fatal error: Call to a member function rowCount() on a non-object
Je vais voir du côté de "$cnx"
rowcount doit se faire sur la même variable que execute.
<?php
require_once 'cnx.php'
class Auth{
static function islog(){
global $cnx;
if(isset($_SESSION['Auth']) && isset($_SESSION['Auth']['email']) && isset($_SESSION['Auth']['password'])){
$sql = $cnx->prepare("SELECT email,password,prenom FROM inscription WHERE email = ? AND password = ?");
$sql->execute(array($_SESSION['Auth']['email'], $_SESSION['Auth']['password']));
$count = $sql->rowCount();
if($count > 0){
return true;
} else {
return false;
}
}
}
}
?>
Merci, ça fonctionne mais j'ai toujours ce soucis de $_SESSION['prenom'] etc.. dans la fonction islog du coup je ne paux pas afficher les prenom nom etc dans le formulaire du profil je nage completement.
Une page profil pour les membres.
Tous fonctionne en ce qui concerne la page de connexion au site, le formulaire d'inscription, la session du membre. Mais je bloque sur cette page profil je peux uniquement appeler les variable email et password et je n'arrive pas a définir les variables de session nom prenom etc
Voilà le code:
<?php
require_once 'cnx.php'
class Auth{
static function islog(){
global $cnx;
if(isset($_SESSION['Auth']) && isset($_SESSION['Auth']['email']) && isset($_SESSION['Auth']['password'])){
$sql = $cnx->prepare("SELECT * FROM inscription WHERE email = ? AND password = ?");
$sql->execute(array($_SESSION['Auth']['email'], $_SESSION['Auth']['password']));
$count = $sql->rowCount();
if($count > 0){
$data = $sql->fetch(PDO::FETCH_OBJ);
$_SESSION['data'] = $data;
unset($_SESSION['Auth']);
} else {
return false;
}
}
}
}
?>
Pour appeler une collone tu fait ceci:
echo $_SESSION['data']->prenom;
Derien
Bonsoir, oui pour cette session ça fonctionne si je fais
echo $_SESSION['Auth']['prenom'];
Cela ne marche pas car je n'arrive pas à définire cette $_SESSION
Je t'ai donné le code qu'il faut faire, maintenant si sa sa ne marche pas tu doit mettre session_start() toute en haut de ton fichier.
J'ai trouvé la solution
$sth = $cnx->prepare("SELECT email,prenom, nom, adresse, mobile,avatar,code_postal, ville FROM inscription WHERE email = :email");
$sth->execute(array('email'=>$_SESSION['Auth']['email']));
/* styles PDOStatement::fetch */
//print("PDO::FETCH_ASSOC: ");
//print("Retourne la ligne suivante en tant qu'un tableau indexé par le nom des colonnes\n");
$result = $sth->fetch(PDO::FETCH_ASSOC);
//print_r($result);
//print("\n");
merci pour votre aide