رفتن به مطلب

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


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

سلام

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

حالا ببینید من از دستور 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>

 

لینک به ارسال

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

<!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
لینک به ارسال
در 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]+

 

لینک به ارسال
در ۱ ساعت قبل، 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
لینک به ارسال
در ۱ ساعت قبل، 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 راه استفاده کنید از خاصیت maxlength مقدار میدین مثلا (بهتره)

maxlength = "11"

 

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

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

 

لینک به ارسال

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

 

لینک به ارسال

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

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

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...