Перенаправление на страницу после истинного результата

#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. Привет, ГусДе. Спасибо за ваше понимание. Я переместил код наверх, и вот что я получил.