Variables de session, problème sur site distant

Eléphant du PHP | 294 Messages

01 avr. 2006, 09:37

Bonjour, quelqun pourrait-il m'expliquer pourquoi mes variables de session ne fonctionnent plus sur mon site distant (hebergement OVH)?

Mammouth du PHP | 19672 Messages

01 avr. 2006, 11:10

Modération : Gico, ce n'est pourtant pas ton premier message ici, tu devrais savoir que le forum FAQ est réservé à des sujets sur des questions fréquemment posées auquelles on apporte une réponse : on y pose pas de question.

Sujet déplacé.


Maintenant, pour ce qui est de ta question : doit-on comprendre que ça fonctionnait normalement jusqu'à recemment ? As-tu dans ce cas modifié quelque chose dans ton code susceptible de modifier la gestion de session ? Sinon, OVH a peut-être mis à jour sa version de PHP et certains paramètres de configuration auraient été modifiés : il faudrait regarder dans le phpinfo() ce qui concerne les sessions et voir s'il n'y aurait pas une incompatibilité avec ton application...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 294 Messages

01 avr. 2006, 12:53

Désolé pour le mauvais positionnement de ma demande, une erreur de precipitation ...
Sinon j'ai identifié le problème sinon que d'avoir reussi à l'expliquer. Lorsque j'arrive sur une certaine page, celle de mon panier , et que j'en sort ensuite, l'url se complete d'un truc du genre PHPSESSID=ae8e67b90f7596357f33557e0ed5bf2b, je ne sais pas d'ou ça vient, et aprés plus possible de recuperer ou d'ecrire des variables de session.

Mammouth du PHP | 19672 Messages

01 avr. 2006, 13:06

En principe, l'identifiant de session s'ajoute à l'URL lorsque les coockies sont refusés coté client et à condition que le php.ini soit configuré pour ça. Si tu as un lien vers le php.ini de ton site, ça aiderait à détecter les paramètres à ajuster... à condition que tu sois sur un dédié où tu peux configurer le php.ini selon tes propres paramètres. Si tu es sur un mutualisé, tu peux oublier ça.

Ce qui n'est pas normal en revanche, c'est de ne plus pouvoir créer de variables de session: l'identifiant indique que la session existe et par conséquent, tu ne devrais pas avoir cette difficulté... alors je vois pas trop. Comment gères-tu les sessions ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 294 Messages

01 avr. 2006, 13:16

je gère pas...je touche à rien, sur OVh j'ai jamais eu de probleme, d'ailleurs les variables de session fonctionnent jusqu'au passage sur cette page, ou plutot jusqu'au moment ou j'en sort, ce qui comme je l'ai dit, semble les desactiver. Je doit reconnaitre que je maitrise mal ce qui se passe du coté des paramètres d'autant que ce problème ne m'est jamais arrivé. Je ne vois rien dans mon code qui puisse ne serais-ce que rajouter ces variables a l'url

Mammouth du PHP | 19672 Messages

01 avr. 2006, 13:19

il manquerait pas un session_start() sur la page en question ou une fonction de session non conforme ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 294 Messages

01 avr. 2006, 13:23

Voila le code php
<?php require_once('Connections/maelly.php'); 

session_start();

if(!isset($_POST['ajoutPanier'])) $ajoutPanier="";//init de ajoutPanier si non déclaré
else  $ajoutPanier=$_POST['ajoutPanier']; 
if ((!isset($_SESSION['liste']))&&($ajoutPanier=="")) $liste[]=array("VIDE",1,0,0);//init de liste si VIDE
if (isset($_SESSION['liste'])) $liste=$_SESSION['liste'];//recup de la liste de la session
if(!isset($_GET['suppPanier'])) $suppPanier="";//init de suppPanier si non déclaré
else $suppPanier=$_GET['suppPanier'];

$maxRows_Art = 10;
$pageNum_Art = 0;
if (isset($_GET['pageNum_Art'])) {
  $pageNum_Art = $_GET['pageNum_Art'];
}
$startRow_Art = $pageNum_Art * $maxRows_Art;

$colartircle_Art = "0";
if (isset($_POST['VARarticle'])) {
  $colartircle_Art = (get_magic_quotes_gpc()) ? $_POST['VARarticle'] : addslashes($_POST['VARarticle']);
}
mysql_select_db($database_maelly, $maelly);
$query_Art = sprintf("SELECT * FROM articles WHERE articles.articleID=%s", $colartircle_Art);
$query_limit_Art = sprintf("%s LIMIT %d, %d", $query_Art, $startRow_Art, $maxRows_Art);
$Art = mysql_query($query_limit_Art, $maelly) or die(mysql_error());
$row_Art = mysql_fetch_assoc($Art);

if (isset($_GET['totalRows_Art'])) {
  $totalRows_Art = $_GET['totalRows_Art'];
} else {
  $all_Art = mysql_query($query_Art);
  $totalRows_Art = mysql_num_rows($all_Art);
}
$totalPages_Art = ceil($totalRows_Art/$maxRows_Art)-1;

// verifie la présence d'un atricle dans le panier
$reference=$_POST['VARarticle'];

function verif_panier($ref_article)
{
    $present = false;
    if(is_array($_SESSION['liste'][0]))
    {
        if(array_search($ref_article,$_SESSION['liste'][0]) != false)
        {
            $present = true;
        }
    }
    return $present;
}

//----------------------------------------------------AJOUT PANIER cree liste et verfie presence
if ($ajoutPanier=="AJOUTER" && $present == false)
{ 
$reference=$_POST['VARarticle'];

//questions
$question1=$_POST['question1'];
$question2=$_POST['question2'];
$voyance=$_POST['questionVoyance'];

//	
$nb="1";
$prixUnit= $row_Art['prixTTC'];
$prixHT=$row_Art['prixHT'];
$totalarticle=$nb*$prixUnit;
$type=$row_Art['type'];
$liste[]=array($reference,$nb,$prixUnit,$totalarticle,$prixHT,$question1,$question2,$voyance,$type);
$_SESSION['liste'] = array();
$_SESSION['liste']=$liste;

}
//----------------------------------------------------SUPP PANIER
if ($suppPanier=="SUPPRIMER")
{
	$article=$_GET['SupArticle'];
	for ($i=0;$i<count($liste);$i++)
		{
		if($article==$i)
			array_splice($liste,$i,1);
		//suppression de l'article
		}
	$_SESSION['liste']=$liste;//mAj de la liste
}
//------------ LIVRAISON =OK et au moins un produits a envoyer

if ($_POST['livraison']=="ok" && $_POST['VARproduits']>0)
{
	//if(!isset($_POST['action'])) 
	//$_SESSION['action']="ENREGISTRER";//mémorise l'action necessaire pour la page commande.
	$VARtotal= $_POST['total'];
	$VARtva= $_POST['tva'];
	$commande[]=array($VARtotal,$VARtva);
	$_SESSION['commande']=array();
	$_SESSION['commande']=$commande;
	header("Location:livraison_caddie.php");
}
//------------ LIVRAISON =OK et 0 produit a envoyer

if ($_POST['livraison']=="ok" && $_POST['VARproduits']==0)
{
	//if(!isset($_POST['action'])) 
	//$_SESSION['action']="ENREGISTRER";//mémorise l'action necessaire pour la page commande.
	$VARtotal= $_POST['total'];
	$VARtva= $_POST['tva'];
	$commande[]=array($VARtotal,$VARtva);
	$_SESSION['commande']=array();
	$_SESSION['commande']=$commande;
	header("Location:commande.php?livraison=ok");
}

?>

Mammouth du PHP | 19672 Messages

01 avr. 2006, 13:40

Ok, première chose, session_start() doit être positionné avant toute autre chose, modifie comme ceci:
<?php
session_start();
require_once('Connections/maelly.php');
//...
Et refais un test.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 294 Messages

01 avr. 2006, 13:45

ok, j'ai modifié, mais ça ne resout pas le probleme...

Mammouth du PHP | 19672 Messages

01 avr. 2006, 15:00

C'est alors peut-être un problème d'url qui pointe vers cette page sans le "www." en début d'adresse ou quelque chose du genre : je vois pas trop :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: