Я не могу получить свою форму для отправки. Я использую PHP 5.6.24 и NetBeans 8.2. Любая помощь будет принята с благодарностью!PHP/HTML form submit не работает
файла: index.php
PHP:
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);
date_default_timezone_set('America/New_York');
if(isset($_POST['login_submit'])){
$email = filter_input(INPUT_POST,'email');
$email = filter_var($email, FILTER_VALIDATE_EMAIL);
$password = filter_input(INPUT_POST,'password');
//process log in stuff here
$_SESSION['logged_in'] = 1;
}
//LOG OUT
if(isset($_POST['logout_submit'])){
session_destroy();
if (isset($_SESSION['logged_in']))
unset($_SESSION['logged_in']);
//process additional log out stuff here
}
?>
HTML:
<h4>Dashboard</h4>
<form action="index.php" method="post">
\t <?php if(!isset($_SESSION['logged_in'])) : ?>
\t <label>Email: </label><br />
\t <input type="text" name="email" placeholder="[email protected]"/><br />
\t <label>Password: </label><br />
\t <input type="password" name="password" placeholder="Your secret code"/><br />
\t <br />
\t <input type="submit" value="Log in" name="login_submit" />
\t <?php else : ?>
\t <input type="submit" value="Log out" name="logout_submit" />
\t <?php endif; ?>
</form>
Что происходит:
- Я установил точки останова на
session_start();
и наif(isset($_POST['login_submit'])){
и запустил в режиме отладки. - Код останавливается в точках останова при запуске, как ожидалось.
- Я ввожу адрес электронной почты и пароль и нажмите кнопку «Вход».
- Ничего не происходит; первая точка останова даже не достигнута. Ошибок, предупреждений или уведомлений не отображается.
Я попытался с помощью if($_POST['login_submit']){
if($_POST['login_submit'] == "Log in"){
if(filter_input(INPUT_POST,'login_submit')){
, но ни один из них не работал. Я также создал новую страницу с формой, которая получает файл (<input type="file" name="datafile">
). Откроется диалоговое окно выбора файлов, но кнопка «Отправить» также не отправится на эту страницу.
Для удовольствия я скопировал вывод HTML для файла (посмотреть источник, ctrl + a, ctrl + c) и вставить его в Dreamweaver, а затем сохранить в виде файла HTML. Когда я открыл этот файл в браузере и набрал имя пользователя/pwd и нажал «Вход в систему», он открыл файл index.php, как и ожидалось.
Я подумал: «Возможно, мои точки останова сломаны (хотя они работают, когда страница изначально загружена)», поэтому я застрял в некоторых вызовах функции writeLogEntry, чтобы увидеть, какие строки выполняются. Когда нажата кнопка входа в систему, никаких дополнительных сообщений не было написано.
Странно, что у меня есть еще один (завершенный) проект PHP в NetBeans, код входа/выхода из которого работает отлично. Я использовал те же фрагменты кода для формы входа и обработки в этом новом проекте, и все же я ударил эту кирпичную стену. Любые идеи о том, что попробовать? ТИА.
Я думаю, что вы удалили части своего кода, нам на самом деле нужно помочь вам – davejal
'// обрабатывать журнал здесь, это самая важная часть вашего кода. И вы, кажется, добавляете '$ _SESSION ['logged_in'] = 1;' независимо от результата вашей проверки? – Qirel
У вас также есть логическая ошибка, где как 'if (isset ($ _ SESSION ['logged_in']):' будет только true, если пользователь уже выполнил вход. – Qirel