2013-12-05 5 views
1

Я новичок в развивающемся мире в Интернете. Пожалуйста, не стесняйтесь, чтобы иметь некоторые ошибки и недостаточные знания.Php Input Validation не отвечает

Я пытаюсь изучить процесс проверки ввода пользователей. Ниже мой код:

<?php 

if($_POST['formSubmit'] == "Search") 
{ 
    $errorMessage = ""; 

    if(empty($_POST['formName'])) 
    { 
    $errorMessage .= "<li>No Input</li>"; 
    } 

    $varName = $_POST['formName']; 

    if(!empty($errorMessage)) 
    { 
    echo("<p>There was an error with your form:</p>\n"); 
    echo("<ul>" . $errorMessage . "</ul>\n"); 
    } 

} 

?> 

<form action="index.php" method="post"> 
<input type="text" name="formName" value="<?=$varName;?>"> 
<input type="Submit" name="formSubmit" value=" Search"> 
</form> 

То, что я думаю, что должно произойти, когда пользователь нажимает на кнопку поиска без ввода ничего сообщение об ошибке будет всплывающее, но я не понимаю, почему его не отвечает или вторя ошибку сообщение, я проверяю имена и значения, но, увы, оцените всю помощь/предложения, которые вы могли бы дать tnx.

Спасибо за ответ все, получил его в работоспособное^_^

+1

Значение вашей кнопки отправки имеет дополнительное пространство спереди, поэтому блок if не выполняется. – kinghfb

+0

Также, если вы просто сравниваете '$ _POST ['formSubmit']' в 'if' и по какой-либо причине кто-то не передает никаких параметров с этим именем, он выдает предупреждение. Чтобы этого избежать, вы можете проверить, было ли передано какое-либо значение или нет, прежде чем сравнивать его с помощью 'isset()' – Naryl

ответ

1

Ваш $_POST['formSubmit'] не содержит Search. Он содержит Search (с пространством перед ним).

Из-за этого PHP никогда не подтвердит вашу форму.

+0

wow не видел, чтобы это произошло, спасибо, сэр, я чувствую себя полным неудачником ха-ха. Это сработало, полюбите это сообщество спасибо –

0

Вы вводите неправильное имя своей кнопке отправки.

<input type="Submit" name="formSubmit" value=" Search"> 

должно быть

<input type="Submit" name="formSubmit" value="Search"> 
1

Это работает:

<?php 

if($_POST['formSubmit'] == "Search") 
{ 
    $errorMessage = ""; 

    if(empty($_POST['formName'])) 
    { 
    $errorMessage .= "<li>No Input</li>"; 
    } 

    $varName = $_POST['formName']; 

    if(!empty($errorMessage)) 
    { 
    echo("<p>There was an error with your form:</p>\n"); 
    echo("<ul>" . $errorMessage . "</ul>\n"); 
    } 

} 

?> 

<form action="index.php" method="post"> 
<input type="text" name="formName" value="<?=$varName;?>"> 
<input type="Submit" name="formSubmit" value="Search"> 
</form> 
0

Изменение этой линии

if($_POST['formSubmit'] == "Search") 

to 

if(isset($_POST['formSubmit'])) 
1

вам нужно использовать функцию Исеть()

<?php 
if(isset($_POST['formSubmit'])) 
{ 
    $errorMessage = ""; 

    if(empty($_POST['formName'])) 
    { 
    echo $errorMessage .= "No Input"; 
    } 
else 
{ 
    $varName = $_POST['formName']; 
} 

} 

?> 

<form action="index.php" method="post"> 
<input type="text" name="formName" value="<?=$varName;?>"> 
<input type="Submit" name="formSubmit" value="Search"> 
</form> 
+0

у вас есть опечатка, чувак !!! –

+0

все еще получил опечатку: p вторая строка. – Naryl

0

Я вношу некоторые исправления. Пожалуйста, используйте это.

<?php 
if($_POST['formSubmit'] == "Search") { 
    $errorMessage = ""; 
    if(empty($_POST['formName'])) { 
     $errorMessage .= "<li>No Input</li>"; 
    } else { 
     $varName = $_POST['formName']; 
    } 
    if(!empty($errorMessage)) { 
     echo("<p>There was an error with your form:</p>\n"); 
     echo("<ul>" . $errorMessage . "</ul>\n"); 
    } 
} 
?> 

<form action="index.php" method="post"> 
    <input type="text" name="formName" value="<?=$varName;?>"> 
    <input type="Submit" name="formSubmit" value="Search"> 
</form> 
  1. Исправлено условие, если ($ _ POST [ 'formSubmit'] == "Поиск")
  2. IF $ _POST [ 'FORMNAME'] пусто, то нет необходимости в назначении так не положить его в другое состояние.