PHP Перенаправить на другую страницу после входа в систему - PullRequest
0 голосов
/ 11 июля 2020

Даже если условие if ($ num> 0) истинно, меня не перенаправляют на страницу приветствия. php, помощь от других разработчиков?

if(isset($_POST['login'])){
$password=$_POST['password'];
$email=$_POST['email'];
$ret= mysqli_query($con,"SELECT * FROM users WHERE email='$email' and password='$password'");
$num=mysqli_fetch_array($ret);

if($num>0)
{
$extra="welcome.php";
$_SESSION['login']=$_POST['email'];
$_SESSION['id']=$num['id'];
$_SESSION['full_name']=$num['full_name'];

$host=$_SERVER['HTTP_HOST'];
$uri=rtrim(dirname($_SERVER['PHP_SELF']),'/\\');
header("Location:http://$host$uri/$extra");
exit();
}

После нажатия кнопки входа , с правильными атрибутами, я застрял на той же странице, просто пустая белая страница.

   <form name="login" action="" method="post">

          <div class="uk-margin">
              <div class="uk-inline">
                   <span class="uk-form-icon" uk-icon="icon: mail"></span>
                      <input class="uk-input" name="email" type="email" placeHolder="Enter your e-mail">
               </div>
           </div>
                    
           <div class="uk-margin">
               <div class="uk-inline">
                   <span class="uk-form-icon" uk-icon="icon: lock"></span>
                      <input class="uk-input" name="password" type="password" placeHolder="Enter your password">
               </div>
                            
           </div>
           <input type="submit" name="login" value="LOG IN" >

    </form>

Ответы [ 2 ]

0 голосов
/ 11 июля 2020

Переменные Betwen должны быть точкой перед и после переменной в двойных кавычках или скобках.

$host.$uri
or {$host}{$uri}

Во-вторых, вы вставили переменные в строку. Вот почему он не работает.

Попробуйте следующее:

$full_url = "http://".$host.".$uri.".$extra;
header("Location: ".$full_url);
die();

Вы также можете использовать:

$full_url = "http://{$host}{$uri}{$extra}";
header("Location: {$full_url}");
die();

В-третьих, я предпочитаю использовать d ie ( ) вместо exit () при использовании заголовка ("Местоположение");

Вы можете узнать больше о d ie () или exit () в этом вопросе. PHP: использование exit (); или d ie (); после заголовка ("Местоположение:");

Обычно d ie () закрывает все, и после этого перенаправления ничего не работает. В случае exit () вы можете подвергнуться эксплуатации Если некоторые скрипты продолжат работать.

0 голосов
/ 11 июля 2020

заменить заголовок ("location: http: // $ host $ uri / $ extra"); с заголовком ("Местоположение: http: // $ host $ uri / $ extra");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...