Bonjour tout le monde,
Je suis nouveau sur le forum et en PHP, donc mon problème paraîtra peut être simpliste... mais moi, j'y perds mon PHP (euh... enfin le peu que j'ai appris!

).
Je suis tout au début de mon site web et je galère avec des variables de sessions qui disparaissent en cliquant sur un lien (quel qu'il soit!).
J'ai fait un fichier index.php qui utilise des includes pour le header, la partie <section> du site et le footer. Le partie <section> est dynamique et change en fonction du contexte.
J'en suis à la création d'un membre via une partie <aside> ajouter à la <section> principale. Je rentre les champs pour créer le membre, je valide et le fichier action_login.php traite le formulaire. Je vérifie les données et je les mets en variables $_SESSION. Il s'en suit d'un retour automatique vers index.php avec un "header('refresh:1, URL:...); exit();". J'y retrouve toutes mes infos via print_r (pas toujours en utilisant var_dump) et mes variables $_SESSION sont confirmés comme existant parce qu'on mon header switch pour faire apparaitre le bouton de déconnexion... Et là, c'est le drame!!! si j'appuie sur n'importe quel lien (ex: 'Acceuil' qui renvoie sur index.php qui vient juste de s'afficher correctement) y a tout qui disparait et print-r affiche --> Array()... et mon header switch pour revenir a son status initial.
PS: J'ai lu pas mal de post sur les forums, mais je n'arrive pas à trouver d'où ca vient!
J'ai vérifier que session_start(); se trouve sur toutes les pages en début de page (en fait, j'utilise @session_start(); pour eviter les warning à l'écran), j'ai aussi passé session.auto_start à 1 dans php_ini. J'autorise les cookies avec firefox, use_cookies = 1, use_only_cookies = 1 et cookie_lifetime = 0. session_id() renvoie toujours le même code sur toutes les pages affichées et ne disparait pas!
PS2: j'ai essayé d'utiliser des variables globales au lieu de $_SESSION (même chose, tout est correctement mis dans les variables vérifier avec echo, mais tout disparait comme les infos sessions). J'ai aussi vérifié que les variables ne s’écrasaient pas mutuellement...
Bref, je commence à être à cours d'idées... et ce n'est que le début du site!!!

(
Voilà les codes que j'utilise:
index.php:
[code]<?php
@session_start();
echo session_id();
echo '<br />';
global $bdd;
echo $bdd;
if (!isset($bdd)){
include_once('modele/connexion_sql.php');
}
echo '</pre>';
echo 'index.php<br/>';
if (isset($_SESSION)) {print_r($_SESSION);}
echo '</pre>';
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta content="Mayeshh" name="author">
<meta content="Pictures website." name="description"></head>
<meta name="viewport" content="width=device-width" />
<link rel="stylesheet" href="style.css" />
<!--[if lte IE 7]>
<link rel="stylesheet" href="style_ie.css" />
<![endif]-->
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<title>Pictures website - THE web site</title>
</head>
<!--[if IE 6 ]><body class="ie6 old_ie"><![endif]-->
<!--[if IE 7 ]><body class="ie7 old_ie"><![endif]-->
<!--[if IE 8 ]><body class="ie8"><![endif]-->
<!--[if IE 9 ]><body class="ie9"><![endif]-->
<!--[if !IE]><!--><body><!--<![endif]-->
<div id="bloc_page">
<!-- The header -->
<header>
<?php include("vue/header.php"); ?>
</header>
<!-- The body -->
<section>
<?php
if (isset($_GET['page'])){
include ('vue/' . htmlspecialchars($_GET['page']) . '.php');
} else if (!empty($_SESSION['page'])){
include($_SESSION['page']);
} else if (!empty($_SESSION['connecte'])){
echo 'Tjs co ^^!';
} else {
echo '</pre>';
echo 'Vue normale \'Home\'<br/>';
if (!empty($_SESSION)) {print_r($_SESSION);}
echo '</pre>';
}
?>
</section>
<!-- The footer -->
<footer>
<?php include("vue/footer.php"); ?>
</footer>
</div>
</body>
</html>[/code]
header.php:
[code]<?php
<div id="section_langue">
<a href="#" title="Version francaise"><img src="images/fr.png" alt="Francais" /></a> |
<a href="#" title="Deutsche version"><img src="images/de.png" alt="Deutsch" /></a> |
<a href="#" title="English version"><img src="images/en.png" alt="English" /></a>
</div>
<div id="menu">
<nav>
<ul>
<li><a href="index.php"><img id="menu1" title="Home" src="" alt="" /></a></li>
<li><a href="galerie1.php"><img id="menu2" title="galerie1" src="" alt="" ></a></li>
<li><a href="galerie2.php"><img id="menu3" title="galerie2" src="" alt="" ></a></li>
<li><a href="galerie3.php"><img id="menu4" title="galerie3" src="" alt="" ></a></li>
<li><a href="other.php"><img id="menu5" title="Other" src="" alt="" ></a></li>
<li><a href="forum.php"><img id="menu6" title="Forum" src="" alt="" ></a></li>
<li><a href="message.php"><img id="menu7" title="Message" src="" alt="" ></a></li>
<li><a href="profil.php"><img id="menu8" title="Profile" src="" alt="" ></a></li>
</ul>
</nav>
</div>
<div id="login_part">
<table id="login_part_table">
<tr>
<?php
if (isset($_SESSION['connecte']) and $_SESSION['connecte'] == 1){
?>
<td id="update">
<p>
<label for="update" class="update"><?php if (!empty($_SESSION['update'])) {echo $_SESSION['update'];} ?></label>
</p>
</td>
<td id="deco">
<form method="get" action="<?php $_SESSION = array(); session_destroy(); ?>">
<label for="deconnexion"></label><input class="bouton_deco" type="submit" id="bouton_deco" value="Deconnexion" title="Deconnexion" />
</form>
</td>
<?php
} else {
?>
<td id="subscribe">
<p>
<label for="sub"><a href="index.php?page=login" class="bouton_subscribe" title="Inscription" id="sub">S'inscrire</a></label>
</p>
</td>
<td id="login">
<form method="post" action="controleur/login.php">
<p>
<label for="username">Username:</label><input class="post" type="text" id="username" />
<label for="password">Password:</label><input class="post" type="password" id="password" />
<label for="autologin">Conn. auto.:</label><input type="checkbox" id="autologin" />
<label for="connexion"></label><input class="bouton_valid" type="submit" id="bouton_valid" value="Connexion" title="Connexion" />
</p>
</form>
</td>
<?php
}
?>
</tr>
</table>
</div> [/code]
login.php:
[code]<?php
<aside>
<div id="login_form">
<table class="login_form_table">
<form method="post" action="modele/action_login.php">
<th><label class="label_header_login_form">Information - login</label><br /></th>
<tr><td><br /><label class="label_login_form" for="username">Username:</label><br /></td></tr>
<tr><td><input class="text_login_form" type="text" id="username" name="username" value="<?php if (isset($_SESSION['username'])) {echo htmlspecialchars($_SESSION['username']);} ?>" ><br /><br /></td></tr>
<tr><td><label class="label_login_form" for="1st_password">Password:</label><br /></td></tr>
<tr><td><input class="text_login_form" type="password" id="1st_password" name="1st_password" /><br /><br /></td></tr>
<tr><td><label class="label_login_form" for="2nd_password">Re-enter Password:</label><br /></td></tr>
<tr><td><input class="text_login_form" type="password" id="2nd_password" name="2nd_password" /><br /><br /></td></tr>
<tr><td><label class="label_login_form" for="email">Email:</label><br /></td></tr>
<tr><td><input class="text_login_form" type="text" id="email" name="email" value="<?php if (isset($_SESSION['email'])) {echo htmlspecialchars($_SESSION['email']);} ?>" ><br /></td></tr>
<tr><td id="error_message"><label><?php if (isset($_SESSION['error_message'])) {echo htmlspecialchars($_SESSION['error_message']);} ?></label><br /></td></tr>
<tr><td><input class="bouton_valid" type="submit" id="valid_login" value="Valider" title="Valider votre login"/><br /><br /></td></tr>
</form>
</table>
</div>
</aside>[/code]
et finalement action_login.php:
[code]<?php
@session_start();
echo 'Init --- Action_login<br/>';
if (isset($_SESSION)) {print_r($_SESSION);}
echo '</pre>';
if (!empty($_POST['username']) and !empty($_POST['1st_password']) and !empty($_POST['2nd_password']) and !empty($_POST['email'])){
if (preg_match("#^[A-Za-z0-9._-]+$#", $_POST['username'])){
if ($_POST['1st_password'] == $_POST['2nd_password']){
if (preg_match("#^[A-Za-z0-9._-]+$#", $_POST['1st_password'])){
if (preg_match("#^[A-Za-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email'])){
echo 'Verifier la présence du menbre avec DB, ms sinon la requete peut etre lancee!<br />';
$_SESSION['session'] = session_id();
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['1st_password'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['connecte'] = '1';
$_SESSION['error_message'] = '';
$_SESSION['update'] = 'Inscription validated!!! Thanks';
$_SESSION['page'] = '';
echo '</pre>';
echo 'Action_login - Ok<br/>';
if (isset($_SESSION)) {print_r($_SESSION);}
echo '</pre>';
header('Refresh:1; URL=http://localhost/Pictures%20website/index.php');
exit();
} else {
$_SESSION['session'] = session_id();
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['1st_password'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['connecte'] = '0';
$_SESSION['error_message'] = 'Email address invalid';
$_SESSION['update'] = '';
$_SESSION['page'] = 'vue/login.php';
echo '</pre>';
echo 'Action_login - crash<br/>';
if (isset($_SESSION)) {print_r($_SESSION);}
echo '</pre>';
header('Refresh:1; URL=http://localhost/Pictures%20website/index.php?page=login');
exit();
}
} else {
echo $_SESSION['error_message'] = 'Password invalid!<br />';
header('Location: ../index.php?page=login');
}
} else {
$error_message = 'Passwords not identical!';
$page = "vue/login.php";
header('Location: ../index.php');
}
} else {
echo $_SESSION['error_message'] = 'Username invalid!';
header('Location: ../index.php?page=login');
}
} else {
echo $_SESSION['error_message'] = 'One (or all) field()s) empty!';
header('Location: ../index.php?page=login');
} [/code]
Merci beaucoup pour votre aide...