Rumah  >  Artikel  >  php教程  >  php mysql_real_escape_string penggunaan fungsi dan contoh asas tutorial_php

php mysql_real_escape_string penggunaan fungsi dan contoh asas tutorial_php

WBOY
WBOYasal
2016-05-16 08:59:592792semak imbas

Melarikan diri aksara khas dalam unescaped_string, dengan mengambil kira tetapan sambungan aksara semasa supaya ia selamat diletakkan dalam mysql_query() itu. Jika data binari hendak dimasukkan, fungsi ini mesti digunakan

Watak berikut terjejas:

  • x00
  • n
  • r
  • '
  • "
  • x1a

Jika berjaya, fungsi mengembalikan rentetan yang terlepas. Jika gagal, kembali palsu.

Tatabahasa

mysql_real_escape_string(string,connection)
参数 描述
string 必需。规定要转义的字符串。
connection 可选。规定 MySQL 连接。如果未规定,则使用上一个连接。

Penerangan

Fungsi ini melepaskan aksara khas dalam rentetan dan mengambil kira set aksara semasa sambungan, jadi ia selamat digunakan dengan mysql_query().

Petua dan Nota

Petua: Anda boleh menggunakan fungsi ini untuk menghalang serangan pangkalan data.

Contoh

Contoh 1

Salin kod Kod adalah seperti berikut:

$con = mysql_connect( "localhost", "hello", "321");
if (!$con)
{
die('Tidak dapat menyambung: ' . mysql_error());
}

// Kod untuk mendapatkan nama pengguna dan kata laluan

// Escape nama pengguna dan kata laluan untuk digunakan dalam SQL
$user = mysql_real_escape_string($user);
$pwd = mysql_real_escape_string($pwd);

$sql = "PILIH * DARI pengguna DI MANA
pengguna='"

//Lagi kod

mysql_close($con);

?>

Contoh 2

Serangan pangkalan data. Contoh ini menunjukkan perkara yang berlaku jika kita tidak menggunakan fungsi mysql_real_escape_string() pada nama pengguna dan kata laluan:

Salin kod Kod adalah seperti berikut:
$con = mysql_connect( "localhost", "hello", "321");
if (!$con)
{
die('Tidak dapat menyambung: ' . mysql_error());
}

$sql = "PILIH * DARI pengguna

WHERE user='{$_POST['user']}'
DAN kata laluan='{$_POST['pwd']}'";
mysql_query($sql);

// Tidak menyemak nama pengguna dan kata laluan

// Boleh apa sahaja yang dimasukkan oleh pengguna, seperti:
$_POST['user'] = 'john';
$_POST['pwd '] = "' ATAU ''='";

// Beberapa kod...

mysql_close($con);

?>

Kemudian pertanyaan SQL akan kelihatan seperti ini:

PILIH * DARI pengguna

WHERE user='john' AND password='' ATAU ''='' Ini bermakna mana-mana pengguna boleh log masuk tanpa memasukkan kata laluan yang sah.

Contoh 3

Cara yang betul untuk mencegah serangan pangkalan data:

Salin kod Kod adalah seperti berikut:
function check_input ($value )
{
// Alih keluar garis miring
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// If bukan nombor Kemudian tambah petikan
jika (!is_numeric($value))
{
$value = "'" . mysql_real_escape_string($value) $value;
}

$con = mysql_connect("localhost", "hello", "321");
if (!$con)

{

die('Tidak dapat menyambung: ' . mysql_error()) ;
}

// Lakukan SQL selamat
$user = check_input($_POST['user']);

$pwd = check_input($_POST['pwd']);

$sql = " SELECT * DARI pengguna DI MANA
pengguna=$pengguna DAN kata laluan=$pwd";

mysql_query($sql);

mysql_close($con);

?>


Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn