PDA

View Full Version : جایگزین توابع mysql_escape_string در pdo



olampiad
دوشنبه 05 مرداد 1394, 20:35 عصر
سلام و خسته نباشید
این رو در گوگل سرچ کردم
https://www.google.com/webhp?sourceid=ch...8%B1%20pdo (https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=%D8%AC%D8%A7%DB%8C%DA%AF%D8%B2%DB%8C%D9%86%20% D8%AA%D8%A7%D8%A8%D8%B9%20mysql_escape_string%20%D 8%AF%D8%B1%20pdo)

ولی به نتیجه ای نرسیدم.
حالا خواستم ببینم تو pdo برای تابع mysql_escape_string جایگزینی وجود داره؟
مرسی

us1234
دوشنبه 05 مرداد 1394, 22:22 عصر
در PDO وقتی کوئری را prepare می کنید خودش کوئری را از چند جهت بررسی میکنه که یکی از آن بررسی های mysql_real_escape_string است .

با خیال آسوده :



if($_GET && isset($_GET['name'])){
$stmt = $db->prepare("SELECT * FROM people WHERE name = ?");
$stmt->execute(array($_GET['name']));
}


البته سعی کن ورودی ها را همیشه sanitize کنی .

pdo در ورژن های قدیمی mySql مشکل دارد ...

olampiad
سه شنبه 06 مرداد 1394, 17:47 عصر
البته سعی کن ورودی ها را همیشه sanitize کنی .
ببخشین چ طوری sanitize کنم؟
مرسی

phpdev
سه شنبه 06 مرداد 1394, 18:57 عصر
اینجوری


//trim $input
public function trimInput($input){
return trim($input);
}
//htmlspecialchars $input
public function htmlspecialcharsInput($input){
return htmlspecialchars($input, ENT_QUOTES, 'utf-8');
}
//stripcslashes $input
public function stripcslashesInput($input){
return stripcslashes($input);
}


البته این یه بخشی از کلاس هست خودت دیگه ریفش کن حالشو ندارم:لبخندساده:

us1234
سه شنبه 06 مرداد 1394, 21:33 عصر
اینجوری


//trim $input
public function trimInput($input){
return trim($input);
}
//htmlspecialchars $input
public function htmlspecialcharsInput($input){
return htmlspecialchars($input, ENT_QUOTES, 'utf-8');
}
//stripcslashes $input
public function stripcslashesInput($input){
return stripcslashes($input);
}


البته این یه بخشی از کلاس هست خودت دیگه ریفش کن حالشو ندارم:لبخندساده:


کامل نیست ، در پی اچ پی ورژن 5.2 و یک مرورگر منسوخ شده مثل ie7 در یک شرایط خیلی خاص تابع htmlspecialchars مشکل ایجاد میکنه ...

این تابع فکر میکنم کامل تر باشه :



function cleaner($input)
{
if($input)
{
if(is_array($input))
{
foreach ($input as $key => $value)
{
$output[$key] = cleaner($value);
}
}
else
{
$output = htmlspecialchars(trim($input),ENT_QUOTES, 'utf-8');
$output = mysql_real_escape_string($output);
$output = filter_var($output, FILTER_SANITIZE_STRING);
$output = strip_tags($output);
$output = str_replace(array("'", '"'),array('‘', '“' ), $output);
}
return $output;
}
else
{
return '';
}
}

kb0y667
چهارشنبه 25 شهریور 1394, 16:54 عصر
استفاده از این دو خط :


$output = strip_tags($output);
$output = str_replace(array("'", '"')

کاملا بی کاربرد و احمقانه هست

اگر آگاه باشی از مفهوم htmlspecialchars





ولی array('‘', '“' ) خوبه