PDA

View Full Version : اعتبار سنجی اعداد بزرگتر از ده رقم



saeed-71
پنج شنبه 11 دی 1393, 12:13 عصر
سلام.
برای اعتبار سنجی اعدا بزگتر از ده رقم نمیشه از این تابع استفاده کرد


//check get data
function Check_Get($value){
$intvalue = intval($value);
return $intvalue;
}


اما از این یکی میشه استفاده کرد.میخواستم ببینم مشکلی نداره؟امن هستش؟میخوام برای اعتبار سنجی اعداد استفاده کنم ازش.اعداد حدود 30 رقمی


function Check_Get($value){
$intvalue = preg_replace('/[^0-9]/','',$value);
return $intvalue;
}

تابع دومی یه مشکلی داره


<?php
echo Check_Get(012345678901234567890123456789)=342391;//خروجیش
echo Check_Get('012345678901234567890123456789')=012345 678901234567890123456789;//خروجیش
echo Check_Get($_GET['s']);// اگه داخل گت بین اعداد یه علامت شارپ بذاریم فقط تا همونجا رو بر میگردونه.
?>

bagherok
پنج شنبه 11 دی 1393, 14:17 عصر
خب اینکه معلومه رنج اعداد در 32 بیت بین
-2147483648
تا
2147483647
هست.


مقادیر درون GET بصورت رشته ذخیره میشن پس هرچی رو میشه توش ذخیره کرد.
پس وقتی مقداری رو توسط GET به یه تابع پاس میدید مشکلی نیست.

kabootar_y
پنج شنبه 11 دی 1393, 20:47 عصر
شما دقیقا میخواهید چه کار کنید؟

اعتبار سنجی برای اینکه آیا داده از نوع عددی است یا نه؟

یا

اعتبار سنجی برای اینکه آیا عدد بزرگتر یا کوچکتر از ده رقم است یا خیر؟

hamedarian2009
پنج شنبه 11 دی 1393, 22:14 عصر
intval کارش اعتبارسنجی نیست فقط براتون رشته رو به عدد تبدیل میکنه
برای اینکار میتونید از is_numeric (http://php.net/manual/en/function.is-numeric.php) استفاده کنید