не могу выяснить php контактную форму проверки проблем - PullRequest
0 голосов
/ 26 декабря 2011

Привет, я получил контакт из сценария Интернета, с которым я возился, единственная проблема в том, что проверка, которую я пытаюсь добавить, просто не работает.В основном в форме есть имя, адрес электронной почты, номер, тип и комментарий.Мои основные проблемы с проверкой связаны с числовым полем. Мне бы хотелось, чтобы, если оно пустое, оно отображало «нет номера», а когда человек вводил буквы вместо цифр, оно отображало «вам нужно вводить цифры».Что-то вроде лол.но я застрялМожет ли кто-нибудь из вас, гении, помочь мне?Заранее спасибо, вот полный код ниже.ps извините за предыдущий пост я случайно отключил скрипт: $

<?php

$nowDay=date("d.m.Y");
$nowTime=date("H:i:s");
$subject = "E-mail from my site!";  

if (isset($_POST['submit'])) {

    //contactname
    if (trim($_POST['name'] == '')) {
        $hasError = true;
    } else {
        $name = htmlspecialchars(trim($_POST['name']));
    }
    //emailaddress  
    if (trim($_POST['email'] == '')) {
        $hasError = true;
    } else if (!preg_match("/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i",trim($_POST['name']))) {
        $hasError = true;
    } else {
        $email = htmlspecialchars(trim($_POST['email']));
    }            
    //phonenumber    
    if (trim($_POST['number'] == '')) 
    {
       $fake_num = true;
    }
    else if(!is_numeric($_POST['phonenumber']))
    {
        $fake_num = true;
    }
    else 
    {
        $number = htmlspecialchars(trim($_POST['number']));
    }
    //type
    $type = trim($_POST['type']);

    //comment    
    if (trim($_POST['comment'] == '')) {
        $hasError = true;
    } else {
        $comment = htmlspecialchars(trim($_POST['comment']));
    }               

    if (!isset($hasError) && !isset($fake_num)) {
        $emailTo = 'email@hotmail.com';
        $body = "   Name: $name\n\n
                    Email: $email\n\n
                    Phone number: $number\n\n
                    Type: $type\n\n
                    Comment: $comment\n\n
                    \n This message was sent on: $nowDay at $nowTime";

        $headers = 'From: My Site <'.$emailTo.'>'."\r\n" .'Reply-To: '. $email;
        mail($emailTo, $subject, $body, $headers);
        $emailSent = true;
    }
}
?>


<?php

if(isset($hasError))
{
    echo"<p>form has error</p>";
}
?>

<?php           
if(isset($fake_num))
{
    echo"<p>wrong num</p>";
}
?>

<?php
if(isset($emailSent) && $emailSent == true)
{ 
    echo "<p><strong>Email Successfully Sent!</strong></p>";
    echo "<p>Thank you <strong> $name </strong> for using my contact form! Your email was successfully sent and I will be in touch with you soon.</p>";
} 
?>


<div id="stylized" class="myform">
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="bookingform" id="bookingform">
        <h1>Booking form</h1>
        <label>
            Name
            <span class="small"></span>
        </label>
        <input type="text" name="name" id="name" class="required"/>
        <label>
            Your email:
            <span class="small"></span>
        </label>
        <input type="text" name="email" id="email" class="required"/>
        <label>
            Contact Number:
            <span class="small"></span>
        </label>
        <input type="text" name="number" id="number" class="required" />                                                    
        <label>
            Car required:
            <span class="small"></span>
        </label>
        <select name="type" id="type">
            <option selected="selected">Manual</option>
            <option>Automatic</option>
      </select>   
        <label>
            Comment:
            <span class="small"></span>
        </label>
        <textarea cols="" rows="" name="comment" id="comment" class="required"></textarea>                
        <button type="submit" name="submit">Submit</button> 
    </form>
</div>

1 Ответ

2 голосов
/ 26 декабря 2011

Для проверки того, был ли введен номер, вы можете использовать:

if (!preg_match('/^?[0-9]{0,10}$/', $_POST['number'])) {
echo "Please enter a valid number"; //Failed to meet criteria
}

Здесь вы также можете указать количество чисел, которые будут составлять ваше действительное число, в скобках {0,10}, в этом случае номер может быть длиной до 11 цифр. Если вам нужно, чтобы длина была всего 11 цифр, используйте {11}. Если вы хотите проверить, был ли вообще введен номер, вы можете использовать:

if (empty($_POST['number'])) {
echo "Please enter a valid number"; //Field was left empty
}

PHP имеет встроенную функцию проверки электронной почты, которую вы можете использовать

filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)

, который возвращает истину, если введенное письмо имеет правильный формат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...