Переменные значений формы и проблемы отправки - PullRequest
0 голосов
/ 03 июля 2011

Может кто-нибудь помочь мне исправить этот код? Что я хочу исправить это:

Если человек не вводит имя пользователя или пароль, я просто хочу текст ошибки (красные сообщения сбоку) без сообщения «извините, нет доступа» вверху.

Кроме того, если человек получает доступ (или не получает), я хочу, чтобы текстовые поля и кнопка отправки исчезли.

Это не будет реальной формой, поэтому, пожалуйста, не беспокойтесь о том, как я использую имя пользователя и пароль .... и, если возможно, думаете ли вы, что большая часть моего кода может остаться прежней?

Спасибо!

    <?php
    echo '<style type="text/css">
        .error
        {
            color: red;
        }
    </style>';

    $error = false;

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

    if (empty($_POST['username']) || empty($_POST['password']))
    {
    $error = TRUE;
    }

    if (!$error && $_POST['username']=='test' && $_POST['password']=='abc123') {

    echo '<p>Correct. Thank you for entering.<p/>';
    }

    else
    {
    echo '<p>Sorry, no access.</p>
    ';
     }

     }
     ?>
     <form action="" method="post">
     Username: <input type="text" name="username" size="20" value="<?php
    if (isset($_POST['submitted']) && !empty($_POST['username']))
    {
        echo $_POST['username'];
    } ?>" />
    <?php
    if (isset($_POST['submitted']) && empty($_POST['username']))
    {
        echo '<span class="error">Please enter a username.</span>';
    }
    ?>
    <br />Password: <input type="password" name="password" size="20" value="<?php
    if (isset($_POST['submitted']) && !empty($_POST['password']))
    {
        echo $_POST['password'];
    } ?>" />
    <?php
    if (isset($_POST['submitted']) && empty($_POST['password']))
    {
        echo '<span class="error">Please enter a password.</span>';
    }
    ?>
   <br /><input type="submit" value="Log in" />
   <br /><input type="hidden" name="submitted" value="true" />
   </form>

Ответы [ 2 ]

0 голосов
/ 03 июля 2011

Подумайте об использовании события onSubmit в своей форме.

Вам необходимо объединить здесь php и javascript, чтобы предотвратить его отправку.Создайте функцию Jscript, которая вызывается onSubmit.Если значение не заполнено, вернуть false.Это убьет кнопку отправки и распечатает прямо на экране.

Так что просто возьмите это:

$submitted  = isset($_POST['submitted']);
$userName   = isset($_POST['username']) ? $_POST['username'] : null;
$password   = isset($_POST['password']) ? $_POST['password'] : null;

if($submitted)
{
     if (!$userName || !$password) {
        echo '<p class="error">Please go back and fill the inputs.</p>';
    }
}

А затем в вашей форме: <form action="" method="post" onSubmit="checkForm()">

Затем выясните, как вы собираетесь проверять форму с помощью JavaScript.Вы можете собрать все остальное.

0 голосов
/ 03 июля 2011

Попробуйте это:

<style type="text/css">
.error {
color: red;
}
</style>
<?php

$submitted  = isset($_POST['submitted']);
$userName   = isset($_POST['username']) ? $_POST['username'] : null;
$password   = isset($_POST['password']) ? $_POST['password'] : null;

if($submitted) {
    if (!$userName || !$password) {
        echo '<p class="error">Please go back and fill the inputs.</p>';
    } elseif($userName == 'test' && $password == 'abc123') {
        echo '<p>Correct. Thank you for entering.<p/>';
    } else {
        echo '<p class="error">Sorry, no access.</p>';
    }
} else {
?>
<form action="" method="post">
Username: <input type="text" name="username" size="20" value="<?php echo $userName; ?>" />
<br />
Password: <input type="password" name="password" size="20" value="" />
<br /><input type="submit" value="Log in" />
<br /><input type="hidden" name="submitted" value="true" />
</form>
<?php } ?>
...