PHP форма не проверяется с помощью функций

0
<!DOCTYPE HTML>
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
<title>Guestbook</title>
<meta charset="ISO-8859-1">
</head>

<?php



function check($user, $email, $note, $userErr, $emailErr, $noteErr){
$userErr = $emailErr = $noteErr = "";
$user = $email = $note = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["user"])) 
        $userErr = "Please fill out a name.";
    else 
        $user = $_POST["user"];

    if (empty($_POST["email"]))  
        $emailErr = "Please fill out an email.";
    else 
        $email = $_POST["email"];

    if (empty($_POST["note"]))  
        $noteErr = "Please give us your comments.";
    else 
        $note= $_POST["note"];



}

    if ($userErr=="" or $emailErr=="" or $noteErr=="")
        display($user, $email, $note, $userErr, $emailErr, $noteErr);
        else
        displayResult($user, $email, $note);

}

function display($user, $email, $note, $userErr, $emailErr, $noteErr){
print<<<TABLE_BLOCK
<h2>Please Sign Our Guestbook</h2>
<form method="post" action="mock.php"> 
<table>
<tr>
    <td>Name:</td><td><input type="text" size="34" name="user" value=""  /><span class="error"><br> $userErr</span></td>
</tr>
<tr>
    <td>Email: </td><td><input type="text" size="34" name="email" value=""  /><span class="error"><br> $emailErr</span></td>
</tr>
<tr>
    <td valign="top">Comments: </td><td><textarea rows="5" cols="25" name="note"></textarea><span class="error"><br> $noteErr</span></td>
</tr>

<tr>
    <td></td><td></td>
</tr>
<tr>
    <td></td><td align="right"><input type="submit" name="submit" value="submit" /></td>
</tr>
</table>
</form>
TABLE_BLOCK;
}

function displayResult($user, $email, $note){
print<<<TABLE_BLOCK
<h2>Your Input:</h2>
<table>
<tr>
<td>Name:</td><td>$user</td>
</tr>
<tr>
 <td>Email: </td><td>$email</td>
</tr>
<tr>
<td valgin="top">Comments: </td><td>$note</td>
</tr>
</table>
TABLE_BLOCK;
}



if(isset($_REQUEST['submit']))

    check($user, $email, $note, $userErr, $emailErr, $noteErr);
else
    display($user, $email, $note, $userErr, $emailErr, $noteErr);

?>



</body>
</html>

Я уже знаю, что ошибка находится в моих функциях и/или логике, которую я должен выполнить. Но я действительно не уверен, куда именно идти отсюда. Все работало очень хорошо, прежде чем я реализовал функции. Конечно, я новичок в этом. Когда кнопка отправки нажата, данные не отправляются на страницу displayResult(), и мои сообщения об ошибках не появляются, когда форма представляется полностью пустой. Здесь моя текущая страница: http://awsymposium.com/mock.php, и конечный продукт должен выглядеть и работать аналогично этому: http://professorgustin.com/dpr206/guestbook/guestbookonescript.php

Теги:
validation
forms

1 ответ

0
Лучший ответ

Я немного обновил ваш код. Я также настоятельно рекомендую вам также использовать проверку javascript для ваших полей.

Вот код:

<!DOCTYPE HTML>
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
<title>Guestbook</title>
<meta charset="ISO-8859-1">
</head>

<?php



function check($user, $email, $note){
$userErr = $emailErr = $noteErr = "";

    if ($user=="") 
        $userErr = "Please fill out a name.";

    else if ($email=="")  
        $emailErr = "Please fill out an email.";

    else if ($note=="")  
        $noteErr = "Please give us your comments.";

    if (($userErr !="") || ($emailErr !="") || ($noteErr !=""))
        display($user, $email, $note, $userErr, $emailErr, $noteErr);
    if(($userErr =="") && ($emailErr =="") && ($noteErr ==""))
        displayResult($user, $email, $note);

}

function display($user=null, $email=null, $note=null, $userErr=null, $emailErr=null, $noteErr=null){
print<<<TABLE_BLOCK
<h2>Please Sign Our Guestbook</h2>
<form method="POST" action="test321.php"> 
<table>
<tr>
    <td>Name:</td><td><input type="text" size="34" name="user" value="$user"  /><span class="error"><br> $userErr</span></td>
</tr>
<tr>
    <td>Email: </td><td><input type="text" size="34" name="email" value="$email"  /><span class="error"><br> $emailErr</span></td>
</tr>
<tr>
    <td valign="top">Comments: </td><td><textarea rows="5" cols="25" name="note">$note</textarea><span class="error"><br> $noteErr</span></td>
</tr>

<tr>
    <td></td><td></td>
</tr>
<tr>
    <td></td><td align="right"><input type="submit" name="submit" value="submit" /></td>
</tr>
</table>
</form>
TABLE_BLOCK;
}

function displayResult($user, $email, $note){
print<<<TABLE_BLOCK
<h2>Your Input:</h2>
<table>
<tr>
<td>Name:</td><td>$user</td>
</tr>
<tr>
 <td>Email: </td><td>$email</td>
</tr>
<tr>
<td valgin="top">Comments: </td><td>$note</td>
</tr>
</table>
TABLE_BLOCK;
}



if(isset($_REQUEST['submit']))

    check($_POST['user'], $_POST['email'], $_POST['note']);
else
    display();

?>



</body>
</html>
  • 0
    Огромное спасибо. Это действительно сработало очень хорошо. Я действительно ценю твою помощь. Это своего рода дополнительное, но единственное, что действительно показалось странным, это то, что сообщения об ошибках («Вы не заполнили письмо» и т. Д.) Всплывают только по одному, а не одновременно, если несколько полей представлены пустыми , Есть ли способ это исправить? В любом случае, большое спасибо!
  • 0
    О, неважно. Я тупой. Я просто избавился от else в утверждениях else if. Я думаю, что сейчас у меня все хорошо. Благодарю.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню