logomaster

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

12 پست در این موضوع قرار دارد

سلام

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

حالا ببینید من از دستور 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 هم چک کنید که مقدادیر جز شرایط خودتون ارسال نشده باشد و از ارسال ان جلوگیری کنید 

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری