Intereting Posts
Проверьте, находится ли пользователь на странице Как отобразить запрос WordPress с помощью Ajax L5.1 Class App \ Console \ Kernel не существует Передача переменных в shell_exec ()? Laravel 4 – Ошибка при запуске `composer install` как разбить предложение строки в mysql на слова Почти двойное обнаружение в Solr Что такое код для входа в систему или Запомнить меня во время входа пользователя в PHP API-интерфейс Softlayer для немедленного отменить различные продукты или в юбилейную дату «Неустранимая ошибка: класс не найден в ..», пакет композитора не распознан Как генерировать PDF-файлы _with_ utf-8 многобайтовых символов с использованием Zend Framework База данных PHP / SQL, запрашивающая передовую практику и безопасность Ошибка синтаксиса с MySQL Query Получить идентификатор пользователя при входе пользователя в систему с использованием Username & Password Расчет общего количества оборудования для диапазона дат

Команда заголовка php не работает

У меня возникла проблема с тем, чтобы этот код работал на веб-сайте, который я хотел бы запустить в ближайшее время. В частности, когда я вхожу в заголовок, он не будет перенаправляться после успешного входа в систему. Я использовал этот код много раз, и у меня никогда не было проблем с ним. Единственная разница в том, что я использую другой сервер и другую базу данных. Вот код, который вызывает у меня проблемы:

<?php /*set all the variables*/ $email = $_POST['email']; $password = sha1($_POST['password']); /* hash the password*/ $conn = mysqli_connect ('servername', 'username', 'password', 'databasename') or die('Error connecting to MySQL server'); /*select the id from the users table that match the conditions*/ $sql = "SELECT id FROM users WHERE email = '$email' AND password = '$password'"; $result = mysqli_query($conn, $sql) or die('Error querying database.'); $count = mysqli_num_rows($result); if ($count == 1) { echo 'Logged in Successfully.'; $row = mysqli_fetch_array($result); session_start(); $_SESSION['user_id'] = $row['id']; /*If true head over to the users table*/ header('location: users_table.php'); } /*If invalid prompt them to adjust the previous entry*/ else { echo '<h2>Invalid Login</h2><br />'; echo '<h2>Click <a href="javascript:history.go(-1)">HERE</a> to go back and adjust your entry.</h2>'; } mysqli_close($conn); ?> 

Дело не в правильном подключении, потому что я получаю сообщение «успешный вход», но он не будет перенаправлять вообще.


Спасибо за все ответы, я попытался удалить эхо, но все, что я получаю сейчас, это пустая страница, я подумал, может быть, это браузер, который я использовал, поэтому переключился на другой, и я все еще просто получаю пустую страницу, любые другие предложения?

Вы не можете повторить что-либо перед своим header .

 echo 'Logged in Successfully.'; 

Это приводит к тому, что вызов header не работает.

 if ($count == 1) { echo 'Logged in Successfully.'; //this statement is creating problem $row = mysqli_fetch_array($result); session_start(); $_SESSION['user_id'] = $row['id']; /*If true head over to the users table*/ header('location: users_table.php'); } 

Это происходит потому, что вы эхом отзываете что-то перед заголовком. Вы должны использовать ob_start() при запуске и ob_end_flush() в конце документа.

или не эхо перед header() . Как мы обнаружили, вы не включили ошибку. Поэтому включите ее.

Вы не можете публиковать header после echo … если это действительно сработало, вы никогда не увидите текст (он просто перенаправит). (Чтобы исправить удаление / прокомментировать echo строку)

Также для заголовка местоположения требуется абсолютный / полный URL (хотя многие браузеры, похоже, справляются с относительными URL-адресами).

Если вы хотите сделать это таким образом (покажите какой-то статус перед рукой), используйте переадресацию HTML или Javascript, которая запускается через пару секунд.

HTML

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Logged in Successfully.</title> <meta http-equiv="REFRESH" content="5;url=http://www.example.com/users_table.php"></HEAD> <BODY> Logged in Successfully. </BODY> </HTML> 

Javascript

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>Logged in Successfully.</title> </HEAD> <BODY onLoad="setTimeout(function() { window.location='http://www.example.com/users_table.php'},5000)"> Logged in Successfully. </BODY> </HTML> 

Еще лучше, чтобы страница users_table.php отображала успешное сообщение для входа и использовала перенаправление заголовка.