2016-02-03 3 views
2

У меня есть простая форма сообщения, которая отправляет данные с одной страницы на другую, однако, когда я нажимаю кнопку submit, процесс.php говорит, что не введено имя пользователя и пароль. Я чувствую, что мне не хватает чего-то глупого очевидного. Что я здесь делаю неправильно?Отправка почты PHP

login.php

<form action="login_process.php" method="POST"> 
     <h1>Login page</h1> 
     <input name="username" type="text"><br> 
     <input name="password" type="password"><br> 
     <input type="submit" value="Log in"> 
</form> 

login_process.php

var_dump($_POST['username']); 
    echo '<br>'; 
    if (!isset($_POST['username']) || !isset($_POST['password'])) { 
     echo 'U heeft geen gebruikersnaam of wachtwoord ingevoerd!'.'<br>'; 
     echo 'username', $_POST['username']; 
     echo '<br>password', $_POST['password']; 
     exit; 
    } else { 
     $sql = "SELECT `username`,`password` FROM `users` WHERE `username` = '" . $_POST['username'] . "' AND `password` = '" . $_POST['password'] . "'"; 
     echo 'Gebruikersnaam en wachtwoord goed ingevoerd.'; 
    } 
+1

Я только что проверил это, и это работает, вы уверены, что файлы находятся в том же каталоге? –

+1

Что возвращает 'var_dump ($ _ POST)'? – Daan

+0

SamSwift 웃 Да, я просто скачал и дважды проверил его, они находятся в том же каталоге. Daan var_dump дает мне «NULL» –

ответ

0

Хорошо! Я полностью смутился от моей стороны. У меня в файле был файл .htaccess, который, по-видимому, блокировал все данные POST. Я удалил файл .htaccess для тестирования, и данные POST были переданы в login_process.php аккуратно.

Смотрите эту должность для получения дополнительной информации: Seems like POST values are lost when .htaccess RewriteRule used. GET values are OK. How to fix?

1

Я думаю, что это то, что вам нужно -

if ($_POST['username']=="" || $_POST['password']==""){ 
    echo 'U heeft geen gebruikersnaam of wachtwoord ingevoerd!'.'<br>'; 
    echo 'username', $_POST['username']; 
    echo '<br>password', $_POST['password']; 
    exit; 
} else { 
    $sql = "SELECT `username`,`password` FROM `users` WHERE `username` = '" . $_POST['username'] . "' AND `password` = '" . $_POST['password'] . "'"; 
    echo 'Gebruikersnaam en wachtwoord goed ingevoerd.'; 
} 

Но ваш код будет иметь много вопросов безопасности, как кто-то может попытаться взломать ваше приложение, вставив Программирование логика в имени пользователя и пароле.

Лучший способ - 1. Используйте strip_tags ($ input) - это приведет к удалению тегов из входов, поскольку имя пользователя или пароль не должны иметь теги; 2. Не храните пароль пользователя, как он есть в вашей БД, поскольку вы делаете это выше, используйте зашифрованную форму текста.

+1

Шифрование можно применять примерно так:

+0

На моей странице login_process есть только это: if (isset ($ _ POST)) {var_dump ($ _ POST); }, и он по-прежнему сбрасывает NULL. Поэтому я не уверен, что с этим связано, и я также знаю, что хранение паролей неверно, но я хочу, чтобы эта работа была первой, прежде чем я внедряю какую-либо безопасность. –

+1

можете ли вы просто сделать это в верхней части своего php-файла и сообщить мне, какой результат вы получите - echo $ _POST ['username']; echo $ _POST ['password']; –

Смежные вопросы