Как перенаправить методы php Window.location.href или Window.open () в php и JavaScript

Я изучаю учебник, чтобы узнать больше о php, в его исходном коде есть что-то, что работает в то время, но больше не работает. вот код, пожалуйста, дайте мне знать, что я должен изменить в коде, чтобы процесс входа в систему работал (в настоящее время после ввода действительного имени пользователя и пароля и нажатия входа в систему он зависает и показывает первую страницу, а не перейти на home.php

вот шаблон / header.php:

<div class="container">
<!--Head wrap starts-->
<div id="head_wrap">
<!--Header starts-->
<div id="header">
<img src="https://web-answers.ru/wp-content/uploads/2019/02/logo.png" style="float:left;"/>
<form method="post" action="" id="form1">
<strong>Email:</strong>
<input type="email" id="email" name="email" placeholder="Email" required="required" />
<strong>Password:</strong>
<input type="password" id="pass" name="pass" placeholder="****" required="required"/>
<button type="submit" id="login">Login</button>
</form>
</div>
<!--Header ends-->
</div>

вот login.php

<?php
session_start();

include("includes/connection.php");

if(isset($_POST['login'])){

$email = mysqli_real_escape_string($con,$_POST['email']);
$pass = mysqli_real_escape_string($con,$_POST['pass']);

$get_user = "select * from users where user_email='$email' AND user_pass='$pass'";

$run_user = mysqli_query($con,$get_user);

$check = mysqli_num_rows($run_user);

if($check==1){
$email = mysqli_real_escape_string($con,$_POST['email']);

$_SESSION['user_email']=$email;

echo "<script>window.open('home.php','_self')</script>";



}
else {
echo "<script>alert('Passowrd or email is not correct!')</script>";
}

}
?>

пожалуйста, обратите внимание, я пытался

        echo "<script> window.location.href = 'home.php';</script>";

вместо

        echo "<script>window.open('home.php','_self')</script>";

и все еще не работает, так как это учебное пособие, и у меня есть поиск через stackoverflow, не могу найти ответ, я ценю вашу помощь.

2

Решение

Это ваш HTML-код, но с кнопкой отправки. Вы говорите, что все файлы находятся в одной папке, поэтому это должно работать. Я не вносил никаких изменений в login.php, но он должен запускаться при отправке страницы.

<div class="container">
<!--Head wrap starts-->
<div id="head_wrap">
<!--Header starts-->
<div id="header">
<img src="https://web-answers.ru/wp-content/uploads/2019/02/logo.png" style="float:left;"/>
<form method="post" action="login.php" id="form1">
<strong>Email:</strong>
<input type="email" id="email" name="email" placeholder="Email" required="required" />
<strong>Password:</strong>
<input type="password" id="pass" name="pass" placeholder="****" required="required"/>
<input type="submit" id="login" name="login" value="Login">
</form>
</div>
<!--Header ends-->
</div>
</div>

Редактировать: Я не могу отладить весь ваш проект, но после просмотра некоторых вещей я вижу, что вы не используете атрибут ‘name’. Когда страница отправляется, пара имя / значение отправляется в массиве $ _POST. Если у вас нет атрибута name, ничего не отправляется. Начните с добавления атрибута name. Я изменил приведенный выше HTML-код, чтобы показать вам, как.

0

Другие решения

Вы должны использовать заголовок (…) функция, но не забывайте, что ваша страница продолжает работать в конце. Не забудьте использовать с die чтобы остановить ваш сценарий. 😉

die(header("Location: home.php"))

или через 5 секунд:

header("refresh: 5; url=home.php");
0

 if($check==1){
$email = mysqli_real_escape_string($con,$_POST['email']);

$_SESSION['user_email']=$email;

return 1;
}
else {
return 0;
}

и JavaScript проверяют статус 1 и 0, затем используют window.location.href и window.open

0

Проверьте в вашем файле ..

1) header () должна быть вызвана перед отправкой любого фактического вывода, либо
обычные HTML-теги, пустые строки в файле или из PHP

2) Объедините все свои коды PHP и убедитесь, что у вас нет пробелов
в начале файла.

3) после заголовка (‘location: home.php’); добавить выход ();

4) после sesssion_start () добавьте ob_start ();

-1
По вопросам рекламы [email protected]