Где бы я запустить этот метод validateForm? Я очень новичок в PHP-разработчике. - PullRequest
0 голосов
/ 19 февраля 2010

Вот что у меня есть:

<html>
<head>
    <?php
    $validForm = false;

    function getValue($field){
        if(isset($_GET[$field])){
            return $_GET[$field];
        }
        else{
            return "";
        }
    }

    function validateForm(){
     //magic goes here.   
    }        
    ?>
</head>

<body>
    <?php if($validForm == false){ ?>
    <form action="class2.php" method="get">
        <dl>
            <dt>First Name:</dt>
            <dd><input type="text" value="<?php echo htmlspecialchars(getValue('name')) ?>" name="name" />                    
            </dd>                

            <dt>Last Name:</dt>
            <dd><input type="text" value="<?php echo htmlspecialchars(getValue('lastname')) ?>" name="lastname" />                    
            </dd>

            <br />                
            <dt>
                <input type="submit" value="enviar" />
            </dt>                
        </dl>
    </form>
    <?php
    } else {
    ?>

    <h1>Congratulations, you succesfully filled out the form!</h1>

    <?php }
    ?>
</body>

Куда бы я положил вызов validateForm ()? Я не уверен. Я хочу продолжать показывать форму, пока переменная $ validForm не станет истинной. :)

Спасибо, ТАК, что ты всегда помогаешь мне.

Ответы [ 4 ]

0 голосов
/ 19 февраля 2010
<html>
  <head>
  <?php
    $validForm = validateForm();

с.

0 голосов
/ 19 февраля 2010
function validateForm(){
 if ( ) // Your form conditions go here
 {
    return true;
 } else {
    return false;
 }
} 
if ( $_GET ) // Only validate the form if it was submitted
{
   $validForm = validateForm();
} else {
   $validForm = false;
}

Примеры для некоторых условий:

if ( !empty ( $_GET[ 'name' ] ) and !empty ( $_GET[ 'lastname' ] ) ) // Check if the user entered something in both fields

Я могу только порекомендовать вам также изменить вашу функцию getValue.

Это будетХорошая идея изменить

return $_GET[$field];

на что-то вроде

return htmlspecialchars ( trim ( $_GET[$field] ) );

Это удалит ненужные пробелы и сразу выйдет из вывода.

Следующий или, вероятно, первый шагдолжно потребоваться изменить вашу форму с GET на POST, так как в большинстве случаев плохая идея отправлять данные формы через GET.

0 голосов
/ 19 февраля 2010
  1. Я бы проверил переменные $ _POST в вашей функции getValue, когда вы пытаетесь проверить данные формы (ваши проверяющие переменные $ _GET, которые представляют собой данные, переданные через URL), вы также можете добавить "подрезать"
  2. присвоить кнопке подтверждения идентификатор и проверить, была ли форма отправлена ​​таким образом

например. <input type="submit" value="enviar" id="submitButton" />

установка $ validForm будет выглядеть так: $validForm = validateForm(); (вместо "$ validForm = false;")

Ваша функция validateForm должна затем проверить, установлено ли "$ _POST [" submitButton "]", и если ваши данные верны (set, right type и т. Д. И т. Д.), Если все это в порядке, верните "true" ", иначе" ложь "

0 голосов
/ 19 февраля 2010

Вы должны добавить имя к кнопке отправки:

  <input type="submit" value="enviar" name="validate" />

И после объявления validateForm

вы положили

if(getValue("validate") != "")
validateForm();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...