GESTION DES MODULES AVEC $REQUEST (LISTE DE MODULES ET VÉRIFICATION QUE LE FICHI

cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008 - 9 nov. 2004 à 17:09
cymoud Messages postés 21 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 15 septembre 2007 - 14 nov. 2004 à 11:12
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/27440-gestion-des-modules-avec-request-liste-de-modules-et-verification-que-le-fichier-existe

cymoud Messages postés 21 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 15 septembre 2007
14 nov. 2004 à 11:12
" ~._\t" c les caractères qu'il retire au début et à la fin de la valeur ;) tien si tu veux l'essayer... mais vite parce que je suis pas toujours ouvert : http://cygratis.ath.cx/tmp/modules
pour strip ou strstrip, je verrai ça ce soir, là j'ai pas trop le temps. Bonne journée ;)
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
14 nov. 2004 à 01:44
il doit exister une fonction strip ou qq ch ds le genre (strstrip peut-être).


" ~._\t" c'est quoi ça ??
cymoud Messages postés 21 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 15 septembre 2007
14 nov. 2004 à 01:28
Voila c'est corrigé pour le tableau, je voulais le mettre dans la liste, c'était juste une erreur d'attention de ma part. J'ai fais le zip, tu peux l'essayer si tu veux, regarder la source des mes pages.

Et pour empty(trim()) il ne marche pas:
3) if (isset($_REQUEST["module"]) && !empty(trim($_REQUEST["module"]," ~._\t")))
4) $module = trim($_REQUEST["module"]," ~._\t");
5) else $module = "home";
Fatal error: Can't use function return value in write context in D:\wamp\website\alias\tmp\modules\index.php on line 3
Si tu as une autre formulation, ça serai bien :) ou sinon, j'ai tout simplement fais une erreur. Il se fait tard et je commence à flancher :p donc là je vais me coucher dés que le zip et la source sont prèts ;)

Di tu pourrais me donner une fonction que je pourrais utiliser à la place de trim() pour virer tous les caractères que je souhaite d'une valeur ? trim() ne fait le trie qu'au début et à la fin de la valeur.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
13 nov. 2004 à 23:30
$module_liste = array('about','admin','download','home');
if (!in_array($module, $module_liste)) {
$module = 'error';
}

je rajouterai uniquement que j'aurais mis error dans le tableau $module_liste, parce que tu peux éventuellement vouloir rediriger vers cette page par script, via un fichier de configuration serveur http etc... ceci dit, s'il n'est pas dans la liste, ce sera remplacé par error donc ça n'a pas vrmtn d'impact, je te l'accorde.

c'est tout ce que j'ai à dire, si ce n'est que tu as laissé le empty() au lieu de faire une combi de isset + empty(trim())
cymoud Messages postés 21 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 15 septembre 2007
13 nov. 2004 à 22:57
je te remercie pour les infos, le lien aurai suffit, merci... en fait je n'y ai pas passé assez de temps... je n'ai même pas lu l'erreur, je ne savais tout simplement pas l'utiliser. Je sais pas si tu vas aimer la nouvelle source, j'ai casiment tout reformulé plus simplement, plus compacte et logique... enfin c'était le but en tout cas. J'attend avec impatience ton avis sur la source :) une chose à modifier encore ? ne te gène surtout pas pour le moindre détail, je suis perfectionniste en général en programmation.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
13 nov. 2004 à 14:55
tu m'étonnes, je trouve pourtant sans difficultés la fonction trim(): http://be2.php.net/trim

trim

(PHP 3, PHP 4 , PHP 5)
trim -- Strip whitespace from the beginning and end of a string
Description
string trim ( string str [, string charlist])

This function returns a string with whitespace stripped from the beginning and end of str. Without the second parameter, trim() will strip these characters:

*

" " (ASCII 32 (0x20)), an ordinary space.
*

"\t" (ASCII 9 (0x09)), a tab.
*

"\n" (ASCII 10 (0x0A)), a new line (line feed).
*

"\r" (ASCII 13 (0x0D)), a carriage return.
*

"\0" (ASCII 0 (0x00)), the NUL-byte.
*

"\x0B" (ASCII 11 (0x0B)), a vertical tab.

You can also specify the characters you want to strip, by means of the charlist parameter. Simply list all characters that you want to be stripped. With .. you can specify a range of characters.
cymoud Messages postés 21 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 15 septembre 2007
13 nov. 2004 à 01:21
jte remercie pour tes infos, j'aime bien aussi respecter la logique des choses, mais je ne la connais pas en PHP :p lol ça viendra ;) pour la fonction empty(trim()) j'aimerai bien l'utiliser, mais trim() n'existe pas, tu ne te serais pas trompé dans le nom ?
cymoud Messages postés 21 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 15 septembre 2007
13 nov. 2004 à 01:20
jte remercie pour tes infos, j'aime bien aussi respecter la logique des choses, mais je ne la connais pas en PHP :p lol ça viendra ;) pour la fonction empty(trim()) j'aimerai bien l'utiliser, mais trim() n'existe pas, tu ne te serais pas trompé dans le nom ?
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
12 nov. 2004 à 18:29
en haut de script, tu dois déclarer $module = ''; sinon ça n'a pas de sens. le fait est que PHP est à l'opposé de la rigueur (fut, ça change), et que donc il te laisse faire des horreurs comme ce que tu as fait tout naturellement (on ne peut pas t'en vouloir), à savoir: tu déclares $module dans la if, sinon dans la else, mais pas ds le spectre global. et après le if-else, tu utilises module: normalement t'as pas le droit.

aussi, ton premier tet: empty. c'est pas très utile. si module vaut ' ', t'es pas très avancé. je pense que ce que tu veux tester, c'est si module a été déclaré, donc tu dois utiliser isset(), et pas empty(). d'ailleurs, on utilise généralement empty(trim()) pour effacer les espaces blancs avant de vérifier si la variable n'est pas vide, ça évite les pseudo qui contiennent que des espaces ^^

plutôt que d'écrire que le module est introuvable, il faudrait rediriger vers une page d'erreur 404 ou 500 (sauf erreur: doc introuvable ou accès interdit, respectivement).

c'est tout pour l'instant ^^
cymoud Messages postés 21 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 15 septembre 2007
11 nov. 2004 à 23:41
je te remercie pour la liste la doc des fonctions :) ben tien, je mes la liste des fonctions que j'utilise, ça sert à rien mais la liste est courte au moins :
http://fr.php.net/empty
http://fr.php.net/in_array
http://fr.php.net/echo
http://fr.php.net/require
tu as raison, je n'en vois pas l'utilité moi non plus mais c pas grave, ct vite fait.

Si tu as des propositions pour amélioere ma source, je t'encourage vivement à les dire, ou les expliquer... ma source est encore très primitive à l'état actuel des choses.... des nouvelles porribilités, une meilleur organisation... n'importe quoi qui soit mieux est mieux :p logique nan ?
Merco
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
11 nov. 2004 à 12:09
www.php.net/nom_de_la_fonction

si tu connais pas la fonction mais que tu cherches par exemple à trier un tableau, t'as qu'à deviner le nom de la fonction, en général ça marche. tu tappes 'sort' et il te tappera la lite des fct, expliquées, plus des liens vers les fct apparentées.
si tu veut de l'aide sur mysql, tu fais www.php.net/mysql et t'auras la doc de toute l'API mysql, avec toutes les fct, les exemples généraux etc... une mine d'or :) et c'est en français à la demande (un lien en haut de page, y a même du danois :p).
aussi: quasi chaque fonction est commentée par les utilisateurs de la communauté, ça donne de très bons astuces / conseils / avertissements.
cymoud Messages postés 21 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 15 septembre 2007
10 nov. 2004 à 19:37
Voila c'est changé ;) merci, j'ai encore jamais utilisé la liste des fonctions, quelqu'un a un lien en fr assez sympa pour ça ? :o ça serai génial, je vien de la rajouter, j'ai testé, ça marche très bien ;) Si l'aide me le permet, je ferai un zip avec un exemple complet, avec formulaire et lien, mais j'attend d'avoir une source un peu plus évoluée ;)
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
9 nov. 2004 à 21:11
file_exists sauf erreur
cymoud Messages postés 21 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 15 septembre 2007
9 nov. 2004 à 21:09
Je suis aussi débutant en fait :p jte remercie galadriann, j'ai changé ça comme tu m'as di. Pour vérifier si le fichier existe, je ne sais pas le faire, si tu me donnes la commandes, je le change ;)
galadriann Messages postés 84 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 12 juin 2006
9 nov. 2004 à 20:46
au lieu de faire 2 tests pour $_post ou $_get tu peut faire un $_request['module'] ca a aussi l'avantage de fonctionner avec un PHP global off... du coup ca allege encore ton code ...

sinon bien...

ciao
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
9 nov. 2004 à 17:09
tu pourrais même rajouter une vérification de l'existence du fichier.
Rejoignez-nous