رفتن به مطلب

مجاز کردن فقط "اعداد" برای یک فیلد


پست های پیشنهاد شده

سلام

دوستان من در کد زیر میخوام برای فیلد تنظیم کنم که فقط اعداد قابل پذیرش باشه

حالا ببینید من از دستور pattern استفاده کردم و مقدارش رو [0-9] قرار دادم . حالا درسته و فقط اعداد رو قبول میکنه اما! فقط تک اعداد رو ، یعنی یک عدد رو قبول میکنه و اگه دو یا چند عدد رو باهم وارد کنی بازهم خطا میده

زیاد امنیتی نیست ، فقط بتونه مقدار عددی رو دریافت کنه کافیه

این اصل کد من هست 

<tr>
				<td><?php _e('مبلغ', 'test'); ?></td>
				<td>
					<input type="text" name="payer_price" dir="ltr" class="test-input" />
					<span class="description-require">*</span>
					<br /><span class="description-field"><?php _e('به تومان', 'test'); ?></span>
				</td>
</tr>

 

ویرایش شده توسط logomaster
لینک به ارسال

سلام

اگر از تابع is_numeric استفاده کنید راحت ترید، اگر به پترن هم نیاز شد بگید قرار بدم.

کد نمونه :

<!doctype html>
<html lang="en">
<body>
</body>
<html>
<body>
<?php
if (isset($_POST["name"]) && is_numeric($_POST["name"])) {
    echo 'it is number';
} else {
    echo "<form method=\"post\">";
    echo "number : <input type=\"text\" name=\"name\"><br>";
    echo "<input type=\"submit\">";
    echo "</form>";
}
?>
</body>
</html>
</html>

 

  • امتیاز 1
لینک به ارسال

کد استانداردتر :

<!doctype html>
<html lang="en">
<body></body>
<html>
<body>
<?php
if (filter_input(INPUT_POST, 'number', FILTER_VALIDATE_INT)) {
    echo 'it is number';
} else {
    ?>
    <form method="post">
        number : <input type="text" name="number"><br>
        <input type="submit">
    </form>
    <?php
}
?>
</body>
</html>
</html>

 

ویرایش شده توسط hamidwi
  • امتیاز 1
لینک به ارسال
در 3 ساعت قبل، hamidwi گفته است :

کد استانداردتر :


<!doctype html>
<html lang="en">
<body></body>
<html>
<body>
<?php
if (filter_input(INPUT_POST, 'number', FILTER_VALIDATE_INT)) {
    echo 'it is number';
} else {
    ?>
    <form method="post">
        number : <input type="text" name="number"><br>
        <input type="submit">
    </form>
    <?php
}
?>
</body>
</html>
</html>

 

خیلی ممنون از شما دوست عزیز . 

ببینید ، باتوجه به اینکه تایید فیلدهای فرم من ، به جای دیگه ارسال و اعتبارسنجی میشه ، من نمیتونم حتی الامکان از php استفاده کنم ، اگه همون پترن باشه به صورت ساده که فقط اجازه تایپ غیر از حروف رو نده ممنون میشم ! البته به اولین پست من در این تاپیک هم توجه داشته باشید ، چون از پترن استفاده کردم اما نمیدونم مشکلش از کجا بوده

خیلی ممنون
 

لینک به ارسال


ممنون از شما آقای @hamidwi ، پترن رو به شکل زیر استفاده کردم و درست شد.

pattern="([0-9]).{2,}"

اما حالا یک مشکل دیگه وجود داره !!! 

فقط رقم اول که عدد باشه خطا نمیده (مابقی هر چی بود بود). ینی فقط در صورتی که رقم اول عدد نباشه خطا میده اما اگه بعد از رقم اول ، بین رقم ها یا ... حروف هم قرار بگیره خطا نمیده . برای این باید چیکار کرد؟

ویرایش شده توسط logomaster
لینک به ارسال

