Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
probleme de transmission des variables PHP avec CMSMS
#1
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: ?
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.8.1
#~ Installed Modules:
#~ CMSMailer: 2.0
#~ FileManager: 1.0.2
#~ MenuManager: 1.6.5
#~ ModuleManager: 1.4
#~ News: 2.10.6
#~ nuSOAP: 1.0.1
#~ Printing: 1.1.0
#~ Search: 1.6.5
#~ ThemeManager: 1.1.1
#~ TinyMCE: 2.7.2
#~ CGExtensions: 1.21.5
#~ CGEcommerceBase: 1.2.2
#~ CGPaymentGatewayBase: 1.0.9
#~ PaypalGateway: 2.2
#~ TruetypeText: 2.1.1
#~ JQueryTools: 1.0.10
#~ Config Information:
#~ php_memory_limit:
#~ process_whole_template: false
#~ output_compression: false
#~ max_upload_size: 10000000
#~ default_upload_permission: 664
#~ url_rewriting: none
#~ page_extension:
#~ query_var: page
#~ image_manipulation_prog: GD
#~ auto_alias_content: true
#~ locale:
#~ default_encoding: utf-8
#~ admin_encoding: utf-8
#~ set_names: true
#~ Php Information:
#~ phpversion: 5.3.3-7+squeeze1
#~ md5_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_STRICT: 0
#~ E_DEPRECATED: 8192
#~ memory_limit: 64M
#~ max_execution_time: 60
#~ output_buffering: 4096
#~ safe_mode: Off (Faux)
#~ file_uploads: On (Vrai)
#~ post_max_size: 12M
#~ upload_max_filesize: 10M
#~ session_save_path: /users/user115723/tmp (0755)
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ Server Information:
#~ Server Api: cgi-fcgi
#~ Server Db Type: MySQL (mysql)
#~ Server Db Version: 5.0.32
#~ ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour à l'équipe

Voilà longtemps que je n'étais pas venu ici...et longtemps que je n'avais pas fait un peu de programmation Wink


Mais voilà, j'ai un probleme de transmission des variables PHP avec CMSMadeSimple


Malgré mes paramètres :
- register_globals = on
- use_smarty_php_tags sur true
- l'utilisation des tags {php} {/php} pour encadrer les codes PHP


la transmission des variables d'une page HTML/PHP à une autre :
- fonctionne BIEN sur mes propres pages (uploadées via ftp dans un dossier hors des dossiers CMSMS) Smile
- NE fonctionne PAS quand intégrées dans les templates de CMSMS Sad
(Dans les 2 cas, il s'agit naturellement des memes scripts écrits avec Notepad++)

Avec CMSMS, les pages ne récupèrent plus les données transmises par le FORM de la page précédente (méthode <INPUT> -> $_POST[]) !
Le débugeur indique "indéfini" pour les variables et constantes.

Bien entendu, tests réalisés chez le meme hébergeur.

Malgré des recherches sur le net, je ne trouve pas d'informations à ce sujet.
Si quelqu'un avait la gentillesse de bien vouloir m'éclairer. D'autant que d'autres ont, sans doute, rencontré ce soucis.
Peut-etre s'agit-il s'un simple paramètre.

Merci
Répondre
#2
Citation : Cms Version: 1.8.1

version trop ancienne
J-C Etiemble Tutoriels v 2.2.x
Répondre
#3
En ce qui concerne les CMS ou les systèmes informatiques, les différentes versions ne semblent pas généralement pas avoir d'incidence sur le traitement de variables HTML/PHP aussi basiques que :


Code :
PAGE_1.php

<form action=".../PAGE_2.php" method="POST">

<input name="prenom" size="20" type="text" value="votre Prénom" ><br>
<input name="nom" size="20" type="text" value=""><br>
etc...


PAGE_2.php


<?php

if (isset($_POST[’prenom’])) $prenom=utf8_decode($_POST[’prenom’]) ;
if (isset($_POST[’nom’])) $nom=utf8_decode($_POST[’nom’]) ;
echo 'bonjour '.$prenom.'<br>';
etc...

?>



En fait ces 2 pages en php fonctionnent tres bien chez le meme hébergeur,
Mais ne fonctionnent plus dès qu'elles sont incluses dans les pages Made Simple :



Code :
CMSMS/index.php?page=PAGE_1

<form action=".../CMSMS/index.php?page=PAGE_2" method="POST">

<input name="prenom" size="20" type="text" value="votre Prénom" ><br>
<input name="nom" size="20" type="text" value=""><br>


CMSMS/index.php?page=PAGE_2


{php}

if (isset($_POST[’prenom’])) $prenom=utf8_decode($_POST[’prenom’]) ;
if (isset($_POST[’nom’])) $nom=utf8_decode($_POST[’nom’]) ;
echo 'bonjour '.$prenom.'<br>';

{/php}

les variables ne passent plus rien par le POST



Ne s'agirait-il plutot pas d'un défaut de paramétrage ?
qu'en pensez-vous ?

merci
Répondre
#4
non dom.asmar tu as mal interprété le message de Jce

on ne fait plus de support sur ta version de cmsmadesimple. Mets toi à jour.

de plus l'utilisation de {php}{/php} dans tes pages est très fortement déconseillée

http://wiki.cmsmadesimple.fr/wiki/Cat%C3%A9gorie:Udt

et commence même par là : http://wiki.cmsmadesimple.fr/wiki/Udt_base
Répondre
#5
Bonjour,

il suffit pour cela que tu crées une nouvelle balise utilisateur, exemple : get_prenom

dans laquelle tu écris :

Code :
[== PHP ==]
echo utf8_decode($_POST['prenom']);

Dans ta page cible, un simple appel de cette balise : {get_prenom} te renverra l'information.
Répondre
#6
Bonsoir Bess

J'ai un souvenir sympa de toi Smile, il y a peut etre 1 année (le temps passe si vite) ; nous avions parlé au tél alors que tu te lançais dans une activité d'entreprise. J'espere que cette société tourne bien aujourd'hui et t'apporte toutes satisfactions.

Pour revenir aux variables html/php,
il y a des personnes, qui comme moi, en raisons d'activités remplies, ne disposent que de peu de temps pour programmer Sad
Or l'utilisation des balises smarty avec lesquelles l'on doit parsemer ses pages, est chronovore. Alors que le php/html est facile et rapide.
N'y a-t-il pas un moyen d'activer le passage de ces variables html/php dans un fichier de paramétrage de CMSMS, quitte à perdre un peu en terme de sécurité ?

Dans la négative, il me faudra utiliser les balises utilisateurs


Bonne soirée à toi et tes collègues
Répondre
#7
Citation :J'ai un souvenir sympa de toi

Haa au moins un Smile

Je n'ai pas lancé de société, mon employeur n'est pas d'accord avec ce principe et mon contrat implique une clause d'exclusivité, on verra cela pour plus tard Smile

Concernant ta réflexion

Citation :Or l'utilisation des balises smarty avec lesquelles l'on doit parsemer ses pages, est chronovore. Alors que le php/html est facile et rapide.

Je ne suis pas d'accord et j’irais même à l'inverse :
  1. l'utilisation d'une balise smarty est ultra rapide : {mabalise}
  2. l'utilisation d'un code php dans une page cmsms est synonyme de mauvaise manip assurée proportionnelle au nombre de fois ou tu interviens sur la page (WYSIWYG & mauvaises manip)
  3. l'utilisation d'un code php à l’extérieur d'une page cmsms rend indépendant les mauvaises manip sur tes pages et l'incidence sur ton code php. Il n'y a aucun WYISYWG ce qui évite les mauvaises surprises
  4. L'utilisation d'un UDT permet également de restreindre les accès à ce code de manière rapide et sécurisée pour éviter qu'un utilisateur y foute la grouille.
  5. L'utilisation d'un UDT permet d'utiliser simplement l'API de cmsmadesimple afin par exemple de s'affranchir des codes SQL en dur qui sont une brèche de sécurité béante
  6. L'utilisation d'un UDT permet de factoriser du code et de le réutiliser dans différentes pages là ou un code dans chaque pages doit être reproduit à chaque fois. La maintenance du code suit le même principe : moins d'endroit = moins de temps perdu
  7. un code PHP est toujours compatible une fois dans un UDT, pas de perte de temps
  8. une udt peut être placé dans un gabarit sans en pourrir le contenu ce qui permet d'avoir un code php actif partout sur le site en quelques lettres seulement



et je pourrais continuer longuement sur le sujet. {php} est une balise déconseillée, déconseillée c'est le terme pour pas dire "interdit et supprimée de cmsmadesimple" simplement parce que son introduction a été mise en place avant les UDT et que c'est justement le désolant constat de {php} qui a affiché le besoin d'introduire les UDT pour remplacer {php}

bref passe à l'UDT
Répondre
#8
et si tu dois mixer les sorties HTML et les codes php il existe une solution dans php même : l'écriture heredoc

ça t'affranchit des ouvertures/fermeture de <php incessant et des besoins de mettre des guillemets/apostrophes tout en devant les échapper non stop.

du très bon en somme.
Répondre
#9
Bonsoir Bess

Je rentre chez moi et lis ton message.


Les projets ne vont pas toujours dans le sens que l'on imagine Sad

Par ailleurs, moi qui fût pendant quelques années conseiller en rapprochement/creation/liquidation d'entreprises; globalement, je peux te dire que se lancer dans une telle aventure n'est pas forcément la panacée sur le long terme : j'ai vu trop de gars enthousiastes dans leur projet...se retrouver, quelques années après, dans de grandes difficultés économiques puis financières, de santé, sociales... enfin familiales... Meme qlq clients qui ne sont plus de ce monde aujourd'hui...
En connaissance de cause, j'ai souvent explicité à des copains, amis qui sont venus me présenter leur projet, les difficultés qui les attendaient, afin de leur éviter un avenir difficile.

Bien entendu, chaque dossier d'entreprise est un cas à part.

Enfin, l'essentiel est d'aimer ce que l'on fait Smile !

Bonne soirée
Répondre
#10
Bonjour

Concernant les balises udt, j'en avais déjà modestement essayé dans le cadre d'intégration de calculs.
Mais hier soir, j'ai rencontré le meme pb qu'antérieurement (sans l'utilisation de l'UDT),
dans le cadre du (double) passage (PG1 -> balise -> pg2) de variables (indiquées plus haut ds le post), c'est à dire :



PAGE 1 : .../CMSMS/index.php?page=PAGE_1
contenant son formulaire HTML :

<form action=".../CMSMS/index.php?page=PAGE_2" method="POST">
<input name="prenom" value="votre Prénom" >
<input name="btn" value="envoyer" type="submit" >
</form>



balise utilisateur {calcul_1}:

/* récuperation des variables du formulaire */
if(isset($_POST[’prenom’])) $prenom=utf8_decode($_POST[’prenom’]);
/* export des variables pour la page 2 */
echo 'la variable $prenom contient la valeur : ' .$prenom. '<br />';




PAGE 2 : .../CMSMS/index.php?page=PAGE_2

<!-- appel de la balise smarty calcul_1 en php -->
{
calcul_1
}
<!-- reste du code html de la page -->



Probleme du, bien entendu, à ma profonde méconnaissance de smarty :

La PAGE 2 : CMSMS/index.php?page=PAGE_2 affiche
la variable $prenom contient la valeur :
au lieu de :
la variable $prenom contient la valeur : votre Prénom

aucune variable n'est récupérée par la balise. Meme si la seconde page affiche bien le contenu de cette balise.

quelques questions me viennent à l'esprit :
- Faut-il utiliser aussi une balise pour envoyer le formulaire de la page 1 ?
- L'URL passée dans action=".../CMSMS/index.php?page=PAGE_2" (où page=PAGE_2 est l'alias de la page) doit-elle faire référence à un tpl ?

