Pb de sessions avec php

Résolu
uiui69 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -  
uiui69 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je veux créer un site avec utilisation des sessions. Tout fonctionne si ce n'est que les variables de sessions ne sont pas transmises sur les autres pages lorsqu'on clique sur les liens, même si on reclique sur le lien de la page sur laquelle on est (ce qui devrait être le cas non ?). Je précise que je travaille en local (wamp). J'ai tout essayé et j'ai pensé au fichier php.ini

Voici le code de ma page index :
<?php
include('sessionstart.php');
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
<html>
<head>
<title>Mon site</title>
<link rel="stylesheet" type="text/css" href="attributs.css">
<SCRIPT LANGUAGE="JavaScript">
function nouvellefenetre() {
mafenetre =
window.open("inscription.php","MyPopupWindow","resizable=no,menubar=no,status=no,scrollbars=n­o,menubar=no, width=400, height=300");
}
</SCRIPT>
</head>

<body>
<center>
<div id="ensemble">

<!-- ///////////////////////////////////////////////// Haut ///////////////////////////////////////////////////////////// -->
<?php include('haut.php'); ?>

<!-- ///////////////////////////////////////////////// Milieu ///////////////////////////////////////////////////////////// -->
<div id="milieu">
<div id="gauche">
<?php include('cadre_login.php'); ?>
</div>
<div id="centre">
<h5>Bienvenue sur mon site</h5>
</div>
<div id="droite">
</div>
</div>

<!-- ///////////////////////////////////////////////// Bas ///////////////////////////////////////////////////////////// -->
<?php include('bas.php'); ?>
</div>
</center>
</body>
</html>


Et voici sessionstart.php
<?php
// On démarre la session
session_start();
// deconnexion est la variable transmise en GET quand on clique sur le lien deconnexion
if (isset ($_GET['deconnexion']))
{
$deconnexion=$_GET['deconnexion'];
if ($deconnexion='true')
{
$_SESSION = array();

// Destruction de la session
session_destroy();
}}
?>


Et cadre_login.php
<div id="cadres">
<div id="bloccadres">
<p class="login">
<?php
// On met dans la variable adresse l'adresse de la page courante de facon à ce que la connexion puisse se faire depuis n'importe quelle page
$adresse=$_SERVER['PHP_SELF'];

//Connexion a la bdd
mysql_connect("localhost", "root", "");
mysql_select_db("test"); //base

if (isset($_POST['login']) AND isset($_POST['password']))
{
$login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
$password1 = mysql_real_escape_string(htmlspecialchars($_POST['password']));

// Recherche du login et verification du password
$reponse = mysql_query('SELECT * FROM utilisateurs WHERE login="'.$login.'"');
$donnees = mysql_fetch_array($reponse);
$password2= $donnees['password'];

if ($password1 == $password2)
{
$etat='connecte';
// Ecriture d'une nouvelle valeur dans le tableau de session
$_SESSION['login'] = $login;
$_SESSION['etat'] = $etat;
}
else
{
$etat='erreur';
}}
else if (isset($_SESSION['etat']))
{
$etat=$_SESSION['etat'];
}
else
{
$etat='deconnecte';
}
//C'est pour voir si ca marche (et ca marche pas)
echo $etat;

if ($etat!='connecte')
{ ?>
<!-- le lien est fait vers la page courante grace à la variable adresse -->
<form method="post" action="<?php echo $adresse; ?>?deconnexion=false">
<b>Se connecter</b><br>
<?php if ($etat=='erreur')
{ ?>
<span class="rouge">
Login ou mot de passe incorrect.</span><br> <?php } ?>
Login <input type="text" name="login" size="14" class="zone_texte"><br>
Pass <input type="password" name="password" size="13" class="zone_texte">
<input type="submit" name="submit" value="OK" class="zone_texte"><br><br>
<a href="javascript:nouvellefenetre()" class="lien">S'inscrire</a>
</form>
<?php }
else
{ echo $_SESSION['login'] ?>
,<br>vous êtes connecté.<br><br>
<a href="<?php echo $adresse; ?>?deconnexion=true" class="lien">Se déconnecter</a><br><br>
<?php }
mysql_close();?>
</p>
</div>
</div>


Merci de votre aide...

1 réponse

toto
 
Bonjour

if ($deconnexion='true')

C'est une affectation(=), pas une comparaison (==) que tu fais -> tu fais toujours une déconnexion
D'ailleurs, comparer un booleen à true est absurde (tu obtiens TOUJOURS la valeur du booleen)
écris tout simplement
if ($deconnexion)
0
uiui69 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   11
 
Un immense merci.
J'avais fait cette erreur ailleurs mais je n'avais pas vu celle-ci.C'est pourtant pas faute d'avoir cherché.
Donc merci encore...
0