خطا‌‌ها‌ی زیر رخ داد:
Warning [2] preg_replace_callback(): Requires argument 2, 'mwsshcode_check("$1","$2")', to be a valid callback - Line: 197 - File: inc/plugins/mwsshcode.php PHP 7.3.4 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/plugins/mwsshcode.php 197 preg_replace_callback
/inc/class_plugins.php 139 mwsshcode_run
/inc/class_parser.php 187 pluginSystem->run_hooks
/inc/functions_post.php 721 postParser->parse_message
/showthread.php 1063 build_postbit
Warning [2] preg_replace_callback(): Requires argument 2, 'mwsshcode_check("$1","$2")', to be a valid callback - Line: 197 - File: inc/plugins/mwsshcode.php PHP 7.3.4 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/plugins/mwsshcode.php 197 preg_replace_callback
/inc/class_plugins.php 139 mwsshcode_run
/inc/class_parser.php 187 pluginSystem->run_hooks
/inc/functions_post.php 721 postParser->parse_message
/showthread.php 1063 build_postbit
Warning [2] preg_replace_callback(): Requires argument 2, 'mwsshcode_check("$1","$2")', to be a valid callback - Line: 197 - File: inc/plugins/mwsshcode.php PHP 7.3.4 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/plugins/mwsshcode.php 197 preg_replace_callback
/inc/class_plugins.php 139 mwsshcode_run
/inc/class_parser.php 187 pluginSystem->run_hooks
/inc/functions_post.php 721 postParser->parse_message
/showthread.php 1063 build_postbit
Warning [2] preg_replace_callback(): Requires argument 2, 'mwsshcode_check("$1","$2")', to be a valid callback - Line: 197 - File: inc/plugins/mwsshcode.php PHP 7.3.4 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/plugins/mwsshcode.php 197 preg_replace_callback
/inc/class_plugins.php 139 mwsshcode_run
/inc/class_parser.php 187 pluginSystem->run_hooks
/inc/functions_post.php 752 postParser->parse_message
/showthread.php 1063 build_postbit




رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
آیا این تابع برای sql injection خوبه
#1
سلام و عرض ادب و احترام 
حال شما 
خوب هستین 
به این کد من یه نگاه بندازین .
این کد عمل Insert رو با pdo انجام میده .
من خونده بودم که اگه از pdo استفاده کنم . جلوی حملات sql injection گرفته میشه .
آیا من تو کد زیر تونستم این کار رو به خوبی انجام بدم ؟
به نظرتون کدم مشکلی داره ؟

[shcode=php]public function insert($table,$data){

   $this->setAttribute(pdo::ATTR_EMULATE_PREPARES,false);

ksort($data);

$keyfild='`'.implode('`,`',array_keys($data)).'`';

$valfild=':'.implode(',:',array_keys($data));

$res=$this->prepare("INSERT INTO `$table` ($keyfild) VALUES ($valfild)");



foreach($data as $key=>$val){

$res->bindValue(":$key",$val);

}

$rr=$res->execute();

if($rr){

session::set('insert',true_matn);

}else{

session::set('insert',false_matn);

   }
}[/shcode]
پاسخ
تشکر شده توسط:
#2
بله این مشکل sql injection نداره. ولی به جای اینکه خودتون کد دسترسی به دیتـابیس بنویسید و بهش شک داشته باشید ازGithub.com کتابخونه های آماده دسترسی به دیتابیس دانلود کنید
پاسخ
تشکر شده توسط:
#3
باید برای مقادیر از array_values استفاده کنید. ضمناً یکم مرتب‌تر بنویسید و سعی‌کنید ثابت‌ها رو با حروف بزرگ بنویسید (یه‌جور قرارداد نانوشته است بین برنامه‌نویس‌ها) Ywink

[shcode=php]public function insert($table, $data)
{
$this->setAttribute(pdo::ATTR_EMULATE_PREPARES, false);
ksort($data);
$keyField = '`' . implode('`,`', array_keys($data)) . '`';
$valField = ':' . implode(',:', array_values($data));
$res = $this->prepare("INSERT INTO `{$table}` ({$keyField}) VALUES ({$valField});");
foreach($data as $key => $val) {
$res->bindValue(":{$key}", $val);
}
session::set('insert', $res->execute() ? TRUE_MESSAGE : FALSE_MESSAGE);
}[/shcode]
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان