djidji

Inscris le 20/05/2008 à 10:15
  • Signature
    djidji
  • Nombre de sujets
    1
  • Nombre de messages
    5
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses derniers messages sur les forums

djidji
le 22/05/2008 à 14:37
variable de session qui disparait
Nouveau rebondissement dans l'affaire de la variable disparue...

Il semblerais que rien ne soit sauvegardé si jamais ma variable de session (celle qui disparait) venait à se trouver avant les autres...

Je m'explique :
J'ai vérifié si ce n'était pas un problème du style je peux sauvegarder qu'une seule variable...
J'ai donc crée une variable que nous appellerons pour les besoins de l'enquête "$_SESSION['alacon']" que nous réduirons par son surnom alacon.

Cette variable alacon est définie bien avant les autres, si je lui met un contenu quelconque, ça passe, si je suis lui rajoute du contenu à la fin de mon code, ça passe aussi. Mais si je lui met comme contenu celui de mon deuxième tableau (variable de session), c'est une fois de plus le drame.
Cependant il est pire... en effet, mes deux autres variables de session (tableau) ont littéralement disparu...

Ce qui me fait penser qu'il y a un dans ce deuxième tableau quelque chose qui empêche à ma variable de session de se souvenir tout ce qui le suit... Le problème étant que dans mon script, les deux autres variable n'ont pas perdu leur contenu...

Pourtant aprioris mes deux tableaux ne contiennent que des tableau et des chaines de caractères...

À deux doigt du suicide...

PS : désolé pour le alacon mais c'est le premiers mot (ou en tout cas suite de mots) qui me soit venu
djidji
djidji
le 21/05/2008 à 16:46
variable de session qui disparait
Je suis allé voir le bogue que tu a mit en lien. C'est exactement mon problème, mais je ne pense pas pour les mêmes raisons, toujours grâce à mon phpinfo() j'ai pu voir que ma version de php sur le serveur sur lequel je bosse est : "PHP Version 4.4.8-0.dotdeb.1"

La sérialisation ne semble pas faire grand chose... À vrai dire sa change rien (à par que le tableau est bien sérialisé) il reste visible dans mon script courant, mais dés que je tente de le récupérer ailleurs c'est toujours pareille.

Normalement mon tableau ne contient pas d'objet, voici le contenu :
Array
( [Classement] => Array
(
)
[Label] => Array
(
[0] => Array
(
=> 
[LIBELLE] =>
[ORDRE] => -1000
)
[1] => Array
(
[CODE] => code1
[LIBELLE] => valeur1
[ORDRE] => 0
)
[2] => Array
(
[CODE] => code2
[LIBELLE] => valeur2
[ORDRE] => 3
)
[3] => Array
(
[CODE] => code3
[LIBELLE] => valeur3
[ORDRE] => 4
)
)
)
PS : Encore désoler l'indentation à foirer...
djidji
djidji
le 21/05/2008 à 09:37
variable de session qui disparait
Ok, je vois ce que tu veux dire par même code. En effet ce n'est pas le même code.

Pour le backend, je ne pense pas que le problème vienne de là, bien que je t'avoue que je ne comprends toujours pas tout dessus. J'ai déjà sauvegardé beaucoup plus de contenu (trois exemplaire de mon premier tableau)

En ce qui conserne le tableau de session, je faisais un :
<?php 
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>

Ce qui me permettait de voir à peu près la même chose qu'avec un "var_dump($_SESSION)".
Et dans ma page courante mon deuxième tableau est bien dans ma variable de session.
Mais avec une autre page qui fait :
<?php
session_start();
echo "<pre>" ;
print_r($_SESSION) ;
echo "</pre>" ;
?>

Mon deuxième tableau est présenté comme telle : "[valeursPreDef] =>"

Je sais pas si t'aide pour trouver ce qui cloque... en tout cas moi, je suis perdu, et tous les développeurs que je connais, trouvent pas d'où vient mon problème.

En tout cas merci à toi
djidji
djidji
le 20/05/2008 à 15:59
variable de session qui disparait
Tout d'abords, Merci pour tout ces conseil.

Pour répondre à LA GLOBULE
Je me sert de mes variables de session juste pour faire une sauvegarde, elles ne me servent à rien d'autre dans mon code, donc normalement aucun écrasement possible, j'ai fait un test avec seulement la parti sauvegarde de mes variable, et le deuxième tableau est le seul qui est perdu.

Pour répondre à moogli
Je viens de vérifier avec un petit phpinfo(), register_globals est bien à off, donc le problème ne vient pas de là, de plus la variable en question à bien un nom différent que celui de ma session.

