Questions variées pour code uniformisé

Eléphant du PHP | 337 Messages

15 oct. 2005, 16:06

Hello !

Etant en pleine révolution PHPesque pour essayer d'uniformiser mes codes, de les rendre conformes et sécurisés, etc., je me pose des tas de questions existentielles un peu idiotes, comme par exemple celles-ci :

1 - Pour les superglobales, doit-on mettre (par ex.) $_GET['blabla'] ou bien $_GET[blabla] ? Je l'ai vu souvent avec les guillements simples, mais ça fonctionne sans.

2 - Lorsque l'on récupère les superglobales POST et GET, quelle est la meilleure façon de procéder ?

--> Doit-on, dès le début de la page, assigner :
$variable1 = $_GET[variable1];
$variable2 = $_POST[variable2];
etc.

--> Ou bien doit-on utiliser les variables brutes comme ceci (par ex.) :
if(isset($_GET[variable])) { ... }

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 oct. 2005, 16:30

1 - Pour les superglobales, doit-on mettre (par ex.) $_GET['blabla'] ou bien $_GET[blabla] ? Je l'ai vu souvent avec les guillements simples, mais ça fonctionne sans.
si tu ne met pas des quotes le "blabla" sera interprété comme une constante et donc si tu ne l'a pas définit avant tu aura une erreur. Il faut donc ajouter des quotes pour récupèrer les variables correctement =>$_GET['blabla']

--> Doit-on, dès le début de la page, assigner :
$variable1 = $_GET[variable1];
$variable2 = $_POST[variable2];
etc.
si tu fait comme ça et les variables GET ou POST n'existent pas tu auyra une erreur. Il faut donc tester avec isset.

--> Ou bien doit-on utiliser les variables brutes comme ceci (par ex.) :
if(isset($_GET[variable])) 
{
   $variable1 = $_GET['variable1'];   
}
ensuite tu utilise $variable1 dans la suite du code. pour sécuriser tu peut ajouter un htmlentities()
ou encore verifier la valeur avec une valeur possible (que tu aura définit avant)
if((isset($_GET['variable'])) && $_GET['variable']=1)
{
   $variable1 = htmlentities($_GET['variable1'],ENT_QUOTES);   
}

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 337 Messages

15 oct. 2005, 16:40

Merci pour les réponses limpides. Je vais encore reprendre tous mes codes :lol:

Eléphant du PHP | 493 Messages

15 oct. 2005, 18:23

1 - Pour les superglobales, doit-on mettre (par ex.) $_GET['blabla'] ou bien $_GET[blabla] ? Je l'ai vu souvent avec les guillements simples, mais ça fonctionne sans.
pas du tout !!!
// url: mapage.php?blabla=salut&lang=en

define( 'blabla', 'lang' );

echo $_GET[ 'blabla' ], '<br />', $_GET[ blabla ];
// Affiche :
//    salut
//    en

Eléphant du PHP | 337 Messages

16 oct. 2005, 02:52

Eh bien pourtant je procédais avec $_GET[blabla] et non $_GET['blabla'], et ça fonctionne parfaitement :?

Bon enfin bref, j'ai tout corrigé, et du coup je me pose la même question pour mes résultats sql. Quand je fais une requête, je fais presque toujours pareil :
$sql = "SELECT champs FROM table";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
  echo $row[champs];
}
Alors la question à 1000€ c'est : dois-je écrire $row[champs] ou plutôt $row['champs'] ?

Je précise, j'ai toujours écrit $row[champs] et ça fonctionne impeccable. Alors si c'est $row['champs'], pourquoi ?

Mammouth du PHP | 19672 Messages

16 oct. 2005, 08:21

Si tu écris $row['champ'], "champ" va être traité comme une chaine de caractère; si tu l'écris $row[champ], "champ" sera interprété comme une constante et tu as des chances d'avoir un message d'erreur te signalant une constante "champ" non définie. Donc si c'est une constante, écris-le sans les apostrophes, si c'est un index associatif normal, mets les apostrophes.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 337 Messages

16 oct. 2005, 14:51

Bizarre, vraiment bizarre... Je n'ai pas utilisé de constante, j'ai tjs utilisé ça comme index associatif mais sans apostrophe, et ça fonctionne pourtant bien :?.

Bon, je retourne tout modifier :lol:

Merci !

Eléphant du PHP | 337 Messages

16 oct. 2005, 15:45

D'ailleurs, histoire de rentabiliser mon message, pourriez-vous faire un tout petit topo sur cette syntaxe svp ? Que j'arrête de poser les mêmes questions idiots...

Par exemple, si j'ai un truc comme $var[0], correspondant au 1er contenu d'un array, dois-je écrire $var[0] ou $ var['0'] ?

Bref, quels sont les cas où je dois utiliser les apostrophes, et vice versa ?

Mammouth du PHP | 19672 Messages

16 oct. 2005, 16:00

Non, attention: avec des index numériques, tu ne dois pas mettre les apostrophes, sinon le nombre ne sera pas interprété comme étant numérique mais comme une chaine de caractères.
Donc on mettra $tableau['index'] et $tableau[123]
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: