PDA

View Full Version : چند سوال از pdo



zahra-j
یک شنبه 23 شهریور 1393, 23:46 عصر
سلام
1. آیا برای هر بار استفاده از دستورهای prepare و query باید از دستور
try {


} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
استفاده کرد؟
2.از آنجایی که pdo از لحاظ امنیت مطمئن هست موقع درج در پایگاه داه و یا مقایسه داده ها تا چه اندازه باید پاکسازی انجام شود؟(مثلا مقایسه یوزرنیم و پسورد یا درج آنها)
3.در صورتی که بخواهم بنویسم اگر ثبت اطلاعات انجام شد ای عملیات را انجام بده به چه صورت بایدبنویسم ؟
اینو نوشتم ولی جواب نمیده
//ثبت اطلاعات در دیتابیس
$data = $pdo->prepare('INSERT INTO login (username,password,email,verify_code,active) VALUES (:username,:password,:email,:verify_code,:active)' );
$data->execute(
array(
':username' => $user,
':password' => $pass ,
':email' => $email ,
':verify_code' => $activation_code ,
':active' => 0
));



if($data){

//ارسال ایمیل
$sentmail = mail($to,$subject,$message,$header);

}

4.برای پاکسازی حروف فارسی و درج در پایگاه داده میتوان از دستور preg_match استفاده کرد؟ به چه صورت؟

Mohammadsgh
دوشنبه 24 شهریور 1393, 00:10 صبح
1-نه
2-الان کاری که کردید درسته.با همین روش کار کنید:لبخندساده:
3-$data رو بریزید تو یه متغییر اون زمان چک کنید
4-منظورتونو متوجه نشدم میشه بیشتر توضیح بدید؟:لبخندساده:

zahra-j
دوشنبه 24 شهریور 1393, 00:31 صبح
3.میتونم از دستور rowcount() استفاده کنم؟
4. مثلا در مورد حروف انگلیسی به این صورت است preg_match("/^[a-zA-Z ]*$/",$name)
برای حروف فارسی میشه به این صورت نوشتpreg_match("/^[الف-ه]*$/",$name) ؟

hamedarian2009
دوشنبه 24 شهریور 1393, 09:37 صبح
1-try catch برای مدیریت خطاها هست که میتونید ازش استفاده نکنید ولی بهتره استفاده کنید
2- در prepared statements فقط جلوی حملات SQL Injection رو میگیره و شما باید سایر موارد فیلتر ورودی هارو انجام بدین فقط نیازی به mysql_real_escape_string() ندارین
3-

$result= $data->execute(
array(
':username' => $user,
':password' => $pass ,
':email' => $email ,
':verify_code' => $activation_code ,
':active' => 0
));



if($result){

//ارسال ایمیل
$sentmail = mail($to,$subject,$message,$header);

}


4-

$string = 'برنامه نویس';

if(!preg_match('/^[آ-ی\s]+$/u', $string)){
echo 'Invalid';
}