Probleme de variable de session

Signaler
Messages postés
374
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
24 avril 2013
-
Messages postés
15154
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
19 octobre 2021
-
Bonjour,

Voila, je débute en php, et j'ai un petit soucis. J'ai créer une base de donnée sous Mysql (taccess) avec iduser, login, pass, email, anniversaire, site.

Donc le membre s'inscrit en ligne , s'identifie, et accede a son compte. Et là ca plante.
Dès que le membre veux acceder a son compte ca ne marche pas. J'ai essayé de rentrer des variables de session, mais j'ai surement du mal m'y prendre.

Page d'identification:

<?php
mysql_select_db($database_ircfrance, $ircfrance);
$query_totalmembres = "SELECT * FROM taccess";
$totalmembres = mysql_query($query_totalmembres, $ircfrance) or die(mysql_error());
$row_totalmembres = mysql_fetch_assoc($totalmembres);
$totalRows_totalmembres = mysql_num_rows($totalmembres);
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}


$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}


if (isset($_POST['login'])) {
  $loginUsername=$_POST['login'];
  $password=$_POST['pass'];


  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "../auth-ok.php";
  $MM_redirectLoginFailed = "../erreur-auth.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_ircfrance, $ircfrance);




  $LoginRS__query=sprintf("SELECT login, pass, email FROM taccess WHERE login='%s' AND pass='%s' AND email='%s'",
    get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));
  
  $LoginRS = mysql_query($LoginRS__query, $ircfrance) or die(mysql_error());
   $data = mysql_fetch_assoc($LoginRS);
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
   
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup; 
     


    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl']; 
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>

Donc là j'utilise deux post:
  $loginUsername=$_POST['login'];
  $password=$_POST['pass'];
qui viennent de mes champs de formulaires ce qui est facile a réccuperer comme variables. mais apres pour les variables avec email, site etc... c'est une autre histoire :/

Page de confirmation:
 j'ai tout essayé ca ne marche pas.

j'ai essayé <?php echo $_SESSION['email']; ?>  en mettant une variable de formulaire $email dans la page de connexion mais bon surement mal placé?

Si quelqu'un pouvais m'aider svp ca m'aiderais vraiment. Car là je bloque sur ca depuis 1 semaine et je ne peux pas avancer mon site :/

Merci d'avance

VestaX

5 réponses

Messages postés
15154
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
19 octobre 2021
99
Salut,
Je m'avance peut-être, mais ne faut-il pas faire un session_start() avant toute chose?
http://fr.php.net/session_start

// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

Je mettrais le session_start() avant l'accès à la base, moi...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
374
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
24 avril 2013

merci de ta réponse buno.

En fait je veux bien le mettre avant, mais ca ne me parrait pas logique, car il faut bien identifié la base afin de pouvoir se connecter. C'est comme quand tu va sur un site et que tu t'identifie, tu ne va pas t'identifier avant d'aller sur le site :) //clind'oeil

Par contre, le lien que tu m'a passé je vois:
<?php
// page1.php

session_start();

echo 'Bienvenue à la page numéro 1';

$_SESSION['favcolor'] = 'vert';
$_SESSION['animal']   = 'chat';
$_SESSION['time']     = time();

// Fonctionne si le cookie a été accepté
echo '
[page2.php page 2]';

// Ou bien, en indiquant explicitement l'identfiant de session
echo '
[page2.php?' SID . '">page 2]';
?>

apparament dans les variables de session il y a deja des valeurs prédéfinies (vert, chat, time) alors que moi je voudrais reccuperer les valeurs d'une requete interrogant la base de données :/

Merci quand meme de ta réponse :)
Messages postés
15154
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
19 octobre 2021
99
Yop!
Je crois que tu mélanges des notions. Les variables de session ne sont pas liées aux bases de données. Ce n'est pas parce que tu as un champ "email" dans ta base que ce champ sera dans une variable de session...

La fonctions session_start() te permet d'accéder aux variables de session au sein du script. Il faut donc le faire le plus tôt possible (mais ce n'est pas obligatoire).
Ensuite, tu accèdes à ta base pour récupérer des infos. Si tu veux stocker des infos de ta base dans la session, genre le champ "email", il faut le faire explicitement: $_SESSION['email'] = $tonEmail.
Une fois que tu as fait cela, tu pourras récupérer l'email n'importe où dans la session.

J'espère que j'ai été clair et que cela te permettra d'avancer.
Sinon, tu sais où nous trouver!

@+

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
374
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
24 avril 2013

merci de ta réponse buno, mais quand tu dis $_SESSION['email'] = $tonEmail
le $tonEmail c'est quoi? je le prends ou? dans la base? et si oui comment? c'est là que je bloque :/
Messages postés
15154
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
19 octobre 2021
99
Ah ok....
Je pensais que ton souci était les variables de session, désolé. Ton souci est donc de récupérer la valeur d'un champ de ta base?
OK. Je ne suis pas un expert "base de données", et je ne connais pas la structure de ta base mais, en gros, à l'aide de SELECT, tu vas aller chercher une entrée qui contient ton champ "email". Genre, un truc comme ça:
SELECT iduser, login FROM taccess WHERE email='%s'


Sur cette page, il y a un bon exemple: exemple 1593

@+

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage