http://us.php.net/mysql_real_escape_string
et faites défiler jusqu'à «Exemple #3 A "Best Practice" query ", ce n'est pas vraiment une meilleure pratique de son mieux, mais assez bon.
Une astuce, pour assurer immédiatement la moitié de votre entrée, juste intval () tous les nombres entiers. Qui va régler la moitié de vos problèmes. Vous n'avez pas d'échapper à leur toute autre manière.
Ceci est probablement préférable de l'utiliser sur votre entrée à la place de l'encombrement de l'instruction conditionnelle avec "if (get_magic_quotes_gpc ())":
function SmartRemoveSlashes($value='')
{
//This function removes slashes placed there by PHP so you can do your own string escaping, and attempts to remove them off of arrays, It's pretty reliable though
return (get_magic_quotes_gpc()) ? (is_array($value) ? array_map("stripslashes", $value) : stripslashes($value)) : $value;
}
$name = SmartRemoveSlashes($_REQUEST['name']);
-
- function SmartRemoveSlashes($value='')
- {
- //This function removes slashes placed there by PHP so you can do your own string escaping, and attempts to remove them off of arrays, It's pretty reliable though
- return (get_magic_quotes_gpc()) ? (is_array($value) ? array_map("stripslashes", $value) : stripslashes($value)) : $value;
- }
-
- $name = SmartRemoveSlashes($_REQUEST['name']);
-
Je crois qu'ils sont de supprimer totalement les guillemets magiques dans php6 though.
Oui, les guillemets magiques sera supprimé dans PHP 6.
Je pense que l'utilisation de l'extension mysqli est effectivement plus avantageux que de compter sur mysql_real_escape_string et sprintf comme une meilleure pratique.
D'abord, vous pouvez utiliser mysqli dans une approche orientée objet façon hors de la boîte. Je ne peux pas vous dire combien de fois Ive a vu d'autres personnes encapsuler les fonctions standards de MySQL dans une classe wrapper juste pour leur donner une saveur POO.
Deuxièmement, elle s'appuie sur les instructions préparées pour la sécurité de type. Le meilleur exemple pratique vous avez accédé à cette simulation avec sprintf. Mysqli a cette fonctionnalité construit po
Enfin, il échappe automatiquement toutes les données entrantes. Youll n'ont jamais besoin d'utiliser mysql_real_escape_string nouveau.
J'ai écrit un petit script de test pour illustrer mysqli en action. Il insère des hyperliens est entrée dans une base de données, puis affiche ceux qui sont déjà entrés. Dans un exemple du monde réel, Id utilisez probablement des expressions régulières pour veiller à ce qu'un lien hypertexte légitime a été soumise.
<?php
require_once("data/config.php5");
$mysqli = new mysqli(HOST, USER, PASSWORD, MYDB);
$form = <<<EOF
<html>
<head>
<title>DB test</title>
</head>
<body>
<form action="{$_SERVER['PHP_SELF']}" method="post">
Enter URL: <input type="text" name="url" /><br />
<input type="submit" name="submit" value="submit" />
</form>
</body>
</html>
EOF;
if(isset($_POST['submit']))
{
$url = $_POST['url'];
$query = "INSERT INTO urls (url) VALUE (?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("s", $url);
$stmt->execute();
$stmt->close();
$query = "SELECT url from urls";
$stmt = $mysqli->prepare($query);
$stmt->execute();
$stmt->bind_result($link);
$resultOutput = "URL's: <br />";
while($stmt->fetch())
{
$resultOutput .= "$link <br />";
}
$stmt->close();
$resultOutput .= "<br /><br />";
}
echo $form;
if($resultOutput)
{
echo $resultOutput;
}
$mysqli->close();
?>