Session non fonctionnelle entre 2 hébergements en php 5.2.17
Bonjour à tous,
Je développe un petit ERP en PHP pour gérer la compatibilité d'une petite entreprise.
Tout fonctionne très bien mais depuis le changement de mon ordinateur (passage d'un Mac Pro à un Macbook Air), je n'arrive plus à faire fonctionner mon application via MAMP.
Je l'ai donc installé sur un hébergement (chez Infomaniak) d'un ami qui la teste, et là, pas de problèmes. Ensuite, j'ai installé l'application chez un autre hébergement (Gandi, simple hosting) et bingo, cela ne fonctionne pas non plus.
J'ai soupçonné dans un premier temps la version PHP utilisée par les hébergeurs. Infomaniak est en 5.2.17, comme la version utilisée sous MAMP, alors que Gandi simple host fonctionne sous 5.4.4-2.
Le problème se situe au niveau du login dans mon application. J'ai structuré comme suit:
Un fichier login.php ouvre la base de données et exécute la fonction session_start();
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| if($_SERVER["REQUEST_METHOD"] == "POST")
{
// username and password sent from Form
$myusername=$_POST['username'];
$mypassword=md5($_POST['password']);
$sql="SELECT * FROM gc_users WHERE code='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
$user_id=$row['id'];
$countrow=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($countrow==1)
{
session_register("myusername");
$_SESSION['login_user']=$myusername;
$_SESSION['user_id']=$user_id;
redirect("modules/home/home_managment.php");
}
else
{
echo "Votre code utilisateur ou votre mot de passe est invalide";
}
} |
Quand l'utilisateur est connu, il y a donc une redirection vers une page home_managment.php
Cette page construit la page html:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <?php
// Load general screen elements
include("../../header.php");
// Call specific screen elements for cash journal
include("home_subnav.php");
// Load general screen elements
include("../../nav.php");
?>
<div id="contentfull">
<p align="center"><img src="../../../images/home.png"></p>
</div>
<?php
// Call footer element
include("../../footer.php");
?> |
Et c'est dans le fichier header.php que cela se situe
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| session_start();
$user_check=$_SESSION['login_user'];
$ses_sql=mysql_query("SELECT j.code, j.lastname, j.firstname, j.id, j.conto, j.bic, j.car, j.cv, j.co2, j.fuelid, s.label FROM gc_users as j, gc_fueltypes as s WHERE code='$user_check' AND (j.fuelid=s.id)");
$row=mysql_fetch_array($ses_sql);
$user_loginid=$row['id'];
$login_session=$row['code'];
$lastname=$row['lastname'];
$firstname=$row['firstname'];
$conto=$row['conto'];
$bic=$row['bic'];
$car=$row['car'];
$cv=$row['cv'];
$co2=$row['co2'];
$fuel=$row['label'];
if(!isset($login_session))
{
redirect("../../login.php");
}?> |
Je ne pense pas que cela soit un problème de programmation car cela fonctionne chez Infomaniak, surtout que j'utilise la même version de PHP en local qu'infomaniak.
Quels sont les paramètres que je dois comparer entre les différentes versions avec le phpinfo()?
Quand je regarde les différences entre les deux, il n'y a que 2 paramètres différents:
Registered serializer handlers: php php_binary wddx chez infomaniak
Registered serializer handlers: php php_binary sur MAMP.
Je vous remercie d'avance pour vos réponses