با عرض سلام و خسته نباشید
وقتی از طریق فرم داده ها رو ارسال میکنیم مختصات را به شکل string ارسال میکند و برای validation در سمت سرور مشکل ساز میشود.
array(4) {
["lat"]=> string(17) "35.69968630125204"
["lng"]=> string(17) "51.338016986846924"
["title"]=> string(5) "place"
["type"]=> string(1) "0"
}
در سمت سرور مختصات را تبدیل به float کردم اما مشکل اینجاست که اگر فرم دستکاری شده باشد و به جای عدد مثلا متن گذاشته شده باشد اون هم تبدیل به float(۰) میشود و نمیتوان از تابع is_float استفاده کرد.(میشود برای این مشکل تنظیم کرد که اگر data == ۰ بود اخطار بده اما من دنبال راه اصولی هستم )
۱. چطوری میشود تنظیم کرد که مختصات را به شکل عددی ارسال کند.(دادن type="number" به input مشکل را حل نکرد!)
۲. چطوری در PHP میتوان تعداد ارقام اعشار را محاسبه کرد برای validation اطلاعات ارسالی از فرم لازمش دارم.
سلام و احترام
برای اینکه بتونید با فرم عدد اعشاری ارسال کنید به سمت سرور میتونید از input زیر برای html خودتون استفاده کنید
<input type=number step=0000.00001 />
برای محاسبه تعداد ارقام اعشار بعد از دات:
$float_number = 1.9020441;
$exploded_float = explode(".", $float_number);
echo strlen($exploded_float[1]);
ممنون بابت پیگیریتون
همونطور که گفته بودم بعد از دادن type="number" همچنان نتیجه به صورت زیر است:
array(4) {
["lat"]=> string(18) "35.699733676790544"
["lng"]=> string(17) "51.33805990219117"
["title"]=> string(5) "place"
["type"]=> string(1) "0"
}
اگر سمت php برگردونم به float مشکلی که ایجاد میشه اینه که اگر فرم دستکاری شده باشه و متن به جای عدد برگردونه در اون زمان نیز متن ماهیت float با محتوای 0 به خود میگیره و اینطوری فرآیند validation به درستی نوشته نمیشه.
دنبال بهترین راه برای validation اطلاعات فرم هستم.
شما میتونید با رشته ارسال کنید float رو و با regex اون رو validate کنید
function isFloat($floatString)
{
return (bool)preg_match('/(^\d+\.\d+$|^\d+$)/',$floatString);
}