Pour répondre à LupusMic :
_Je dois avouer que je ne sais pas ce qu'est le backend (I'm a noob), avec phpinfo(), il y a une variable qui s'appelle backend dont la valeur est Sablotron (je sais pas si ça correspond)
_ C'est le même code qui sauvegarde les deux tableaux (je le mets plus bas, j'en ai fait une version simplifié)
_ Pour la taille je dois avouer la encore que je sais pas trop de quoi tu parles, j'ai fait un count() le premier fais 7 et le second fait 2 (dans mon cas ce sont des tableaux de tableau (pour faire de jolies lignes)
_ En ce qui concerne la disparition, au que oui j'en suis sûr.. isset() me retourne false en tout cas pour le second et pas pour le premiers tableau

Donc voilà mon code qui fait la sauvegarde :
<?php
session_start();

if (isset($_SESSION['tableau'])) {
$tableau = $_SESSION['tableau'];
}
else { // Utilisation de la syndication pour récupérer la structure
$CDTServer = //la il y a l'adresse pour récupérer mon premier flux
$leXML = utf8_decode(file_get_contents($CDTServer)) ;

$xml = new eZXML(); //objet eZ Publish, qui me permet le parcours avec leur dom
$dom =& $xml->domTree($leXML,array("CharsetConversion"=>true) );

$racine =& $dom->elementsByName( 'CHAMP' );

$tableau = array() ;

// Creation du tableau
$i=0 ;
foreach ( $racine as $champs ){
$lesEnfants = $champs->children() ;
foreach ( $lesEnfants as $gosses ) {
$tableau[$i][$gosses->name()] = $gosses->textContent();
}
$i++;
}

// Sauvegarde du tableau en variable de session
$_SESSION['tableau'] = $tableau ;
}
// récupération des valeurs prédéfinies.
if (isset($_SESSION['valeursPreDef'])){ //Recuppération de la variable de session
$valeurs = $_SESSION['valeursPreDef'];
}
else{
foreach ($tableau as $maligne ) {
if ($maligne['TYPE']==7 or $maligne['TYPE']==8 or $maligne['TYPE']==9 ){

$CDTServer = //ma deuxième adresse pour récupéré mon deuxième flux xml

$leXML = utf8_decode(file_get_contents($CDTServer)) ;

$xml = new eZXML();
$dom =& $xml->domTree( $leXML,array("CharsetConversion"=>true) );

$racine =& $dom->elementsByName( 'LISTE' );

$list = array() ;

$i=0 ;
foreach ( $racine as $champs ){
$lesEnfants = $champs->children() ;
foreach ( $lesEnfants as $gosses ) {
$list[$i][$gosses->name()] = $gosses->textContent();
}
$i++ ;
}
$valeurs [$maligne['NAME']]=$list;
}
}
//Sauvegarde du tableau valeursPreDef pour la session
$_SESSION['valeursPreDef'] = $valeurs;
}
?>


Donc comme vous pouvez le voir, j'ai besoin de mon premier tableau pour créer le second.
Le seul petit truc un peu emmerd*** est que mon deuxième tebleau ($valeurs) à son premier paramètre est vide. Mais le problème ne vient pas de là, j'ai déjà tenté de le faire sans récupérer ce premier paramètre.

PS : désolé pour l'indentation un peu foireuse mais j'arrive pas à faire mieux, la case 50 pixel sur 20 pixel c'est pas top...
djidji
djidji
le 20/05/2008 à 10:52
variable de session qui disparait
Bonjour,
Voilà, le titre est assez explicite.

Je suis entrain de créer un outil de recherche d'offres touristiques.
Celui ci présente plusieurs inconvénients :
_ Premièrement il doit fonctionnait sous eZ Publish (c'est un CMS pour ceux qui ne connaissent pas) celui me "contraint" d'utiliser ses propres librairies de fonctions.

_ Deuxièmement, je doit recherche les offres sur le serveur du Comité Départemental du Tourisme, qui utilise la syndication Tourinsoft, en gros il me retourne des flux xml, et je dois lui en envoyé pour qu'il me retourne les offres qui corresponde à ma recherche.

Donc mon code récupère du xml sur le serveur distant, le traite avec du Dom (celui de eZ Publish) pour en faire de joli tableau.

Je récupère deux flux, le premier, me donne toutes les variables sur lesquelles je peux faire une recherche. Le deuxième, me permet de récupérer certaines valeurs particulières ( valeur des listes, des boutons radios... ).
Je sauvegarde ces deux tableaux en variable de session.

Et là c'est le drame...
Le premier tableau est parfaitement sauvegardé.
Mais le second... mystère et boule de gomme... Lorsque je lui demande de l'afficher dans le code (après l'avoir sauvegardé) il me l'affiche.
Mais avec un autre fichier php, qui m'affiche les variables sessions, il me le retourne vide.

Donc, le problème ne vient ni d'un oublie de " session_start() ", ni d'un quelconque formulaire (image sans source).

Donc je suis bloqué...
Je n'ai pas mit mon code, car il contient pas mal de fonction eZ Publish, et qu'il y a toute une partie sur le traitement des tableaus qui fait environ 200 lignes.
djidji
LoadingChargement en cours