demande d'explication sur php6

Mammouth du PHP | 558 Messages

04 août 2007, 14:05

voila j'ai lu et relu le commentaire en page d'accueil sur php6 mais tres franchement je n'ai pas tres bien compris ou sont les dangé et a quoi servent les magic_qote dont je ne me suis jamais preocupé avant car en ne sachant pas a quoi elles servent je les est tout simplement ignoré.
merci.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 août 2007, 17:39

Les "dangers" si on peut vraiment les nommer ainsi, viennent du fait que tout un tas de choses paramétrables sur le serveur vont disparaitres et seront entièrement à la charge du développeur. Cela assurera nottament la compatibilité d'un script quelque soit le serveur où il est déployé sans avoir à aller bidouiller le .ini du serveur (et ajouter des failles de sécurité), et obligera également à plus de sécurité dans le code :)

Les magic_quotes_gpc sont une fonctionnalité de php qui protège (lorsqu'elles sont activés) automatiquement les apostrophes et guillemets sur toutes les données reçues en GET et POST, principallement afin de pouvoir les insérer directement dans ta base de données. En gros, c'est comme si php faisait un addslashes() sur chaque variable envoyée : "L'Apostrophe" devient ainsi "L\'apostrophe" et tu peux l'utiliser dans ta requête sans te soucier de savoir si une apostrophe ne va pas risquer de mal délimiter ta chaine :)
(Pour rappel, en sql, on délimite les chaines de caractères avec des apostrophes, donc forcément, s'il en trouve une au milieu qui n'est pas protéger, il va penser que c'est la fin de la chaine)

Bref, tout ça pour dire que si cette directive saute, tous les scripts devront eux même faire le addslashes() sur les variables.

Dans le même genre, la directive register_globals (qui te permet d'utiliser $variable pour n'importe quelle donnée "variable" passée en post, en get, en cookie ou en session) va être fixée à off et disparaitre obligeant les gens à faire appel à $_POST['variable'] pour récupérer une variable envoyée en post, $_GET['variable'] si elle est envoyée en get, etc.

HTH :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...