PHP session instable chez free ?

Fermé
billyballoo Messages postés 1 Date d'inscription dimanche 1 octobre 2006 Statut Membre Dernière intervention 1 octobre 2006 - 1 oct. 2006 à 20:06
 king - 3 oct. 2006 à 00:47
Bonjour à tous,

J'ai longtemps chercher en vain une réponse à mes problèmes sur les forums. A bout d'idées (et de nerfs!), je me résouds à présenter mon cas...

J'essaie de faire un intranet pour mon association et je rencontre une grande instabilité sur l'utilisation des session en php.

J'utilise du php/mysql et suis gentillement hébergé par free.fr.

Ma première page comporte ce code html tout bête:
<form method="post" action="controle_login.php" name="formlog">
<table width="100%" class="invisible">
<tr>
<td align="center">
<table cellspacing="1" cellpadding="1" width="85%" border="1">
<tr>
<td align="center">
Bienvenue sur l'intranet de notre groupe !<br><br>
</td>
</tr>
<tr>
<td align="center">
<input type="text" name="identifiant">
</td>
</tr>
<tr>
<td align="center">Identification avec mot de passe
<input type="checkbox" name="pwd" value="O" onclick="javascript:check()"><br>
<input type="text" name="motdepasse">
</td>
</tr>
<tr>
<td align="center">
<input type="submit" value="valider">

(Ce n'est qu'une partie du code. Le javascript permet de rendre visible ou invisible le champ motdepasse et les balises sont correctement fermées).

Le second script permet de vérifier les infos et de déclarer la session :
<?
session_start();
//Connexion à la base
include("_connect.php");

//Vérification des données de l'utlisateur
if ($pwd=="O"){
$sqlselect1 = "SELECT 1 FROM prem_utilisateur WHERE identifiant ='$identifiant' AND motdepasse='$motdepasse'";
}else{
$sqlselect1 = "SELECT 1 FROM prem_utilisateur WHERE identifiant ='$identifiant' AND motdepasse is null";
}
$resselect1 = mysql_query($sqlselect1) or die (mysql_error());

//Si l'identifiant est introuvable dans la base, renvoyer la page d'identification
//Cela évite les mauvais plaisantins et permet de prévenir celui qui s'est planté dans son numéro d'adhérent
if (mysql_num_rows($resselect1)==0){
header("Location: index.html");
}else{
$_SESSION['s_util'] = $identifiant;
header("Location: accueil.php");
}
/*echo "test";
$utilisateur=$_SESSION['s_idlog'];
echo $utilisateur;
session_write_close();
include("_session.php");
echo $utilisateur*/;
?>
<html><body>
<a href='profile.php'>page</a>
</body></html>

Comme vous le voyez, je fais une redirection directe vers l'intranet lorsque le login est trouvé en base. Là, tout se passe bien puisque rien ne s'afiche (et si je fais afficher le pavé en commentaire et notamment ma variable $utilisateur, elle contient bien l'identifiant).

Le problème survient au second script. En effet, toutes mes pages php contiennent : include("_session.php"); tout en haut du code.

Voici ce code :
<?php
session_start();
//Connexion à la base
include("_connect.php");
# démarrage de la session
if(!(empty($_SESSION['s_util']))) {
$utilisateur=$_SESSION['s_util'];
}else{
echo "Le site rencontre des problèmes de sessions, veuillez revenir ultérieurement SVP.";
}
?>

Et là, 1 jour sur 2 à peu près, ma variable $utilisateur est correctement renseignée ou vide (et j'obtiens le message d'erreur sur les pb de sessions). (Alors que sur le script précédent, la session est correctement ouverte et contient bien ce que je veux).

Y a-t-il un problème connu d'instabilité des serveurs php chez free ? Ou bien ai-je commis une erreur que je ne vois pas ?

J'ai vérifié mon dossier sessions à la racine de mon espace free, il contient 2 fichiers sessions (après le second script) à chaque fois que les sessions ne fonctionnent plus sur mon site. Mon site tente-il de déclarer 2 sessions dont 1 vide ? Est-ce possible avec le même nom ?

En tous les cas, je suis sans réponse alors si quelqu'un a une idée, merci à lui de bien vouloir me filer un coup de main....

A bientôt j'espère....

Bill.
A voir également:

1 réponse

Il y en a un :-)
J'ai toujours eu des problèmes de connexion/déconnexion sur free avec mes forums.

Fait une recherche au sujet des forums phpBB, car ils proposent une correction pour free. Tu pourrais peut-être t'inspirer de ça ;-)
0