[PHP] - Les " et les ' face aux requêtes... - Il y a encore du taf finalement ^^

Y a pas que pour des question de relecture qu’il vaut mieux sortir tes variables de tes textes :

si tu mets “$tableau[‘case’]”, la variable qu’il va chercher à interpréter c’est pas $tableau[‘case’] mais $tableau et derrier il va lui coller le text [‘case’] et là c’est plus vraiment ce que tu voulais au départ, surtout qu’il va te mettre un message d’erreur.

Jveux pas foutre la m**de mais on peut lire sur nexen:

Cette fonction est dépréciée.
mysql_escape_string est identique à la fonction mysql_real_escape_string hormis le fait que mysql_real_escape_string requiert une ressource de connexion et protège la chaîne en fonction du jeu de caractères courant.

De plus imaginons que ce soit une adresse. genre 20 rue de l’aubepine.
Un htmlentities(string,ENT_QUOTES) ne serais pas plus aproprié ?
Et imaginons que les magic_quotes sont a ON, ca va pas escaper 2 fois les quotes ?

Startide> tu devrais commencer par lire la doc PHP, c’est expliqué dedans et c’est pas long à lire… (et pour les backticks, ça suxe).

Vouais je vais essayer… autant profiter des grosses laser du bureau pour sortir tout ca ^^

Je me mets en (re)quête (:D) du PDF alors ^^ s’il existe :slight_smile:

EDIT : trouvay : http://www.nexen.net/docs/php/charge.php?doc=pdf.zip 2646 pages à peine… :MDR
EDIT2 : ouf suis rassuré, la version allégée existe : 1223 pages :smiley: :ane:

Mais tu pouvais pas lire ça sur le web, boulay?

Genre lire tout ça : http://www.php.net/manual/fr/langref.php

sur la même page on peut lire :

Sinon je vois pas la différence entre ton htmlentities(string,ENT_QUOTES) et le mysql_real_escape sur ton adresse ?

Et pour les magic_quotes, ça n’agit que sur les $_POST et $_GET de mémoire, ce qui est transmis pas l’utilisateur. Pour le reste pas de soucis, sinon je suppose que vérifier l’état des magic quotes et annuler son effet sur les $_POST et $_GET avant de passer le texte à mysql_real_escape est suffisant pour éviter les problèmes.

Ben imprimer ou sur le web ca fait quand même 2K de pages à lire… et non sur le web ca m’arrange pas de lire de gros trucs ^^

EDIT : merci pour le lien, ca semble plus absorbable dans un premier temps je pense :slight_smile:

Ceci va mettre tout le monde d’accord sur l’utilisation des ’ dans les tableaux _GET et _POST et consors compris.

http://fr2.php.net/manual/fr/language.types.array.php

A faire et à ne pas faire avec les tableaux

Pourquoi est-ce que $foo[bar] est invalide ?

Vous devez toujours utiliser les guillemets autour de la chaîne de caractères placée en tant qu’index du tableau. Par exemple, utilisez $foo[‘bar’] et non pas $foo[bar]. Mais, pourquoi $foo[bar] est faux ? Vous pourriez avoir vu la syntaxe suivante en vos vieux scripts :

Exemple 11-27. Accès aux index de tableaux, ancienne méthode

<?php
$foo[bar] = 'ennemi';
echo $foo[bar];
// etc.
?>

Cela est mauvais, mais ca marche. Pourquoi est-ce mauvais? La raison est que PHP attend une constante entre crochets (bar) plutôt qu’une chaîne (‘bar’, notez les guillemets). Or, PHP pourrait définir dans le futur des constantes qui, malheureusement pour votre code, auront ce nom. En fait, cela fonctionne car la constante indéfinie est transformée en chaîne ayant la même valeur.

[quote=""]

Note : Cela ne signifie pas que vous devez toujours mettre les clés entre guillemets. Vous n’allez pas utiliser les guillemets avec les clés qui sont des constantes ou des variables, car cela empêchera PHP de les interprêter correctement.
[/quote]

Exemple 11-28. Ne pas mettre les clés de tableaux entre guillemets
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('html_errors', false);
// Tableau simple :
$array = array(1, 2);
$count = count($array);
for ($i = 0; $i < $count; $i++) {
       echo "\nChecking $i : \n";
       echo "Mauvais : " . $array['$i'] . "\n";
       echo "Bon : " . $array[$i] . "\n";
       echo "Mauvais : {$array['$i']}\n";
       echo "Bon : {$array[$i]}\n";
    }
?>

L’exemple ci-dessus va afficher :

Checking 0:

Notice: Undefined index:  $i in /Users/iboom/Desktop/CVS/docs/mysql/mysql.fr/- on line 10
Mauvais :
Bon : 1
Notice: Undefined index:  $i in /Users/iboom/Desktop/CVS/docs/mysql/mysql.fr/- on line 12
Mauvais :
Bon : 1

Checking 1:
Notice: Undefined index:  $i in /Users/iboom/Desktop/CVS/docs/mysql/mysql.fr/- on line 10
Mauvais :
Bon : 2
Notice: Undefined index:  $i in /Users/iboom/Desktop/CVS/docs/mysql/mysql.fr/- on line 12
Mauvais :
Bon : 2