Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité de passage
    Homme Profil pro Didier Rombauts
    Technicien maintenance
    Inscrit en
    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

  2. #2
    Invité de passage
    Homme Profil pro Didier Rombauts
    Technicien maintenance
    Inscrit en
    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

    Personne?

  3. #3
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    1 634
    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 634
    Points : 2 000
    Points
    2 000

    Par défaut

    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!

  4. #4
    Invité de passage
    Homme Profil pro Didier Rombauts
    Technicien maintenance
    Inscrit en
    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

    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?

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •