Page 1 sur 1

récupéré une variable en get

Posté : 03 janv. 2010, 01:07
par daniel76
Salut,
je veut récupérer une variable en GET ou POST mais pour des raison de sécurité je ne veut pas utiliser le caractère $ dans mon code .
j'ai essayer ça
echo(echo(chr(36))._GET['variable'])
36 est le code ascii de '$'
pourriez vous m'aider ?
merci beaucoup d'avance !

Re: récupéré une variable en get

Posté : 03 janv. 2010, 02:19
par niuxe
Hello,

Au tout départ, j'ai pensé à eval(). Mais...
Je ne comprends pas très bien ton histoire de sécurité. Surtout que là je crois que de toute manière ce sera choux blanc et donc ce que tu veux faire aura aucun impact et dur/ennuyeux à gérer (inutilement). Qu'est ce que tu veux sécuriser ? Je crois que tu devrais plutôt demander comment sécuriser telle ou telle application ou tel truc ?

<edit>
À noter que pour des raisons de sécurité eval() est à éviter. Donc en réfléchissant, c'est peut être pas la bonne méthode. ;) Également à noter que les problèmes de sécurité ne viennent pas de tes variables mais plutôt des données de l'utilisateur. Donc ce sont les données utilisateurs qu'il faut filtrer pas les tiennes.

Qu'est ce que tu es en train de faire et qu'est ce que tu veux sécuriser ?

Au passage, un seul echo fait amplement l'affaire. En générale PHP comprend vite et on a pas besoin de lui expliquer pendant des lustres. :-*
</edit>

Re: récupéré une variable en get

Posté : 03 janv. 2010, 03:37
par daniel76
salut et merci
je vais être franc je n'est aucune idée comment sa sécurise lol.On commence a peine d'étudier le php en école et le prof nous a demander de faire des commande en php sans utiliser certain caractère soit disant que c'est pour la sécurité.Je pense que le but c'est de trouver ord() et chr() .bref moi j'y suis presque mais il reste un problème et je le trouve pas :(
<?php echo(chr(36).'_GET['.chr(39).'email'.chr(39)]);?>
merci beaucoup d'avance pour votre aide

Re: récupéré une variable en get

Posté : 03 janv. 2010, 03:41
par daniel76
désoler j'ai mis la fausse,
<?php echo(chr(36)."_GET[".chr(39)."email".chr(39)."])";?>
mais celle là non plu ne marche pas :(

Re: récupéré une variable en get

Posté : 03 janv. 2010, 03:52
par daniel76
encore moi :)
désoler mais javais pas compris l'exercice depuis le début .Enfet je doit écrire sur l'écran comme chaine de caractère

Code : Tout sélectionner

<?php echo($_GET['age']) ?>
et je ne doit pas utilisé les caratcère ( ',$) dans mon code.

je suis arriver là mais ça ne marche pas :(
<?php echo(    "<?php echo(".chr(36)."_GET[".chr(39)."email".chr(39)."]) ;?>php"   );?>

Re: récupéré une variable en get

Posté : 03 janv. 2010, 13:10
par Ryle
Ton code fonctionne et génère la chaine "<?php echo($_GET['email']) ;?>php" (y a un "php" en trop à la fin, m'enfin c'est pas bien difficile à corriger ;))

Le problème que tu rencontres vient de l'interprétation de cette chaine par le navigateur. En effet, comme la chaine que tu envoi au navigateur se trouve entre balises "<" et ">", celui-ci l'interprète comme une balise html et ne l'affiche pas à l'écran. (si tu regardes le code source de ta page, tu verras bien la chaine qui a été générée).

Il te faut donc trouver une solution (il y en a plusieurs :)) pour faire afficher les caractères spécifique "<" et ">", non pas par php, mais par le navigateur :)

Re: récupéré une variable en get

Posté : 03 janv. 2010, 16:49
par niuxe
Hello Ryle,

Je ne vois pas où il veut en venir en construisant la chaine $_GET['email'] ? À moins d'évaluer, l'expression « $_GET['email'] » ne sera pas interprétée à la soumission du formulaire :
<?php 
$email = chr(36)."_GET[".chr(39)."email".chr(39)."];"; // j'ai bien noté compris l'intitulé de ton exercice Daniel. Je te laisse le soin de compléter le reste.
echo $email;
?>
	<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="get">
		<input type="text" name="email" value="" />
		<input type="submit" name="envoi" value="ok" />
	</form>

Re: récupéré une variable en get

Posté : 03 janv. 2010, 21:32
par stealth35
Salut,
je veut récupérer une variable en GET ou POST mais pour des raison de sécurité je ne veut pas utiliser le caractère $ dans mon code .
j'ai essayer ça
echo(echo(chr(36))._GET['variable'])
36 est le code ascii de '$'
pourriez vous m'aider ?
merci beaucoup d'avance !
et pour quelle raison de securité tu ne dois pas utililsé '$' ?

Re: récupéré une variable en get

Posté : 03 janv. 2010, 22:51
par Ryle
Hello Ryle,

Je ne vois pas où il veut en venir en construisant la chaine $_GET['email'] ? À moins d'évaluer, l'expression « $_GET['email'] » ne sera pas interprétée à la soumission du formulaire
Ben à priori, d'après ce qu'a dit daniel76, il n'est même pas question de formulaire ou d'évaluation, c'est juste un exercice un peu plus poussé que l'affichage d'un simple "hello world" :)

(et si l'on devait programmer en php sans jamais utiliser le symbol $, on serait déjà tous passés au java ou au .net ;))

Re: récupéré une variable en get

Posté : 03 janv. 2010, 23:23
par daniel76
je ne sais pas pourquoi je ne doit pas utiliser '$', c'est un exercice , on essaye et après le prof nous explique lol , je vous dirais quand il nous dira :)

javais pas l'us la question d'après mais enfait il faut écrire en une ligne se code php dans un fichier texte et il doit afficher le contenu de la variable GET :s

j'ai essayer sa mais le code ne s'exécute pas
fwrite(fopen("mehdi1.php","w"),'<?php echo(chr(36)."_GET[".chr(39)."age".chr(39)."]");?>')
aider moi svp je suis perdu :( en plus on a pas encore étudier ça donc le pof veut qu'on cherche sa sur le net et les forums, c'est pas interdit :)
merci beaucoup

Re: récupéré une variable en get

Posté : 04 janv. 2010, 01:35
par niuxe
Hello Daniel,
je ne sais pas pourquoi je ne doit pas utiliser '$', c'est un exercice , on essaye et après le prof nous explique lol , je vous dirais quand il nous dira :)
Maintenant, je comprends un peu mieux que c'est un simple exercice à la « Hello world ».
javais pas l'us la question d'après mais enfait il faut écrire en une ligne se code php dans un fichier texte et il doit afficher le contenu de la variable GET :s
j'ai essayer sa mais le code ne s'exécute pas
fwrite(fopen("mehdi1.php","w"),'<?php echo(chr(36)."_GET[".chr(39)."age".chr(39)."]");?>')
aider moi svp je suis perdu :(
Là, ton script est faux sur deux points. Pour te mettre sur la voie :

* fwrite(....) : Est ce du HTML ou du php ? Quelle est l'instruction qui permet de définir le début et la fin d'un script php ou html ? À ce propos, je t'invite à lire cet article : Pourquoi il est déconseillé d'utiliser les balises courtes ?
* Est ce qu'à l'intérieur d'un code php, on doit trouver régulièrement ou plusieurs fois les tags de début et fin de script php ?
* Pour la deuxième faute, elle n'est pas évidente. Le deuxième paramètre de la fonction fwrite doit attendre une valeur, pas une fonction avec une valeur.

Pour te documenter un peu plus à propos de lecture/l'écriture dans des fichiers, je t'invite à lire cet autre article qui devrait faire ton bonheur : Écrire et lire dans un fichier texte.
en plus on a pas encore étudier ça donc le pof veut qu'on cherche sa sur le net et les forums, c'est pas interdit :)
merci beaucoup
Au contraire, je t'encourage. D'ailleurs, à lire et parcourir sans modération la documentation de php. Aussi, je te recommande qu'avant de t'attaquer à un langage dynamique tel que le PHP par exemple, il est raisonnable d'avoir une sémantique html impeccable en premier lieu. Si les bases de l'édifice ne sont pas stable, comment sera t'il au final ?

Commentaire personnel à propos de ton exercice :
- Bien qu'au final, il fonctionne. Cependant, il va à l'encontre des bonnes pratiques si je ne m'abuse. Automatiquement, il est contraire à la méthode DRY (Don't Repeat Youself). En effet, lorsque tu lies ou tu écris dans un fichier, les étapes sont les suivantes :
** ouverture du fichier avec son mode d'ouverture (r, r+, w+,w,etc.)
** écriture/lecture du fichier
** fermeture du fichier

