Variables de session

  • Auteur de la discussion Auteur de la discussion sim100
  • Date de début Date de début
Bonjour

J'ai un fichier index.php avec un formulaire
login qui renvoie la variable username
et password qui renvoie la variable password

Donc après j'arrive dans mon fichier admin
où je j'ouvre une session pour y stocker le $username et $password

Code:
session_start();
session_register("username1");
session_register("password1");

Bref après j'ai un problème pour me connecter et me déconnecter!
Est-ce parceque j'utilise 2 fichier index et admin! Ne faudrait-il pas que j'en ai qu'un?

Quelqu'un a t-il un exemple?

Merci beaucoup
 
>> Bref après j'ai un problème pour me connecter et me déconnecter!


"un probleme" n est pas assez explicite pour t aider. il va falloir nous donner ton probleme (les variables sont bien en session ? elles disparaiisent ? etc...)
 
pour vérifier tout sa, quand tu code, pense a mettre régulièrement des echo, moi c'est j'en met partout pour vérifier, et sa revele parfois bien des choses!
 
oui, moi j'utilise ca :

<?php if (DEBUG_MODE):?>
<pre style="margin-top: 1ex; padding: 1ex; border: 1px solid red;text-align: left;">
DEBUG INFOS :
<?php var_dump(get_defined_vars());?>
</pre>
<?php endif;?>

en bas de mes pages, quand tu debug tu defini la constante DEBUG_MODE a TRUE, et ca t'affiche toutes les variables definies dans ta page, ca aide aussi !
 
En fait

En fait ça ne marche âs du tout avec mon hébergeur SIVIT.

Quand au serveur local
je peux me logger c'est bon.
Mais quand me click sur deconnecter je retourne sur la page accueil et impossible de me reconnecter. ou de temps en temps ça marche. Comme si la session ne se fermait pas ou mal!

Si quelqu'un a un exemple de code qui marche bien!

En attendant je vais essayer de débugguer l'affaire

Merci bien
 
lorsque tu crée ou détruit une session, fais tu un header("location: tapage.ext") ou reste tu sur le page ou tu crée/ détruit la session ?
 
deja je te deconseille d'utiliser session_register() (cf doc php)

je te conseille de faire toutes tes manipulations de session avec $_SESSION['variable']

et pour virer une variable de la session :

unset($_SESSION['variable']);
 
oui

Je reste sur mes pages

En fait dois-je créer la session sur mes deux pages index et admin
ou juste sur admin?

je pense que j'ai un gros problème de structure

Merci
 
session_start() doit ete present sur toutes tes pages sécurisés (compte client ou administration)

lorsque tu crée ou detruit ta session, fais une redirection par header() pour etre sur, et pour ce qui est de session_register(), tu es resté au php3 :-) comme dit fbparis, c est $_SESSION['variable'] qu'il faut utiliser maintenant :-)
 
merci

ca veut dire que
session_register() est pareil que $_SESSION['variable'] ?



fais une redirection par header()
Comment ça :oops:

C'est quoi la commande?

Merci
 
exemple vite fait :

session_start();
$_SESSION['client']=$_POST['login'];
header("location: index.php?message=identification_reussi");

avec dans ta page index

if ($_GET[message]=='identification_reussi' echo "Bonjour ".$_SESSION['login'].", vous êtes maintenant identifié";

c est plus comprehensible ?

ps : ce post ne sert que d exemple pour voir les différentes commandes, là j identifie n importe qui sans contrôle :-)
 
je craque

En fait voila mon code
Dans le fichier index ou j'ai le formulaire de login:

Code:
session_start();

<form name="form2" method="post" action="admin.php?menu=welcome">
                    <table width="100%" border="0" cellspacing="2" cellpadding="0" class="text10">
                      <tr> 
                        <td align="right"><? echo USERNAME; ?></td>
                        <td align="left"><input type="text" name="username1"></td>
                      </tr>
                      <tr> 
                        <td align="right"><? echo PASSWORD; ?></td>
                        <td align="left"><input type="text" name="password1"></td>
                      </tr>
                      <tr> 
                        <td align="center">&nbsp;</td>
                        <td align="left"><input type="submit" name="adminaccess" value="<? echo CONNECTION; ?>"></td>
                      </tr>
                    </table>
                  </form>

Voila les variables passées sont username1 et password1

Donc quand le gars à rentré son login et mot de passe, ça va dans le fichier admin.php qui contient en gros

Code:
session_start();
session_register(username1);
session_register(password1);

include ('_connexion.php'); //pour accès à la base de donnée

if ( ($_SESSION["username1"]!="") and ($_SESSION["password1"]!="") )
	{
	$query="SELECT * FROM admin WHERE blogname='" . $_SESSION["username1"] . "'";
	$res_connection=@mysql_query($query,$db);
	if (@mysql_num_rows($res_connection)!=0)
		{
		$list_connection=mysql_fetch_row($res_connection);
		if ( ($list_connection[2]==$_SESSION["password1"]) )
			{
etc....

Voila tout simple quoi mais ça marche sans les variables de session, mais quand je les mets ça ne marche pas!

Si quelqu'un a une idée :cry:

Je craque

Merci en tout cas
 
bingo, tu met ta variable en session avec session_register() et t essaye d y acceder sans changer de page. tu écoutes ce que je dis ? :-)
 
Ouaiiiiii

c'est bon j'ai réussi

en fait c'est ça qui me manquait

echo $_SESSION["username1"] = $username1;
echo $_SESSION["password1"] = $password1;


ca marche pas avec
session_register()

C'etait tout simple en fait :D

MERCI à tous pour votre aide.

10 heures de boulot juste pour ça :roll:
Mais maintenant mon script de création de blog est nickel :P
 
Voici le fichier appelé par ton submit qui crée une session et qui vérifie ton accès. Ensuite tous les fichiers du dossier que tu veux protéger le seront à condition de vérifier si la var accès_ok existe:

Code:
<?php
session_start(); // démarrage de la session                                                                                                  
$login = $_POST['request_login'];
$password = $_POST['request_password'];
$host = "localhost";
$user = "toto";
$pass = "my_pass";

// on vérifie si on est passé par le formulaire

if (isset($login) && isset($password))                                                 
   {
      // connexion à la base sql
      mysql_connect($host,$user,$pass);                                                       
      // On vérifie si "access" est égal à "ok" dans la base
      // on regarde à l'endroit des login et password
      $req = mysql_db_query("ma_base", "select access from ma_tableacces where login = '$login' and password = '$password'"); 
      // si le login et le password ne sont pas trouvés, on arrète le script
      $result = mysql_fetch_object($req) or die("Login ou password incorrect !");           
      // on met l'access dans une variable $access
      $access = $result->access;
      // On vérifie la valeur de la variable $access
      if ($access != "ok")                                                               
      {
         echo "Compte désactivé !";
         // On arrète le script
         exit();                                                                           
   }
   else
   {
      // si on a passé toutes les étapes, on enregistre la variable session "entry_ok"
      session_register("entry_ok");
   }
// on ferme la connexion mysql
mysql_close();                                                               
}

ensuite chaque page appelée protégée par la session doit commencer par ce code:

Code:
<?php
session_start();
if (!session_is_registered("access_ok"))                        // si la variable n'est pas enregistrée...
{
   echo"Session expirée ou invalide !";
    // ici tu rediriges où tu veux 
   exit();
}
// sinon l'accès est ok et tu poursuis ton code ici ->
bla bla bla (ta page)
?>
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut