Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 16/09/2012, 19h53   #1
rombautsdidier
Invité de passage
 
Homme Didier Rombauts
Technicien maintenance
Inscription : mars 2012
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme Didier Rombauts
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Technicien maintenance
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : mars 2012
Messages : 3
Points : 0
Points : 0
Par défaut 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
rombautsdidier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2012, 17h09   #2
rombautsdidier
Invité de passage
 
Homme Didier Rombauts
Technicien maintenance
Inscription : mars 2012
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme Didier Rombauts
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Technicien maintenance
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : mars 2012
Messages : 3
Points : 0
Points : 0
Personne?
rombautsdidier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2012, 17h30   #3
gene69
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 1 626
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 1 626
Points : 1 992
Points : 1 992
essaie de voir si tu ne dois pas crée un session_path un répertoire pour stocker les sessions sur lequel le démon php a des droits d'écriture comme chez free...

http://php.net/manual/en/function.session-save-path.php
__________________
PHP fait nativement la validation d'adresse électronique .
Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.
Soyez moderne: mysqli_connect() or throw Exception(mysqli_connect_error());

PHP: un problème ? décrivez le avec ceci.

Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2012, 20h29   #4
rombautsdidier
Invité de passage
 
Homme Didier Rombauts
Technicien maintenance
Inscription : mars 2012
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme Didier Rombauts
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Technicien maintenance
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : mars 2012
Messages : 3
Points : 0
Points : 0
Pourtant, quand je tente la connexion en local (avec MAMP sous OSX), 3 fichiers sont créés à chaque tentative de connexion. 2 vides et un contenant ceci:

myusername|s:3:"didier";login_user|R:1;user_id|s:1:"1";

J'aimerai d'abord pouvoir l'utiliser en local...

Une idée?
rombautsdidier est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h57.


 
 
 
 
Partenaires

Hébergement Web