Or, en lisant ton code, il faudra réécrire fopen(...) à la fermeture du fichier.

Au passage, soigne ton orthographe s'il te plait.
et si l'on devait programmer en php sans jamais utiliser le symbol $, on serait déjà tous passés au java ou au .net ;)
Arf, il y en a pas mal qui se bousculent. Python, Ruby, etc. D'ailleurs, je crois que tu as fait une petite erreur si je ne m'abuse : .NET à remplacer par .NOT. Tout comme le C# (@Daniel : se prononce C sharp) à remplacer par le Cb (C bémol) :lol: Rooo la propagande :lol:

Bonne soirée et bonne lecture/apprentissage :)

Re: récupéré une variable en get

Posté : 04 janv. 2010, 16:23
par jojo1000
Tout comme le C# (@Daniel : se prononce C sharp) :lol:
C# se prononce si sharp ou sé diése!!!
Mais surtout pas sé charp!!!
Putain le français pour un mec qui veut pas de fautes d'orthographe!!!

Re: récupéré une variable en get

Posté : 04 janv. 2010, 17:34
par niuxe
Hello,
C# se prononce si sharp ou sé diése!!!
Mais surtout pas sé charp!!!
Putain le français pour un mec qui veut pas de fautes d'orthographe!!!
Hum, troll belliqueux repéré mon commandant (technique d'attaque B8) !

Que vient faire l'orthographe dans ton message ? À ce propos, je te renvoie ton venin ! Pourquoi tant de points d'exclamation ? Pourquoi un message aussi agressif ? À quoi rime ton intervention finalement ? Parce que tu n'aimes pas que je parle du C# ou du .NET ? Ce n'est pas la peine de me répondre. Je n'ai que faire de la réponse d'une personne impolie (pas de bonjour + pas de au revoir + le p*****)

Pour conclure, (je vais pas m'ennuyer à écrire d'avantage d'après de tels propos néfastes) bien que je ne sois pas le super codeur de la mort qui tue (loin de là), je ne risque pas de t'aider sur le forum.

ps : sujet envoyé au modérateur.

Re: récupéré une variable en get

Posté : 04 janv. 2010, 17:42
par zeus
S'il vous plait messieurs, un peu de calme et de courtoisie. :evil:

Il arrive de dire "cé sharp" couramment, comme nombre d'autres francisations, et ce n'est pas interdit.

Sinon, et c'est un reproche qui vous est adressé à tout les deux : si vous avez un différent, et que vous voulez échanger, faites le par MP, pas dans le forum.

Merci de revenir à une discussion courtoise, faute de quoi, je devrais nettoyer le sujet et vous pourrez être sanctionnés.