#php
#php
Вопрос:
Здравствуйте, спасибо за ваше время. У меня есть файл с именем get getresult.php он проверяет имя пользователя и пароль на сервере mysql для пользователей, которые входят в систему.
Я просто перенаправляю на страницу index.php если вход в систему прошел успешно. Спасибо за любую помощь, которую можно предоставить.
<?php
// version 1.1
if (isset($_POST['password'])) // if the password is set then the form has been submitted on login.php page
{
include("config.php");
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$qstr = "SELECT * from members where username ='$username' and password ='$password'";
$result = mysql_query($qstr);
if (mysql_num_rows($result)) echo "<font color=#008000><Center><b>**Successful Login**</b></Center></font>"
**//// I thought maybe this would be the section for the redirection code****
;
else echo "<font color=#ff0000><Center><b>**Failed Login**</b></Center></font>";
mysql_close();
}
else echo "<font color=#ff8000><Center><b>**No login attempted**</b></Center></font>";
?>
Комментарии:
1. Что, если имя пользователя не заполнено?
Ответ №1:
после проверки входа в систему сделайте это:
header("Location: newPage.php"); // replace newpage with whatever you want
Обновить
поместите заголовок ПЕРЕД любым повторением:
header("Location: newPage.php"); // replace newpage with whatever you want
if (mysql_num_rows($result)) echo "<font color=#008000><Center><b>**Successful Login**</b></Center></font>"
Комментарии:
1. Привет. Спасибо за отзыв. Я пробовал вставлять и использовать заголовок, но после успешного включения выдает мне ошибку в этой строке. Можете ли вы сказать мне, как именно мы это сформулировали? Спасибо
2. Выполните «exit()» после команды header(), чтобы не продолжать дальнейшее выполнение программы. Я также не уверен, что относительные URL-адреса являются законными, даже если большинство браузеров принимают их, я бы посоветовал использовать полный URL-адрес.
3. @James обычно я только использую относительные URL-адреса, и вы, возможно, правы насчет
exit
4. Еще раз привет. Я попробовал вашу рекомендацию, но получаю это сообщение об ошибке’
5. @Neal относительные URL-адреса могут работать, но неверны w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30 и я прав насчет
exit()
Ответ №2:
Вы должны убедиться, что вы ничего не повторяете или не печатаете раньше, и тогда вы можете сделать:
header("Location: http://www.yoursite.com");
В качестве альтернативы, если вы хотите перенаправить после того, как напечатали материал, у меня обычно есть функция, которая печатает javascript
function refresh_to( $location = 'index.php'){
$output = '<script> window.location.href = '.$location.'; </script>';
return $output;
}
И вызовите его впоследствии.
Комментарии:
1. Предупреждение: Невозможно изменить информацию заголовка — заголовки уже отправлены (вывод начался с D:Hosting7616039htmlNHandDesignsdemocodedemo-codehostscripts-12870.inc:25 ) в D:Hosting7616039htmlNHandDesignsdemocodedemo-codegetresult.inc в строке 19 > ?>
2. Это потому, что вы уже распечатали содержимое на странице. Если вы используете метод header (), это должно быть сделано до отображения содержимого.
3. Поместите это перед первым «echo». И впоследствии, добавление «exit» является хорошей практикой и позволяет избежать ошибок.
4. Спасибо, я получил ответ от вашего кода. Ресурс не может быть найден. Описание: HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей), мог быть удален, его имя было изменено или он временно недоступен. Пожалуйста, просмотрите следующий URL и убедитесь, что он написан правильно. Запрошенный URL: /NHandDesigns/democode/demo-code/.$location.
Ответ №3:
заголовок(«Location: /my/new/location»);
Комментарии:
1. Привет, не могли бы вы сказать мне, как вставить код, я попытался после успешного входа в систему
Ответ №4:
header("refresh:5;url=http://google.com");
// version 1.1
if ( isset($_POST['password']) ) { // if the password is set then the form has been submitted on login.php page
include("config.php");
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$qstr = "SELECT * from members where username ='$username' and password ='$password'";
$result = mysql_query($qstr);
if (mysql_num_rows($result)) {
$return = "<font color=#008000><Center><b>**Successful Login**</b></Center></font>";
} else {
$return = "<font color=#ff0000><Center><b>**Failed Login**</b></Center></font>";
}
mysql_close();
} else {
$return "<font color=#ff8000><Center><b>**No login attempted**</b></Center></font>";
}
// Do the output
print($return);
Помните о раздельной логике и выводе, это будет хорошей практикой для вашего кодирования.
Обратите внимание, что я использую header
, а затем делаю print
, также в header
я ставлю refresh
5 (секунд), это даст время вашему посетителю прочитать уведомление, которое вы даете (какой смысл, если вы даете уведомление, но у них не было времени его прочитать.)
Комментарии:
1. Привет, спасибо, я попробовал приведенный выше код, который я скопировал и вставил. Предупреждение: Невозможно изменить информацию заголовка — заголовки уже отправлены (вывод начался с D:Hosting7616039htmlNHandDesignsdemocodedemo-codehostscripts-12870.inc:25 ) в D:Hosting7616039htmlNHandDesignsdemocodedemo-codegetresult.inc в строке 22 // Выполните заголовок вывода(«обновить:5;url= google.com » ); print($return);
2. @b_rocks: о, извините, просто переместите заголовок в начало вашего кода. посмотрите код, который я отредактировал.
3. Привет, ГусДе. Спасибо за ваше понимание. Я переместил код наверх, и вот что я получил.