Forum CMS Made Simple FR

Version complète : [Résolu] exporter une variable de session
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.

gandahar

Citation :#~ Version du CMS -MLE- : 1.7.1
#~ Nom de l'hébergeur : DRI
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.7.1
#~ Installed Modules:
#~ * CMSMailer: 2.0
#~ * FileManager: 1.0.2
#~ * MenuManager: 1.6.3
#~ * ModuleManager: 1.3.3
#~ * News: 2.10.5
#~ * nuSOAP: 1.0.1
#~ * Printing: 1.0.4
#~ * Search: 1.6.3
#~ * ThemeManager: 1.1.1
#~ * TinyMCE: 2.7.0
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * max_upload_size: 8000000
#~ * default_upload_permission: 664
#~ * assume_mod_rewrite: false
#~ * page_extension:
#~ * internal_pretty_urls: false
#~ * use_hierarchy: true
#~ Php Information:
#~ * phpversion: 5.2.11
#~ * md5_function: Encendido (Verdadero)
#~ * gd_version: 2
#~ * tempnam_function: Encendido (Verdadero)
#~ * magic_quotes_runtime: Apagado (Falso)
#~ * E_STRICT: 0
#~ * memory_limit: 128M
#~ * max_execution_time: 30
#~ * safe_mode: Apagado (Falso)
#~ * session_save_path: /var/lib/php/session (0770)
#~ * session_use_cookies: Encendido (Verdadero)
#~ Server Information:
#~ * Server Api: apache2handler
#~ * Server Db Type: MySQL (mysql)
#~ * Server Db Version: 5.0.86
#~ ----------------------------------------------
Bonjour à tous !!

Voilà, j'intègre dans cmsms un système php que j'ai précédament développé (je precise qu'il est parfaitement opérationel). Le soucis c'est que j'ai certaines pages qui s'ouvrent dans une fenetre javascript basée sur prototype.js

jusque là, tout va bien, le hic n'a rien à voir avec prototype...le problême, c'est que, bien que j'ouvre ma session dans cmsms (plus précisement dans un tag utilisateur, placé en tete du gabarit), le fichier php (j'y ai bien mis le session_start();) qui est ouvert dans la fenetre prototype ne recupère pas ma variable de session... j'ai essayé plein de trucs diférents mais rien y fait..

Pour être plus précis, mes variables de sessions sont déclarées dans un tag utilisateurs (qui lui contien le gros du systeme php, requetes sql etc..).Cette variable va contenir des informations diférentes suivant les intéraction de l'utilisateurs. Je ne peut donc les déclarer autre pars...(dites moi si je me trompe ;)

haï !
Le mal de crâne me guette... pourriez vous me conseiller svp ? me donner une direction vers où chercher ?


merci beaucoup
re,

Attention MLE n'est pas trop standard (vu c'est un Fork http://forum.cmsmadesimple.org/index.php...41.0.html)
Je vais sans doute dire une bêtise, mais tu pourrais essayer de placer ta variable de session
dans les options Attribut supplémentaire 1 de la page ouverte dans la page prototype :
{assign var='session' value=$taVariableSession}
Tu pourras la récupérer avec $session.

gandahar

merci jce76350,

j'ai déjà cherché, fouillé, fouiné dans les forums anglais, français.. mais je ne trouve rien ! du moins, rien qui correspond a ce cas biens précis.

pourtant le principe de base est relativement simple, j'ai besoin de récupérer le contenu d'une variable de session déclarée dans un tag utilisateur dans un fichier php hors cmsms mais sur le meme domaine...

galère !!

ça me fais penser à un truc, est-ce possible de declarer {$smarty.session.ma_variable=$mon_autre_variable}
dans un tag utilisateur ?? (en fait j'ai essayé mais je n'y arrive pas !)
Je suppose que tu l'as fait (dans l'udt) :
$smarty->assign($session, $taVariableSession);
Tu peux ainsi la récupérer avec {$session}

gandahar

Jean le Chauve a écrit :Je vais sans doute dire une bêtise, mais tu pourrais essayer de placer ta variable de session
dans les options Attribut supplémentaire 1 de la page ouverte dans la page prototype :
{assign var='session' value=$taVariableSession}
Tu pourras la récupérer avec $session.
je ne comprend pas trop, que veut tu dire par
Jean le Chauve a écrit :Attribut supplémentaire 1 de la page ouverte dans la page prototype
je tiens à préciser que la page php ouverte dans la fenetre prototype n'executre pas le moteur smarty !

gandahar

Jean le Chauve a écrit :Je suppose que tu l'as fait (dans l'udt) :
$smarty->assign($session, $taVariableSession);
Tu peux ainsi la récupérer avec {$session}
oui, le soucis c'est que je ne peut la récupérer avec {$session} etant donné que le fichier php ouvert dans la fenetre prototype n'execute pas le moteur smarty !
Et en plaçant ceci dans ton fichier php :
global $gCms;
$smarty =& $gCms->GetSmarty();

gandahar

