Page 1 sur 1
Questions variées pour code uniformisé
Posté : 15 oct. 2005, 16:06
par finipe
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])) { ... }
Posté : 15 oct. 2005, 16:30
par Truc
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);
}
Posté : 15 oct. 2005, 16:40
par finipe
Merci pour les réponses limpides. Je vais encore reprendre tous mes codes

Posté : 15 oct. 2005, 18:23
par Vaedan
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
Posté : 16 oct. 2005, 02:52
par finipe
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 ?
Posté : 16 oct. 2005, 08:21
par Cyrano
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.
Posté : 16 oct. 2005, 14:51
par finipe
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
Merci !
Posté : 16 oct. 2005, 15:45
par finipe
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 ?
Posté : 16 oct. 2005, 16:00
par Cyrano
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]