PDA

View Full Version : سوال: فوری: مشکل با حوزه توابع و اجرا نشدن تابع mysqli_real_escape_string



i-php-i
چهارشنبه 21 اردیبهشت 1390, 12:50 عصر
من از توابع زیر استفاده می کنم.

مشکل من اینه که mysqli_real_escape_string توی تابع injection_fun نمی تونه از متغیر cxn استفاده کنه.

لطفا بگید که چطور این مشکل رو حل کنم؟


function db_connect()
{
global $cxn;
$cxn=mysqli_connect('host','user','password','data base');
return $cxn;
}
function db_query($cxn, $sql)
{
mysqli_set_charset($cxn, "utf8");
$result = mysqli_query($cxn,$sql);
return $result;
}

function injection_fun($str)
{
$real=mysqli_real_escape_string($cxn, $mstr);
return $real;
}

Keramatifar
چهارشنبه 21 اردیبهشت 1390, 14:38 عصر
دوست عزیز
شما باید توی فانکشن injection_fun هم به متغیر مربوطه global scope بدهید
این کد ر و در ابتدای فانکشن injection_fun قرار دهید:

global $cxn;

i-php-i
چهارشنبه 21 اردیبهشت 1390, 15:08 عصر
دوست عزیز
شما باید توی فانکشن injection_fun هم به متغیر مربوطه global scope بدهید
این کد ر و در ابتدای فانکشن injection_fun قرار دهید:

global $cxn;
من این روش رو به همراه چندین روش مشابه دیگه تست کردم ولی هیچ کدوم تاثیری روی تابع mysqli_real_escape_string نداشتن.

بنظرم مشکل از تابع mysqli_real_escape_string هست، چون هر بار این تابع رو رو حذف می کنم یا از تابع mysql_real_escape_string استفاده می کنم، اسکریپت بدون مشکل اجرا می شه. نظر شما چیه؟

چه فرقی بین mysqli_real_escape_string و mysql_real_escape_string وجود داره؟

i-php-i
چهارشنبه 21 اردیبهشت 1390, 20:45 عصر
من متغیر cxn رو در هر سه تابع بصورت گلوبال تعریف کردم ولی باز هم مشکل بوجود می یاد.

دلیل این مشکل (عدم دسترسی به متغیر cxn ) چی هست؟

تابع mysqli_real_escape_string باعث بوجود اومدن مشکل می شه.


function db_connect()
{
global $cxn;
$cxn=mysqli_connect('host','user','password','data base');
return $cxn;
}
function db_query($cxn, $sql)
{
global $cxn;
mysqli_set_charset($cxn, "utf8");
$result = mysqli_query($cxn,$sql);
return $result;
}
function injection_fun($str)
{
global $cxn;
$real=mysqli_real_escape_string($cxn, $mstr);
return $real;
}
]