Maison  >  Article  >  développement back-end  >  Comment l'échappement PHP est-il implémenté ?

Comment l'échappement PHP est-il implémenté ?

PHPz
PHPzoriginal
2023-04-05 14:34:46480parcourir

Escape fait référence à la conversion de caractères spéciaux en un formulaire pouvant être reconnu par la machine dans le programme. En PHP, un tel échappement existe également. L'échappement PHP s'effectue en ajoutant une barre oblique inverse "" avant le caractère. Par exemple, pour échapper aux guillemets doubles ("), vous pouvez écrire :

echo "She said \"Hello\"";

Cela affichera à l'écran : Elle a dit "Bonjour".

En PHP, de nombreux caractères doivent être échappés. Liste ci-dessous Quelques caractères courants caractères qui doivent être échappés et leurs caractères d'échappement :

Caractères qui doivent être échappés Caractères d'échappement
Citations simples '
Citations doubles "
barre oblique inverse
saut de ligne n
retour chariot r
onglet horizontal t

S'il n'est pas échappé, il le fera entraîner une erreur de syntaxe ou une erreur de programme.

Lors de l'utilisation de la base de données, l'échappement est également requis. S'ils ne sont pas échappés, les utilisateurs peuvent insérer du code malveillant dans la base de données, provoquant une attaque du système. PHP nous fournit deux fonctions pour s'échapper : mysqli_real_escape_string() et addlashes().

La fonction mysqli_real_escape_string() est la fonction d'échappement MySQL fournie par PHP. Elle a une bonne compatibilité et prend en charge plusieurs jeux de caractères. La fonction addlashes() est une fonction intégrée de PHP. Les caractères d'échappement sont fixes et ne prennent en charge que les chaînes avec le jeu de caractères ISO-8859-1.

Voici un exemple d'utilisation de la fonction mysqli_real_escape_string() :

$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
    exit();
}

$name = mysqli_real_escape_string($mysqli, $_POST['name']);
$email = mysqli_real_escape_string($mysqli, $_POST['email']);
$message = mysqli_real_escape_string($mysqli, $_POST['message']);

$query = "INSERT INTO messages (name, email, message) VALUES ('$name', '$email', '$message')";

$result = $mysqli->query($query);

if ($result === TRUE) {
    echo "Message sent successfully";
} else {
    echo "Error: " . $mysqli->error;
}

$mysqli->close();

Dans l'exemple ci-dessus, nous utilisons la fonction mysqli_real_escape_string() pour échapper au nom, à l'e-mail et au message saisis par l'utilisateur afin d'éviter les attaques par injection SQL.

En plus de MySQL, d'autres bases de données doivent également être échappées. Différentes bases de données ont différentes méthodes d'échappement et vous devez choisir la fonction d'échappement appropriée en fonction de la situation spécifique.

Pour résumer, l'évasion est une partie importante de l'écriture de programmes PHP sûrs et doit être utilisée avec prudence. Des échappements sont nécessaires lors de la sortie de caractères ou de l'insertion de données dans la base de données. Il est recommandé d'utiliser la fonction mysqli_real_escape_string() pour l'échappement afin d'éviter de manquer des caractères d'échappement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn