PHP mysql_real_escape_string() فونکشن

تعریف و استعمال

mysql_real_escape_string() فونکشن دیتابیس کوائی کی جملے میں استعمال کی جانے والی نزدیک کو خصوصی کلمات کو اسلوبیاب کردیا جاتا ہے.

مندرجہ بالا کلمات اثر کریں گے:

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

اگر کامیاب ہو تو اس فونکشن اسلوبیاب کردہ نزدیک کو واپس کردیا جائے گا. اگر ناکامی ہو تو false واپس کردیا جائے گا.

نام نویسی

mysql_real_escape_string(string,connection)
پارامتر توضیح
string ضروری. اسلوبیاب کردہ نزدیک کو مقرر کرتا ہے.
connection اختیاری. MySQL رابطے کو مقرر کرتا ہے. اگر مقرر نہیں کیا گیا تو پچھلے رابطے کو استعمال کیا جائے گا.

توضیح

یہ فونکشن string میں خصوصی کلمات کو اسلوبیاب کردیا گیا ہے، اور بستگی سے جاری ہونے والی رابطے کی چارچا پر بھی غور کیا گیا ہے، لہذا اس کا استعمال کیا جاسکتا ہے mysql_query().

آگاہی اور نوٹس

آگاہی:اس فونکشن کو دیتابیس حملوں سے بچانے کے لئے استعمال کیاجاسکتا ہے.

مثال

مثال 1

<?php
$con = مای_اس_کیو_ال_کانکت("localhost", "hello", "321");
اگر (!$con)
  {
  دیئی('نمی‌توان وصل شد: ' . مای_اس_کیو_ال_آرور);
  }
// استعمال کنندہ نام اور پاسورڈ کا کوڈ حاصل کیا جائے
// استعمال کنندہ نام اور پاسورڈ کو اسلوبیاب کیا جائے تاکہ SQL میں استعمال کیا جاسکے
$user = mysql_real_escape_string($user);
$pwd = mysql_real_escape_string($pwd);
$sql = "SELECT * FROM users WHERE
user='" . $user . "' AND password='" . $pwd . "'"
// مزید کوڈ
مای اس کیو ال کلووز ($con);
?>

مثال 2

دیتابیس حملہ کیا جائے گا. اس مثال میں دکھایا جائے گا کہ اگر استعمال کنندہ نام اور پاسورڈ پر mysql_real_escape_string() فونکشن کو نہیں لاگتا تو کیا ہوگا:

<?php
$con = مای_اس_کیو_ال_کانکت("localhost", "hello", "321");
اگر (!$con)
  {
  دیئی('نمی‌توان وصل شد: ' . مای_اس_کیو_ال_آرور);
  }
$sql = "SELECT * FROM users
WHERE user='{$_POST['user']}
AND password='{$_POST['pwd']}'";
مای اس کیو ال کوئری ($sql);
// استعمال کنندہ نام اور پاسورڈ کو چک نہیں کیا جائے
// یہ کسی بھی استعمال کنندہ کے کسی بھی محتوا کا ہو سکتا ہے، مثلاً:
$_POST['user'] = 'john';
$_POST['pwd'] = "' OR ''='";
// کچھ کوڈ...
مای اس کیو ال کلووز ($con);
?>

تو چاہئیں کہ SQL کوائی کا چاہئیں جیسا

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

این به این معنی است که هر کاربری می‌تواند بدون وارد کردن رمز عبور معتبر وارد شود.

مثال 3

روش صحیح پیشگیری از حملات پایگاه داده:

<?php
فنکشن چک_ورودی($value);
{
// اسلش‌ها را حذف کنید
اگر (گت_مجیک_کویتز_جی‌پی‌سی())
  {
  $value = استریپ_اسلش‌ها($value);;
  }
// اگر عدد نیست، آن را با نقل قول‌ها بپوشانید
اگر (!اعدادشمارا($value))
  {
  $value = "'" . مای اس کیو ال ریل اسکاپ_استرینگ($value); . "'";
  }
بازگرداندن $value;
}
$con = مای_اس_کیو_ال_کانکت("localhost", "hello", "321");
اگر (!$con)
  {
  دیئی('نمی‌توان وصل شد: ' . مای_اس_کیو_ال_آرور);
  }
// SQL امن را انجام دهید
$user = چک_ورودی($_POST['user']);
$pwd = چک_ورودی($_POST['pwd']);
$sql = "SELECT * FROM users WHERE
user=$user AND password=$pwd";
مای اس کیو ال کوئری ($sql);
مای اس کیو ال کلووز ($con);
?>