PDA

View Full Version : صحت وارد شدن عدد در سمت سرور



$ M 3 H R D A D $
جمعه 26 شهریور 1389, 18:09 عصر
سلاممن میخوام چک کنک کاربر کقدار عددی وارد میکنه یا نه لطفا راهنمایی کنید

funpatogh
جمعه 26 شهریور 1389, 18:26 عصر
باز هم غلط املایی داری که


<?php
$input="salam";
if(preg_match('#^([0-9]*)$#',$input))
echo "ok";
else
echo "NO";

$ M 3 H R D A D $
جمعه 26 شهریور 1389, 18:39 عصر
ول کن جان داداش ما کلا املامون ضعیفه:افسرده:


<?php

$input="2150085739";
if(preg_match('#^([0-9]*)$#',$input))
echo "ok";
else
echo "NO";
//result ok
?>

<?php

$id = '2150085739';
echo is_numeric($id);
///Result 1

?>

<?php
$id = '2150085739';

if($id != strval(intval($id))){
echo("Invalid ID");
die();
}
/* Resukt invalid id */

//////////////////////////////////////
?>

<?php


$id = '2150085739';

if(!(filter_var('2150085739', FILTER_VALIDATE_INT)))
echo "invalid number";

/////////////////////////////////////


?>


این توابع هم مثل علما با هم اختلا نظر دارن قضیه چیه ؟ این ورودی که من دادم مشکل داره ؟ شماره شناسنامه یکی از بچه هاست خود طرفمگیر دارها:متفکر:

من از آخرین کد استفاده میکردم که دستم داشت ثبت نام میکرد متوجه شدم اشکال داره
کدومش مطمئن تره؟

$ M 3 H R D A D $
جمعه 26 شهریور 1389, 19:03 عصر
من یکی از مهم ترین فیلد هام شمارهملی و شماره شناسنامه هستش

همون کدی که با شماره ملی میگفت نا معتبر با عدد صفر میگه معتبر
آخه شماره شناسنامه هم ممکنه بدن صفر

<?php
$id = '0';

if($id != strval(intval($id))){
echo("Invalid ID");
}
else
{
echo "valid";
}
/* Resukt invalid id */

//////////////////////////////////////
?>

funpatogh
جمعه 26 شهریور 1389, 19:09 عصر
ول کن جان داداش ما کلا املامون ضعیفه:افسرده:


<?php

$input="2150085739";
if(preg_match('#^([0-9]*)$#',$input))
echo "ok";
else
echo "NO";
//result ok
?>

<?php

$id = '2150085739';
echo is_numeric($id);
///Result 1

?>

<?php
$id = '2150085739';

if($id != strval(intval($id))){
echo("Invalid ID");
die();
}
/* Resukt invalid id */

//////////////////////////////////////
?>

<?php


$id = '2150085739';

if(!(filter_var('2150085739', FILTER_VALIDATE_INT)))
echo "invalid number";

/////////////////////////////////////


?>


این توابع هم مثل علما با هم اختلا نظر دارن قضیه چیه ؟ این ورودی که من دادم مشکل داره ؟ شماره شناسنامه یکی از بچه هاست خود طرفمگیر دارها:متفکر:

من از آخرین کد استفاده میکردم که دستم داشت ثبت نام میکرد متوجه شدم اشکال داره
کدومش مطمئن تره؟




همشون مطمئن هستند منتها اشکال در کار شماست
اول اینکه اینجا


if(!(filter_var('2150085739', FILTER_VALIDATE_INT)))

عددت رو بین 2 تا سینگل کوتیشن گزاشتی و باید برش داری چون اینجوری میشه String
دوما
عددت زیادی بزرگ هست و عمل سرریز رخ میدهد و میشه Float
پس باید اون آرگومان دومت هم به این تغییر بدهی


if(!(filter_var(2150085739, FILTER_VALIDATE_FLOAT)))
echo "invalid number";
else
echo "valid" ;


--------------------

من یکی از مهم ترین فیلد هام شمارهملی و شماره شناسنامه هستش

همون کدی که با شماره ملی میگفت نا معتبر با عدد صفر میگه معتبر
آخه شماره شناسنامه هم ممکنه بدن صفر

<?php
$id = '0';

if($id != strval(intval($id))){
echo("Invalid ID");
}
else
{
echo "valid";
}
/* Resukt invalid id */

//////////////////////////////////////
?>

این هم غلط هست


if($id != strval(intval($id))){

باید بشه


if($id !== strval(intval($id))){

یعنی از نظر مقدار و نوع 2 تا متغییر

funpatogh
جمعه 26 شهریور 1389, 19:15 عصر
بهترین روش همون preg_match هست چون عددت که بیش از حد زیاد بشه عمل سرریز رخ میدهد و Integer ها به Float تبدیل میشوند

$ M 3 H R D A D $
جمعه 26 شهریور 1389, 19:16 عصر
خدستت درد نکنه سوالم اینه که من میخوام ببینم شماره شناسنامه و شماره ملی و اینا عدد هست یا نه بزرگ و کوچیکیشو نمیدونم که کاربر مقدار میده

فک کنم کد شما بهترین انتخاب باشه نه ؟

$ M 3 H R D A D $
جمعه 26 شهریور 1389, 19:21 عصر
راستی در مورد کوتیشن بگم که حق با شما بوده منتها من کدمو از رکوئستی که میاد میکیرم
که چون تکست باکس هستش خود به خود رشته محسوب میشه پس بهترین انتخابم preg_match آره ؟

<?php




if(!(filter_var($_POST['id_melli'], FILTER_VALIDATE_FLOAT)))
echo "invalid number";
else
echo "valid";

/////////////////////////////////////


?>

funpatogh
جمعه 26 شهریور 1389, 19:22 عصر
چرا عدد هستند اما عدد هم نوع داره یا نه؟
integer
float
double
نوعشون با هم فرق داره
اگه میخوای فقط ببینی عدده یا نه is_numeric هم جوابتو میدهد اما preg خیلی اعطاف داری توش و می تونی بگی که همین عدد میتونه بینش یک کاراکتر - هم باشه و 2 تا بود گیر بدهد و یا space داشت گیر بدهد و .....

$ M 3 H R D A D $
جمعه 26 شهریور 1389, 19:30 عصر
* توی preg_match معنیش همو و هستش ؟

میخوام خط تیره و هم جاز کنم چون کد پستی و شماره ملی اینو دارن و حتی آندرلاین کد چجوری تغییر میکنه ؟

funpatogh
جمعه 26 شهریور 1389, 19:55 عصر
ستاره یعنی 0 یا هر تعدادی


<?php
$input='0088-443433';
if(preg_match('#^([0-9-_]*)$#',$input))
echo "ok";
else
echo "NO";

sama01
شنبه 27 شهریور 1389, 13:34 عصر
کد ملی چنین فرمتی داره: 000-000000-0
درسته؟

پس کاربر مجاز است که رشته‌ای را وارد کند که فقط و فقط 2 خط تیره دارد و از فرمت بالا یعنی عدد سه رقمی، خط تیره،‌ عدد شش رقمی، خط تیره، عدد یک رقمی پی‌روی کنه
چنین چیزی:

preg_match('#^\d{3}-\d{6}-\d{1}$#',$input)