اعتبار سنجی اعداد در فرم تماس با ما php

1365311

New Member
با سلام
بنده تو فرم اطلاعاتی می خواستم برای فیلد شماره تلفن کد اعتبار سنجی قرار بدم یعنی وقتی تو این فیلد به غیر از عداد استفاده شه فرم ارسال نشه می خواستم از دوستان در این مورد راهنمایی بخوام فرم مربوط رو هم ضمیمه کردم
با تشکر
 

پیوست ها

  • form.zip
    4.2 کیلوبایت · بازدیدها: 21

greencat

Member
سلام
با عبارت‌های منظم (regular experition) می تونید این کار رو انجام بدید، میخوایید شماره تلفن وارد شده توی چه قالبی باشه؟ (منظورم توی چه فرمی از اعداد مثال : 214-257158544-21) یه نمونه از شماره تلفن رو اینجا بگید تا عبارت منظمش رو بهتون بگم.
 

Milad

Well-Known Member
اگر فقط عدد بودن اطلاعات براتون مهم هست میتونید با is_numeric یا اگر اعداد صحیح هستند intval چک کنید ، اگر بخواید در یک قاعده خاصی دریافت بشه همینطور که دوستمون گفتند باید با عبارات منظم قانون تعیین کنید .
 

1365311

New Member
با سلام
و تشکر ویژه از دوستان
بنده می خوام شماره تلفن ثابت به همراه کد شهر رو از این طریق اعتبارسنجی کنم و همچنین تو یه فیلد دیگه شماره موبایل رو حالا نمی دونم قاعده درست برای این شماره ها باید چطوری باشه ؟1
البته شاید برای فیلد شماره موبایل روشی که Roxeta عزیز فرمودند کاربرد داشته باشه که با این تفاوت که تعداد اعداد قابل تایپ در فیلد رو 11 وارد کنیم برای شماره ثابت هم نمی دونم چطور کد رو از شماره جدا کنیم چون کد اکثر شهرهای ایران 4 رقمیه و شماره تلفن هاش هم 7 رقمی و در ضمن کد تهران 3 رقمیه و شماره تلفن هاش 8 رقمی با این اوصاف فکر نکنم بشه کد شهر و شماره تلفن رو از هم جدا کرد ؟؟؟؟
ولی شاید بشه از روش شماره موبایل برای فیلد تلفن ثابت استفاده کرد .
با تشکر
 

greencat

Member
سلام
چرا نشه که کد رو از شماره جدا کرد؟؟؟ شما کنار فیلد ورودی برای شماره تلفن یک نمونه برای کاربر می‌نویسید و بهش میگید که طبق این فرمت شماره رو وارد کنه مثلا 88888888-021 و با عبارت منظم بودن 3یا 4 شماره قبل از خط تیره قرار داشتن خط تیره و قرار داشتن 8 عدد بعد از خط تیره و عدد بودن کاراکتر‌های ورودی رو چک می‌کنید و با خود همان عبارات منظم می‌تونید تعیین کنید که اعداد چند تا باشن مثلا قبل از خط تیره حداقل 3 (برای تهران) و حداکثر 4 (برای سایر شهرستان‌ها) و بعد از خط تیره هم به همین نحو حداقل و حداکثر رو تعیین می کنید.
 

1365311

New Member
با سلام و عرض ادب خدمت دوستان
دوست عزیز شما می تونید عبارت منظم روشی رو که فرمودید رو در این تاپیک بذارید؟
با تشکر
 

Milad

Well-Known Member
بفرمایید ، در قالب تابع :

PHP:
<?php

function check_tel($tel){

    if ( strpos($tel,'-') == 3 ){
    
        $Stat = preg_match("/^(021-88)[0-9]{6}$/",$tel);
    }
    else if ( strpos($tel,'-') == 4 ){
    
        $Stat = preg_match("/^(0[0-9]{3}-)[0-9]{7}$/",$tel);
    }
    else{
    
        $Stat = 0;
    }
    
    return $Stat;
}

?>
 

eAmin

Well-Known Member
سلام
به نظر من بهترین کار این هست که فیلد کد شهرها رو از شماره تلفنها جدا کنید، ولی اگر این روش بدرد کار شما نمیخوره می تونید از این عبارت باقائده استفاده کنید:
PHP:
preg_match("/^\d{3,4}\-\d{7,8}$/", $phoneNumber);
امتحان نشده، ولی باید به درستی اجرا بشه.