Jean le Chauve a écrit :Et en plaçant ceci dans ton fichier php :
global $gCms;
$smarty =& $gCms->GetSmarty();
tu veux dire dans le fichier php ouvert dans la fenetre prototype ?

je teste de suite !!!

je vous tiens au courant

merci

gandahar

manifestement je n'arrive à rien !!

j'ai essayé, mais je ne comprend pas trop ce bout de code, je ne sias plus trop par ou chercher

pourtant l'idée de base est tellement simple, c'est déconcertant !!

j'ai trouvé le moyen d'executer un UDT dans un autre UDT, mais aucun interet, car je n'arrive pas a assigner ma variable de session comme suis :
{$smarty.session.ma_variable=$mon_autre_variable}

je suis paummé
C'aurait été trop simple Wink

As-tu essayé de l'envoyer par GET ou POST ?

gandahar

Jean le Chauve a écrit :C'aurait été trop simple Wink

As-tu essayé de l'envoyer par GET ou POST ?
oui, c'est une solution, j'ai testé sur un tout petit bout de code et ça marche, mais si je dois tout retoucher à cause de ce f**** $_SESSION['var'], c'est pas cool

en plus j'ai un système de sécurité basé sur un session_start(); et des $_SESSION !!!

bonjour la folie pour faire tout ça en POST (oublions GET)

aïe aïe aïe !!! ça y est le mal de crâne est présent !!!! aaaargh

bon, je vais continuer à chercher

je vais tester les forums english et español

on sais jamais

merci beaucoup à vous
Merci de nous tenir au courant Wink
Ce n'est pas très facile de t'aider sans qu'on connaisse ton code de création de page.

gandahar

Jean le Chauve a écrit :Merci de nous tenir au courant Wink
Ce n'est pas très facile de t'aider sans qu'on connaisse ton code de création de page.
oui c'est vrai, je vais poster un bout de code pour être plus clair

c'est un extrait du bout de code situé dans un UDT :
Code :
//requete bdd selectionne fiche
    $sql = 'SELECT les_champs FROM la_table where lechamp='.$var;
    $req = mysql_query($sql);
    $resultat = mysql_fetch_assoc($req);
    
//recupere le lien vers google map
$_SESSION['lien_map']=$resultat['lien_map'];
//recupere le lien TOMTOM
$_SESSION['tomtom']=$resultat['tom_tom'];
//etc...
et voici un extrait de code d'un fichier php externe (donc pas de smarty) mais situé sur le meme serveur (donc normalement OK pour passer des $_SESSION['var'] )

ce code recupère simplement le contenu des variables de session et les affichent..

Code :
<html>
<head></head>
<body>
<br>
<center>
<?php session_start();

echo $_SESSION['lien_map'].
'<br>'.$_SESSION['tomtom'];
?>
</center>
</body>
</html>
je continue quand même à me demander pourquoi le session_start(); et $_SESSION['var'] utilisés tel quel ne fonctionnent pas !¿
La session doit être déclarée dans le code tout en haut de ta page car le cache du navigateur doit être vide pour démarrer une session. Aucun code HTML avant le démarrage d'une session !!

Donc :
<?php session_start(); ?>
<html>
[...]

gandahar

Jean le Chauve a écrit :La session doit être déclarée dans le code tout en haut de ta page car le cache du navigateur doit être vide pour démarrer une session. Aucun code HTML avant le démarrage d'une session !!

Donc :
<?php session_start(); ?>
<html>
[...]
merci, j'ai effectivement déclaré le session start dans mon gabarit en toute première place avant le {process data}, avant quoi que ce soit en fait.. mais ça ne marche pas !!

incroyable, c'est etonnant que pour un système si bien développé, si puissant, un truc aussi basique qu'une variable de session ne fonctionne pas comme il se doit..

si quelqu'un idée..
gandahar a écrit :et voici un extrait de code d'un fichier php externe (donc pas de smarty) mais situé sur le meme serveur (donc normalement OK pour passer des $_SESSION['var'] )

ce code recupère simplement le contenu des variables de session et les affichent..

Code :
<html>
<head></head>
<body>
<br>
<center>
<?php session_start();

echo $_SESSION['lien_map'].
'<br>'.$_SESSION['tomtom'];
?>
</center>
</body>
</html>
C'est celui-là qui doit être modifié.
Les sessions fonctionnent sur cmsms.
Pourquoi utiliser des fichiers externes alors que tu peux les intégrer en udt ou en blocs de contenu global ?

gandahar

ça y est les amis !!

j'ai trouvé la soluce, c'estait plutot simple et évident en fin de compte...

j'ai simplement ouvert le fichier index.php et ajouté en tête de fichier le session_start();

voilà, c'etait aussi simple que ça,

inutile de créer un UDT et de l'inserer en tete de gabarit, ça ne fonctionne pas !!

merci Jean le Chauve, tu avais raison Wink

j'espère que ce post pourras aider d'autres personnes


merci à tous pour votre aide


à bientôt Wink