Transmition des arguments vers une page dans une frame

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 171 fois - Téléchargée 24 fois

Contenu du snippet

L'autre jour, je crée une page avec des frame et dans l'une de ces frames se trouve une page php chargée de traiter les paramètres d'un formulaire. Problème, la page faisant partie d'une frame, c'est la page "parent" qui reçoit les info et ne les redistribue pas.
J'ai donc fait ce petit bout de code que l'on viendra mettre en tout début de page avant la balise HTML. Le code se charge de récuperer toutes les valeurs avec leurs noms respectifs, et de les concatener dans une chaine de caractères que l'on peut ainsi inclure dans l'URL de la page dans la frame.
!!!ATTENTION: ce source pour sous débutant ne s'applique pas au traitement des arguments complexes de type array, ou objet...
Il est destiné à manipuler des arguments de type text et numéraire.
example: test.php?num_tel=0000000000&ref=abcdefg&type_annonce=1&type_bien=2
Il manque cruellement un contrôle des données pour ne traiter que les arguments du type attendu (cf. source de kankrelune dans son post du 14/12/2006)

Source / Exemple :


<?php
/*
$_GET, $_POST: tableaux contenant toutes les valeurs en provenance d'un formulaire ou d'une injection manuelle dans l'URL
params: chaine de caractères pouvant être collée au bout de l'URL du document dans la frame

  • /
$params = ""; // initialisation de la chaine de caractère if (!empty($_GET)) { // on verifie s'il y a des valeur dans $_GET reset($_GET); // on s'assure que le pointeur interne est bien au début $params = "?" . key($_GET) . "=" . current($_GET); // on traite le premier argument ("?") next($_GET); // on deplace le pointeur interne sur l'élément suivant while (list($key, $val) = each($_GET)) { $params .= "&" . $key . "=" . $val; // puis séquencielement le reste du tableau } } if (!empty($_POST)) { // on verifie s'il y a des valeur dans $_POST reset($_POST); // on s'assure que le pointeur interne est bien au début // si $params est vide, c'est que $_GET etait vide donc le premier élément de $_POST devra avoir "?" if ($params == "") $params = "?" . key($_POST) . "=" . current($_POST); // avec "?" else $params .= "&" . key($_POST) . "=" . current($_POST); // avec "&" next($_POST); // on deplace le pointeur interne sur l'élément suivant while (list($key, $val) = each($_POST)) { $params .= "&" . $key . "=" . $val; // puis séquencielement le reste du tableau } } ?> <HTML> <HEAD> </HEAD> <BODY> <FRAMESET cols="250,250,*"> <FRAME src="mapage1.php<?php echo params; ?>"> <--! transmition des paramètres --> <FRAME src="mapage2.php"> <FRAME src="mapage3.php"> </FRAMESET> </BODY> </HTML>

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

http_build_query n'a rien d'obscure... c'est une fonction native de php5 et je te donne le code équivalant pour php4... elle génère une chaine de requete à partir d'un tableau ou d'un objet... .. .

http://fr3.php.net/http_build_query

Tu prend le code que je t'ais mis et tu fais...

<FRAME src="mapage1.php?<?php echo http_build_query($_GET); ?>">

Pourquoi réinventer la roue... .. . ;o)

@ tchaOo°
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
35
masternico, passe comme argument un guillemet double, simple ou autre, tu verras comment ça chie...
Messages postés
494
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

Bon bon, j'ai corrigé le code, mais je n'ai pas reussi à inclure foreach() à cause du fait que le premier argument est précédé du signe "?" et les autres du signe "&"...
mais comme le souligne coucou747, je débute de chez débute... :D
en fait j'apprends sur le tas, donc comme pour toutes les méthodes empiriques, il faut faire des erreurs pour avancer. ;D
>>coucou747: Par contre, je n'ai pas saisis la subtilité du double échapement des '. ni des arguments avec " dedans... pourrais tu approfondir?

>>sebastiennauer: j'irais visiter les liens que tu m'as fourni

tcho tcho et merci
Messages postés
3
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
15 décembre 2006

Voila deux sites de références qui me servent au quotidien :
- http://www.alsacreations.com/ : Site en Francais pour apprendre le CSS, XHTML
- http://www.w3schools.com/ : Site en anglais avec des exemples dans pleins de langages pour le web
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
35
à mon avis, les ' seront échapés deux fois... c'est pas bon du tout pour les arguments qui peuvent en contennir... Bref, ça peut buger sur les caractères échapables, et ça peut aussi merder dans les arguments qui ont un " dedans...

De plus, c'est vraiment simple comme exemple, même pour débutant
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.