موفق باشید.
 
آخرین ویرایش:

1365311

New Member
با عرض سلام خدمت تمامی دوستان
بنده کدهای که شما فرموده بودید رو امتحان کردم ولی جواب نداد البته این بخاطر تغییر جزئی در نوشتن کدهاست که با نمونه کدهای فرم بنده فرق می کنه
بنده یه کد اعتبارسنجی ایمیل رو قرار می دم از دوستان اگه لطف کنند و کد های بالا رو به فرم این کد در بیارند ممنون می شم
در ضمن یه سوال دیگه از دوستان داشتم چجوری میشه فقط زبان فارسی رو هنگام پر کردن این فرم فعال کرد یعنی اگه زبان پیش فرض کیبورد روی en باشه ، هنگام پر کردن فرم فقط فارسی تایپ بشه؟!
با تشکر
PHP:
    //checks for an email
    if (empty($_POST['emailfrom']) ) {
        $errors[]='ایمیل خود را وارد نکرده اید';
        } else {

        if (!eregi ('^[[:alnum:]][a-z0-9_\.\-]*@[a-z0-9\.\-]+\.[a-z]{2,4}$', stripslashes(trim($_POST['emailfrom'])))) {
            $errors[]='آدرس ایمیل وارد شده اشتباه می باشد';
        } // if eregi
    } // if empty email
 
آخرین ویرایش:

Milad

Well-Known Member
کد مشکلی نداره ، تست هم شده ، شما به عنوان یک تابع ازش استفاده کنید :

PHP:
function check_tel($tel){

    if ( strpos($tel,'-') == 3 ){
    
        $Stat = preg_match("/^(021-88)[1-9][0-9]{5}$/",$tel);
    }
    else if ( strpos($tel,'-') == 4 ){
    
        $Stat = preg_match("/^(0[0-9]{3}-)[1-9][0-9]{6}$/",$tel);
    }
    else{
    
        $Stat = 0;
    }
    
    return $Stat;
}

/// SCRIPT

if (empty($tel) ) {
        $errors[]='تلفن را وارد نکرده اید';
} else {
    if (!check_tel($tel)) {
        $errors[]='تلفن اشتباه وارد شده';
    } 
}
 
آخرین ویرایش:

greencat

Member
هر دو کد درست به نظر می‌رسند، کد جناب Roxeta که به صورت تابع هستش و فقط کافی شماره تلفن رو بهش ارسال کندی و با یه عبارت شرطی مثل if فقط true یا false بودن مقدار return شده رو بررسی کنید.
در مورد کد جناب eAmin هم کافی این تکه از کد ایشون رو:
کد:
"/^\d{3,4}\-\d{7,8}$/"
جایگزین این قطعه از کدخودتون بکنید:
کد:
^[[:alnum:]][a-z0-9_\.\-]*@[a-z0-9\.\-]+\.[a-z]{2,4}$',
یعنی در آخر سر کدتون به این شکل باید باشه:
کد:
    //checks for an email
    if (empty($_POST['emailfrom']) ) {
        $errors[]='ایمیل خود را وارد نکرده اید';
        } else {

        if (!eregi ("/^\d{3,4}\-\d{7,8}$/", stripslashes(trim($_POST['emailfrom'])))) {
            $errors[]='آدرس ایمیل وارد شده اشتباه می باشد';
        } // if eregi
    } // if empty email
 

1365311

New Member
با سلام خدمت دوستان
و با تشکر از دوستان عزیز و کد های فوق درست کار میکنه یعنی هنگام خالی گذاشتن فرم پیغام عدم پر کردن فیلد مورد نظر رو میده ولی هیچ کارکتر عددی رو قبول نمیکنه و پیغام تلفن اشتباه است رو میده حتی من شماره 88888888-021 رو هم وارد کردم ولی باز هم پیغام فوق نمایش داده میشه؟!
با تشکر
 
آخرین ویرایش:

greencat

Member
این کد رو امتحان بکنید :
کد:
    //checks for a telephone number
    if (empty($_POST['emailfrom']) ) {
        $errors[]='شماره تلفن خود را وارد نکرده اید';
        } else {

        if (!eregi ("^([0-9]{3,4})-([0-9]{7,8})$", stripslashes(trim($_POST['emailfrom'])))) {
            $errors[]='تلفن وارد شده اشتباه می‌باشد';
        } // if eregi
    } // if empty a tele number
 

جدیدترین ارسال ها

بالا