Je ne sais plus dans quelle direction chercher :/
Répondre
#11
page1 :

Code :
{mon_udt1 destination='page2'}

page2 :

Code :
{mon_udt2}


voilà pour le contenu de tes pages. Maintenant les udts

udt1 : se contente de générer un formulaire


Code :
$gCms = $cmsms();
$config = $gCms->getConfig();

$destination = $params['destination'];
$root_url = $config['root_url'];

echo <<<MYHTML

<form action="$root_url/index.php?page=$destination" method="post">
  <input name="prenom" value="votre Prénom" >
  <input name="btn" value="envoyer" type="submit" >
</form>

MYHTML;

UDT2 : récupère les données

Code :
$prenom = '-Aucune valeur-';

if(!empty($_POST['prenom']))
   $prenom=$_POST['prenom'];

echo 'la variable $prenom contient la valeur  : ' .$prenom. '<br />';

Dans ton cas : tu as fait l'erreur d'écrire $_POST[’prenom’] et non $_POST['prenom']. Comprendre l'utilisation du symbole = ’ = au lieu de = ' =

du coup _POST ne te retournera pas... ça m'a pris un moment avant de mettre le doigt dessus d'ailleurs ... :/


regarde le résultat : http://www.furie.be/index.php ?page=asmar1
Répondre
#12
merci bess

Je passe rapidement ici, et essaierais de suivre tes conseils, quand je trouverais du temps ce WE
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)