شما باید پترن خودتونو به یکی از 2 حالت زیر بنویسین

d\ یعنی عدد برابر [0-9] هست + هم یعنی بقیه کاراکترها

 

\d+
یا
[0-9]+

 

  • امتیاز 2
لینک به ارسال
در ۱ ساعت قبل، lord_viper گفته است :

شما باید پترن خودتونو به یکی از 2 حالت زیر بنویسین

d\ یعنی عدد برابر [0-9] هست + هم یعنی بقیه کاراکترها

 


\d+
یا
[0-9]+

 

ممنونم درست شد . از  [0-9]+ استفاده کردم. حالا میشه لطف کنید و بگید که برای محدود کردن تعداد کاراکترها باید اینو چطوری بنویسم! (ینی به همین [0-9]+ مقدار پترن باید چی اضافه کنم که بشه محدودیت کاراکترها هم براش تعریف کرد. ممنون

لینک به ارسال
نقل قول

ممنونم درست شد . از  [0-9]+ استفاده کردم. حالا میشه لطف کنید و بگید که برای محدود کردن تعداد کاراکترها باید اینو چطوری بنویسم! (ینی به همین [0-9]+ مقدار پترن باید چی اضافه کنم که بشه محدودیت کاراکترها هم براش تعریف کرد. ممنون

سلام و درود

 

این مورد بسیار ساده است زیاد واسه خودتون سختش نکنید.

 

<input name="somename" oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" type="number" maxlength="6">

 

موفق باشید

ویرایش شده توسط naghmesara
  • امتیاز 3
لینک به ارسال
در ۱ ساعت قبل، naghmesara گفته است :

سلام و درود

 

این مورد بسیار ساده است زیاد واسه خودتون سختش نکنید.

 


<input name="somename" oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" type="number" maxlength="6">

 

موفق باشید

ممنون از لطفتون

نمیتونستم داخل فرمم از این دستورات شرطی استفاده کنم ، اما دستور maxlength رو از کدهای شما برداشتم و همچنین از minlenght هم استفاده کردم داخل همون input های فرم خودم و محدودیت رو اعمال کردم. 

 

ویرایش شده توسط logomaster
  • امتیاز 2
لینک به ارسال

برای طولش میتونین از 2 راه استفاده کنید از خاصیت maxlength مقدار میدین مثلا (بهتره)

maxlength = "11"

 

اگه بخواهید تو رجکس محدودش کنید به صورت زیر

فقط 5 عدد
\d{5}
3 عدد و بیشتر
\d{3,}
بین 3 تا 10 عدد 
\d{3,10}
حداکثر 10 عدد
\d{,10}

 

  • امتیاز 2
لینک به ارسال

این اعتبارسنجی ها سمت کاربر هست و راحت میشه پترن رو از سورس حذف کرد. باید علاوه بر سمت کاربر سمت سرور رو هم ولیدیت کنید.

 

  • امتیاز 3
لینک به ارسال

برای اعتبارسنجی همیشه فقط یک سمت مورد فیلتر و بررسی قرار ندید ! سعی کنید هم سمت سرور و هم سمت کاربر هر 2 چک کنید ! مخصوصا سمت سرور ! دلایل چون دستکاری توی مرورگر و یا ... شدنی هست سمت کاربر هر چقدر هم پیچیده بشه اما سمت سرور اینگونه نیست !

استفاده از پترن خوبه ! بررسی با js هم خوبه اما در نهایت با php هم چک کنید که مقدادیر جز شرایط خودتون ارسال نشده باشد و از ارسال ان جلوگیری کنید 

  • پسندیدن 1
  • امتیاز 2
لینک به ارسال

لطفا برای ارسال دیدگاه وارد شوید

شما بعد از اینکه وارد حساب کاربری خود شدید می توانید دیدگاهی ارسال کنید



ورود به حساب کاربری
×
×
  • اضافه کردن...