Ca fonctionne en local...c'est normal que je perde les sessions sur un hébergeur ?
Je suis entrain de vérifier les conditions de SESSION.
A priori je les ai partout
Sur
l'index (où l'on doit s'identifier...)
<?php require_once('includes/connexion.php'); ?>
<?php session_start();
// .../... suite du code HTML
?>
<?php // tester la présence de la variable 'login' dans la session
if (isset($_SESSION['login']) && !empty($_SESSION['login'])) {
echo '<span class="Style9"><b>Bienvenue ' . $_SESSION['prenom'] .' '. $_SESSION['nom'].'</b></span>';
// lecture de la variable de session 'login'
echo '<br /><br />';
echo '>> <a href="moncompte.php">Mon compte - mes cours</a><br /><br />';
echo '>> <a href="includes/deconnect.php">Déconnexion</a>';
} else {
// ../.. on arrive au formulaire
?>
<form action="includes/valid.php" method="post" name="form" id="form" onSubmit="showsubmit(this)">
<input type="hidden" name="redir" value="index.php">
<div class="hidden" id="login">
<table width="100%" border="0" cellpadding="2" cellspacing="0">
<tr>
<td width="116" height="19" valign="top" class="Style4"><div align="right">Login</div></td>
<td width="77" valign="top"><input name="login" type="text" class="form" id="login" size="15"></td>
</tr>
<tr>
<td height="19" valign="top" class="Style4"><div align="right">Mot de<br/> passe</div> </td>
<td valign="top"><input name="pass2" type="password" class="form" id="pass2" value="" size="15"></td>
</tr>
<tr>
<td height="13" colspan="2" valign="top"><div align="right"><a href="#" onClick="javascript:showsubmit(document.form);">Me connecter</a></div></td>
</tr>
</table></div></form>
<?php // affichage des erreurs
if(isset($_GET['erreur'])) {
echo '<p align=right><span class="Style12">Utilisateur inconnu,<br /> veuillez recommencer SVP</span></p>';
echo '<p align=right>>> <a href="pass.php">Mot de passe perdu ?</a></p>';
}
?>
</table>
<table width="249" border="0" cellpadding="0" cellspacing="0">
</td>
</tr>
<tr>
<td height="19" valign="top"><div align="right">>> <a href="inscription.php">Pas encore inscrit ?</a></div></td>
</tr>
</table>
</div>
<?php
}
?>
sur
valid.php où l'on fait les vérifs
<?php
session_start();
$dbhost="localhost";
$dblogin="root";
$dbpassword="";
$dbname="toto";
if (isset($_POST) && !empty($_POST['login']) &&!empty($_POST['pass2'])) { // premier test à faire, est-ce qu'un login est passé ? si non, pas la peine de faire d'autre controle, on passe direct à la fin
$login=htmlentities(addslashes($_POST['login']));
$pass=htmlentities($_POST['pass2']); // on stock dans $login pour simplifier l'écritude et la lisibilité
mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_selectdb($dbname);
$result=mysql_query("SELECT nom, prenom FROM membres WHERE login = '".mysql_real_escape_string($login)."' AND pass2 = '".mysql_real_escape_string($pass)."' "); // le test sur le mot de passe
if ($row=mysql_fetch_array($result)) { // s'il y a un résultat, c'est que le login (ou le couple login/pass) existe en base. L'utilisateur s'est donc correctement authentifié
$_SESSION['login'] = $login; // je mets ses infos en session
$_SESSION['nom'] = $row['nom'];
$_SESSION['prenom'] = $row['prenom'];
header('Location: ../index.php'); // et on le redirige directement vers la page sur laquelle il a le droit d'aller
exit(); // bon maintenant qu'il est parti, pas la peine d'aller plus loin
}
}
// si l'authentification n'a pas fonctionné (soit pace que $_POST['login'] est vide, soit parce qu'il n'y a pas eu de résultat en base) on arrive ici et on redirige l'utilisateur sur la page d'index avec la variable erreur égale à 1 pour faire afficher le message d'erreur
header("Location:../index.php?erreur=1");
?>
La page
moncompte.php
<?php require_once('includes/connexion.php'); ?>
<? //début de page.....
// initialisation
session_start() ;
if (isset($_POST['login'])) // on verifie que la variable existe
{
$login = htmlentities($_POST['login']); //on recupere les données du formulaire
$_SESSION['login'] = $login;
}
?>
La page
modifMembre.php
<?php require_once('includes/connexion.php'); ?>
<?
// initialisation
session_start() ;
//init des variables
if(!isset($_POST['nom'])) $nom=""; else $nom=$_POST['nom']; // penser à la protection des données !!!!!!!! htmlentitites...Etc
if(!isset($_POST['prenom'])) $prenom=""; else $prenom=$_POST['prenom'];
if(!isset($_POST['login'])) $login=""; else $login=$_POST['login'];
if(!isset($_POST['pass'])) $pass=""; else $pass=$_POST['pass'];
if(!isset($_POST['pass2'])) $pass2=""; else $pass2=$_POST['pass2'];
if(!isset($_POST['adresse'])) $adresse=""; else $adresse=$_POST['adresse']; /// etc...............
comme je débute...j'imagine qu'il y a une ENORME *ù*$^$ù!! mais je ne parviens pas à voir quoi.
Il est clair, qu'en serveur Free, je perds les infos de session lorsque je rafraichis la page moncompte, et ou que je souhaite modifier mes infos de compte...donc quand je suis redirigée vers modifMembres.php

donc je me demandais si ce n'est pas plutôt parce que c'est Free que ça débloque....style, paramétrages serveur pas identiques ou autres