Код проверки формы PHP раньше работал нормально, перестал работать, и я не знаю почему - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть довольно простой код проверки php на моем сайте, и он работает довольно давно.Я ни в коем случае не эксперт php (очевидно, я уверен ниже) :), но этот код до сих пор работал нормально для моих нужд ... Я недавно понял, что этот код перестал работать, и я не уверен, почему,Любая помощь будет оценена.Я подумал, может быть, что-то изменилось на сервере, поэтому я поболтал с моей принимающей компанией, и они заверили меня, что ничего не изменилось, и что это должно быть ошибкой кода.

Вот основные части кода:

<?php // Handle the form submission

    // VALIDATE Forms Required Fileds       
    //Check for name.       
    if (strlen($_POST['name']) > 0 ){
        $name = $name;
    } else {
        $name = NULL;
    }   

    //Check email was entered
    if (strlen($_POST['email'])=='') {
        $email = NULL;
    } elseif(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $_POST['email'])) {
        $email = "invalid";
    } else {
        $email = $email;
    }
    // END VALIDATION

    // If all is ok then handle form
    if ((isset($_POST['Submit']) || isset($_POST['Submit_x'])) && ($name && $email && $email != "invalid"))
    {       
        // Capture information and format for email
        $subject="Side Nav Form"; // Subject of Email

        $body = "Contact Us:\n\n";      
        $body .="Name..............: " ."$name\n";
        $body .="Email.............: " ."$email\n";
        $body .="Phone.............: " ."$phone\n\n";
        $body .="Reason for inquiry: " ."$inquiryReason1, $inquiryReason2, $inquiryReason3\n";
        $body .="Current Website...: " ."$current_site\n\n";
        $body .="Comments/Questions: " ."$addtlComments\n";

        //Email form results
        mail("xxx@xxx.com", $subject, $body, "From:" .$email);

        // Display thank you Message if form submitted successfully.
        echo '<h3>Thank you!</h3><p>We received your information and will get back to you as soon as possible.</p>';

    } else {    

        // If Validating form: Show validation errors.
        if ((isset($_POST['Submit']) || isset($_POST['Submit_x'])) && (!$name || !$email || $email == "invalid")) { 
        echo '<p class="error">';
             if (!$name) {
                    echo "*Please enter your name.<br />";
                    }
             if (!$email) {
                    echo "*Please enter your email address.<br />";
                    } 
             if ($email == "invalid") {
                    echo "*Please enter a valid email address. (xxx@xxx.xxx)";
                    } 
        echo '</p>';
        }
    // Display the form if user has not submitted successfully or at all.
?>
<fieldset><label for="name">*Name:</label> <input type="text" name="name" id="name" value="<?php if (isset($_POST['name'])) echo $_POST['name']; ?>" /></fieldset>
<fieldset><label for="email">*Email:</label> <input type="text" name="email" id="email" value="<?php if (isset($_POST['email'])) echo $_POST['email']; ?>" /></fieldset>

... rest of form fields...

<input name="Submit" type="submit" value="Submit" class="submit" />
</form>
<?php       
    } // End of Form Handler
?> 

1 Ответ

1 голос
/ 20 мая 2012

eregi() устарело. Вместо этого используйте preg_match(). Вы также можете использовать filter_var(email, FILTER_VALIDATE_EMAIL) для проверки электронной почты.

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