[PHP] Session détruite sans demande ?!

digival Messages postés 209 Statut Membre -  
digival Messages postés 209 Statut Membre -
Bonjour,

J'utilise une session sur toute les pages de mon site mais il y a une page où, lorsqu'on y va, la session se détruit et je suis sûr de ne pas avoir mis de session_unset ou destroy... j'y comprend rien.

Si quelqu'un a une idée de la raison du problème, qu'il me fasse signe ! :)
A voir également:

22 réponses

avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
C'est les register_globales qui posent problème.
Teste ce script pour comprendre le problème :
<?php
session_start();
$_SESSION['user'] = 'avion-f16';
$user = 'digival';
echo $_SESSION['user'];
?>
Tu verras apparaître 'digival' et pas 'avion-f16'.
Tu peux les désactiver en mettant la ligne "php_flag register_globals off" dans le .htaccess
1
avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
Je vais devoir sortir ma boule en cristal pour deviner le code ?
0
digival Messages postés 209 Statut Membre 1
 
Je ne pensais pas que c'était nécessaire mais je joint ici tout ce qui peut être utile si tu en as besoin :

<?php
session_start();
if( isset($_POST['objet']) ) {$_SESSION['objet'] = $_POST['objet'];}
?>

<?php // CONNEXION A LA BDD
mysql_connect("*", "*", "*");
mysql_select_db("*");
?>

<?php // Définition des variables 
$destinataire = '*'; 
$objet = 'Message de mon Site !';
$nom = $_POST['nom'];
$mail = $_POST['mail'];
?>

<?php // CRÉATION DU MAIL :
if( isset($_POST['send'] )  AND ( preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail) ) )
{
 
 // Définition de la variable $passage_ligne
 if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $destinataire))
 { $passage_ligne = "\r\n"; } 
 else
 { $passage_ligne = "\n"; }


 // 2. Définition du contenu 
 $message_html = '
  <html>
  <head>
  <title>'. $objet .'</title>
  </head>
  <body>
  <div>
  <p>'. $nom .' souhaiterait s\'inscrire sur mon site !</p>
  </div>
  </body>
  </html>
  ';
  
 $message_txt = 'Message au format texte...';

$boundary = "-----=".md5(rand());

 // 4. Création du header de l'e-mail
 $header = "From: \"*"<*@hotmail.fr>".$passage_ligne;
 $header.= "Reply-to: \"*\" <*@hotmail.fr>".$passage_ligne;
 $header.= "MIME-Version: 1.0".$passage_ligne;
 $header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundar\"".$passage_ligne;
 
 // ----- Création du message ----
   $message = $passage_ligne.$boundary.$passage_ligne;
 // 1. Ajout du message au format texte
 $message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
 $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
 $message.= $passage_ligne.$message_txt.$passage_ligne;
 //-------------------------------------------
   $message.= $passage_ligne."--".$boundary.$passage_ligne;
 // 2. Ajout du message au format HTML
 $message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
 $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
 $message.= $passage_ligne.$message_html.$passage_ligne;
 //-------------------------------------------
   $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
   $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
 //-----------------------------
 

  // Envoi de l'e-mail
  // Insertion de l'add-mail de l'envoyeur dans bdd
  mysql_query("UPDATE inscrits SET adresse='$mail' WHERE nom='$nom' ") or die(mysql_error());
  // Définition de l'état du tranfert

}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Mon site</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="../includes/style.css" />
</head>
<body>

(...)

</body>
</html>
0
avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
Bizarre ...
Es-tu hébergé chez 1&1 ?
Qu'elle est la version de PHP (crées une page contenant "<?php phpinfo(); ?>") ?
register_globals est-il activé (toujours avec phpinfo()) ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
digival Messages postés 209 Statut Membre 1
 
Je suis hébergé par Free,
La version actuelle de php est 4.4.3-dev et register_globals est bien activé...

INFO : Il y a une semaine même pas ça marchait et je n'ai pas touché à mon script depuis que ça marchait
0
digival Messages postés 209 Statut Membre 1
 
Ok super merci beaucoup !

Au fait quand tu dis
"Tu peux les désactiver en mettant la ligne "php_flag register_globals off" dans le .htaccess",
tu parles d'une page codée par moi-même ou d'un fichier de wamp ?
0
avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
C'est un fichier à créer toi-même sur Free (sur ton FTP) à la racine de ton site (là où tu as ta page index.php)
0
digival Messages postés 209 Statut Membre 1
 
Au fait, j'ai testé ton script et c'est bien avion-f16 qui est affiché :s
0
avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
Après avoir mis le .htaccess ?
0
digival Messages postés 209 Statut Membre 1
 
Ben justement nan...
0
avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
Ce n'est pas possible.
Si register_globals est activé, alors ça t'affichera 'digival' sinon 'avion-f16'.
Et plus haut, tu me dis : “et register_globals est bien activé”
0
digival Messages postés 209 Statut Membre 1
 
Ben je suis désolé mais j'ai bien vérifié dans les infos php, dont voici la ligne :
" register_globals On On " (avec le design en moins ^^)

Et voici le script du test que tu m'as demandé de coder
<?php session_start(); ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Mon Site</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>

<?php
$_SESSION['user'] = 'avion-f16';
$user = 'digival';
echo $_SESSION['user'];
?>

</body>
</html>


Je confirme que c'est avion-f16 qui est affiché :s
0
avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
Bizarre : je viens de tester sur mon serveur, et ça affiche bien "digival" avec register_globals sur On
0
digival Messages postés 209 Statut Membre 1
 
Alors là, j'avoue que je comprends rien :
j'ai ré-essayé pour la 3ème fois et là, magie, c'est bien digival qu'est affiché ! o0

Je suis sûr d'avoir bien lu les autres fois avion-f16, pourtant.
Peut-être que mon navigateur a vidé le cache automatiquement ou un autre truc du genre...

Bref, je sais ce qu'il me reste à faire, merci encore
A++
0
avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
Quand ton problème sera résolu, coche le bouton en haut.
Si tu as encore un problème avec ça, alors continue la discution.
0
digival Messages postés 209 Statut Membre 1
 
Nan en fait je savais pas comment créer un fichier .htaccess mais j'ai lu qu'il suffisait de le nommer comme ça ^^
0
digival Messages postés 209 Statut Membre 1
 
heu... ça marche pas :(

Voici ma page .htaccess

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Page .htaccess de mon Site</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>

<?php php_flag register_globals off ?>

</body>
</html>
0
Flachy Joe Messages postés 2303 Statut Membre 261
 
.htaccess est un fichier utilisé par le serveur Apache, il n'est pas envoyé au navigateur du client donc il n'a pas besoin de contenir autre chose que les lignes configurations.
Code du .htaccess :
php_flag register_globals off
0
avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
Tout est dit.
Le .htaccess n'a rien à voir avec le PHP, et il est impossible de l'afficher via le navigateur donc pas besoin du HTML.
Il ne peut donc contenir que les instructions qu'Apache doit suivre.
0
digival Messages postés 209 Statut Membre 1
 
Je ma demandais.. Existe-t-il un code pour forcer l'envoi de mail par la fonction mail(), étant hébergé par free ? Et ce, sans risque ?
0