PHP: mysql_real_escape_string - Manual in English
PHP: mysql_real_escape_string - Manual in Deutsch
PHP: mysql_real_escape_string - Manual in Polish

Vous êtes à PHP: mysql_real_escape_string - Manual Area


recherches récentes:
incluez les fonctions , fonctions variables , fonctions de poteau...




Si vous êtes nouveau au PHP ou devez juste régénérer vos qualifications, c'est l'endroit à commencer. Cette série de cours d'instruction te donnera la connaissance de base que vous devrez créer un simple Site Web de PHP.

Le PHP est un langage de programmation r3fléchissant à l'origine conçu pour produire les pages Web dynamiques. [1] Le PHP est employé principalement dans le serveur-côté scripting, mais peut être employé d'une ligne de commande interface ou dans des applications graphiques autonomes. Des interfaces utilisateurs textuelles peuvent également être créées utilisant des ncurses.

Protège les caractères spéciaux d'une commande SQL


mysql_real_escape_string

(PHP 4 >= 4.3.0, PHP 5, PECL mysql:1.0)

mysql_real_escape_string — Protège les caractères spéciaux d'une commande SQL

Description

string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )

mysql_real_escape_string() protège les caractères spéciaux de la chaîne unescaped_string , en prenant en compte le jeu de caractères courant de la connexion link_identifier . Le résultat peut être utilisé sans problème avec la fonction mysql_query(). Si des données binaires doivent être insérées, cette fonction doit être utilisée.

mysql_real_escape_string() appelle la fonction mysql_escape_string() de la bibliothèque MySQL qui ajoute un slash aux caractères suivants : NULL, \x00, \n, \r, \, ', " et \x1a.

Cette fonction doit toujours (avec quelques exceptions) être utilisée pour protéger vos données avant d'envoyer la requête à MySQL.

Liste de paramètres

unescaped_string

La chaîne à échapper.

link_identifier

La connexion MySQL. S'il n'est pas spécifié, la dernière connexion ouverte avec la fonction mysql_connect() sera utilisée. Si une telle connexion n'est pas trouvée, la fonction tentera d'ouvrir une connexion, comme si la fonction mysql_connect() avait été appelée sans argument. Si aucune connexion n'est trouvée ou établie, une alerte E_WARNING est générée.

Valeurs de retour

Retourne la chaîne échappée, ou FALSE si une erreur survient.

Exemples

Exemple #1 Exemple simple avec mysql_real_escape_string()

<?php
// Connexion
$link mysql_connect('mysql_host''mysql_user''mysql_password')
OR die(
mysql_error());

// Requête
$query sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));
?>

Exemple #2 Un exemple d'attaque par injection SQL

<?php
// Demande à la base de vérifier si un utilisateur correspond
$query "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
mysql_query($query);

// Nous ne vérifions pas $_POST['password'], il peut contenir ce que l'utilisateur veut ! Par exemple :
$_POST['username'] = 'aidan';
$_POST['password'] = "' OR ''='";

// Cela signifie que la requête envoyée à MySQL sera :
echo $query;
?>

La requête envoyée à MySQL :

SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''

Cela permet à n'importe qui de s'identifier sans mot de passe valide.

Exemple #3 Meilleure pratique

L'utilisation de la fonction mysql_real_escape_string() sur chaque variable évite les injections SQL. Cet exemple démontre la méthode la plus propre pour envoyer une requête à la base, indépendamment de votre configuration des guillemets magiques.

<?php

if (isset($_POST['product_name']) && isset($_POST['product_description']) && isset($_POST['user_id'])) {
    
// Connect

    
$link mysql_connect('mysql_host''mysql_user''mysql_password');

    if(!
is_resource($link)) {

        echo 
"Échec de la connexion au serveur\n";
        
// ... historisation de l'erreur

    
} else {

        
// Annule les effets magic_quotes_gpc/magic_quotes_sybase sur ces variables si ON.

        
if(get_magic_quotes_gpc()) {
            
$product_name        stripslashes($_POST['product_name']);
            
$product_description stripslashes($_POST['product_description']);
        } else {
            
$product_name        $_POST['product_name'];
            
$product_description $_POST['product_description'];
        }

        
// Faire une requête sécurisée
        
$query sprintf("INSERT INTO products (`name`, `description`, `user_id`) VALUES ('%s', '%s', %d)",
                    
mysql_real_escape_string($product_name$link),
                    
mysql_real_escape_string($product_description$link),
                    
$_POST['user_id']);

        
mysql_query($query$link);

        if (
mysql_affected_rows($link) > 0) {
            echo 
"Produit inséré\n";
        }
    }
} else {
    echo 
"Remplissez le formulaire proprement\n";
}
?>

La requête s'exécute maintenant correctement et les attaques par injection SQL ne fonctionnent plus.

Notes

Note: Une connexion MySQL est nécessaire avant d'utiliser la fonction mysql_real_escape_string(), sinon, une erreur de niveau E_WARNING sera générée, et FALSE sera retourné. Si link_identifier n'est pas défini, la dernière connexion MySQL est utilisée.

Note: Si magic_quotes_gpc est activée, appliquez d'abord la fonction stripslashes() à vos données. Utiliser cette fonction sur des données qui ont déjà été protégées, les protègera une deuxième fois.

Note: Si cette fonction n'est pas utilisée pour protéger vos données, la requête sera vulnérable aux attaques par injection SQL.

Note: mysql_real_escape_string() n'échappe ni %, ni _. Ce sont des jokers en MySQL si combinés avec LIKE, GRANT, ou REVOKE.


pizzeria lublin
Ogłoszenia staszów Ogłoszenia staszów Ogłoszenia staszów - staszow
byk mechaniczny wynajem byk mechaniczny wynajem byk mechaniczny wynajem
Najlepsza ochrona osobista na rynku
Meble na wymiar studio kuchnie poznań kuchnie szafy archideko zamówienie
902 903

Des autres fonctions utiles :


ref.pdo-mysql | ref.pdo-mysql.connection | ref.mysqli | ref.mysql | mysqli.warning-count | mysqli.use-result | mysqli.thread-safe | mysqli.thread-id | mysqli.store-result | mysqli.stmt-init | mysqli.stat | mysqli.ssl-set | mysqli.sqlstate | mysqli.setup | mysqli.set-local-infile-handler | mysqli.set-local-infile-default | mysqli.set-charset | mysqli.select-db | mysqli.rollback | mysqli.resources | mysqli.real-query | mysqli.real-escape-string | mysqli.real-connect | mysqli.query | mysqli.prepare | mysqli.ping | mysqli.options | mysqli.next-result | mysqli.multi-query | mysqli.more-results | mysqli.kill | mysqli.installation | mysqli.insert-id | mysqli.init | mysqli.info | mysqli.get-warnings | mysqli.get-server-version | mysqli.get-server-info | mysqli.get-proto-info | mysqli.get-host-info | mysqli.get-client-version | mysqli.get-client-info | mysqli.get-charset | mysqli.field-count | mysqli.error | mysqli.errno | mysqli.dump-debug-info | mysqli.debug | mysqli.constants | mysqli.connect | mysqli.connect-error | mysqli.connect-errno | mysqli.configuration | mysqli.commit | mysqli.close | mysqli.character-set-name | mysqli.change-user | mysqli.autocommit | mysqli.affected-rows | mysqli-stmt.store-result | mysqli-stmt.sqlstate | mysqli-stmt.send-long-data | mysqli-stmt.result-metadata | mysqli-stmt.reset | mysqli-stmt.prepare | mysqli-stmt.param-count | mysqli-stmt.num-rows | mysqli-stmt.insert-id | mysqli-stmt.get-warnings | mysqli-stmt.free-result | mysqli-stmt.field-count | mysqli-stmt.fetch | mysqli-stmt.execute | mysqli-stmt.error | mysqli-stmt.errno | mysqli-stmt.data-seek | mysqli-stmt.close | mysqli-stmt.bind-result | mysqli-stmt.bind-param | mysqli-stmt.attr-set | mysqli-stmt.attr-get | mysqli-stmt.affected-rows | mysqli-result.num-rows | mysqli-result.lengths | mysqli-result.free | mysqli-result.field-seek | mysqli-result.field-count | mysqli-result.fetch-row | mysqli-result.fetch-object | mysqli-result.fetch-fields | mysqli-result.fetch-field | mysqli-result.fetch-field-direct | mysqli-result.fetch-assoc | mysqli-result.fetch-array | mysqli-result.data-seek | mysqli-result.current-field | mysqli-driver.embedded-server-start | mysqli-driver.embedded-server-end | mysql.setup | mysql.resources | mysql.installation | mysql.examples | mysql.constants | mysql.configuration | intro.mysqli | intro.mysql | function.mysqli-slave-query | function.mysqli-set-opt | function.mysqli-send-query | function.mysqli-send-long-data | function.mysqli-rpl-query-type | function.mysqli-rpl-probe | function.mysqli-rpl-parse-enabled | function.mysqli-report | function.mysqli-param-count | function.mysqli-master-query | function.mysqli-get-metadata | function.mysqli-fetch | function.mysqli-execute | function.mysqli-escape-string | function.mysqli-enable-rpl-parse | function.mysqli-enable-reads-from-master | function.mysqli-disable-rpl-parse | function.mysqli-disable-reads-from-master | function.mysqli-client-encoding | function.mysqli-bind-result | function.mysqli-bind-param | function.mysql-unbuffered-query | function.mysql-thread-id | function.mysql-tablename | function.mysql-stat | function.mysql-set-charset | function.mysql-select-db | function.mysql-result | function.mysql-real-escape-string | function.mysql-query | function.mysql-ping | function.mysql-pconnect | function.mysql-num-rows | function.mysql-num-fields | function.mysql-list-tables | function.mysql-list-processes | function.mysql-list-fields | function.mysql-list-dbs | function.mysql-insert-id | function.mysql-info | function.mysql-get-server-info | function.mysql-get-proto-info | function.mysql-get-host-info | function.mysql-get-client-info | function.mysql-free-result | function.mysql-field-type | function.mysql-field-table | function.mysql-field-seek | function.mysql-field-name | function.mysql-field-len | function.mysql-field-flags | function.mysql-fetch-row | function.mysql-fetch-object | function.mysql-fetch-lengths | function.mysql-fetch-field | function.mysql-fetch-assoc | function.mysql-fetch-array | function.mysql-escape-string | function.mysql-error | function.mysql-errno | function.mysql-drop-db | function.mysql-db-query | function.mysql-db-name | function.mysql-data-seek | function.mysql-create-db | function.mysql-connect | function.mysql-close | function.mysql-client-encoding | function.mysql-change-user | function.mysql-affected-rows | class.mysqli | class.mysqli-stmt | class.mysqli-result | class.mysqli-driver | book.mysqli | book.mysql |


Le PHP est une langue scripting d'usage universel employée couramment qui approprié particulièrement au développement de Web et peut être enfoncée dans le HTML. Si vous êtes nouveau au PHP et voulez avoir une certaine idée de la façon dont cela fonctionne, essayez le cours d'instruction d'introduction. Après ce, vérifiez le manuel en ligne, et l'exemple archivez les emplacements et certaines des autres ressources disponibles dans la section de liens.