Как перенаправить методы 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 = "images/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>

вот логин.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, я не могу найти ответ, я ценю вашу помощь.

Где кнопка отправки? Я вижу только обычную кнопку. Пока вы не отправите страницу, PHP вообще не запустится. И вы должны использовать команду PHP «header» для перенаправления страницы, а не Javascript.

CharlesEF 05.02.2019 01:29

@CharlesEF я пробовал кнопку отправки, но это не только ошибка, которая у нее есть, не могли бы вы сообщить мне, какая еще ошибка есть в учебнике?

Jack 05.02.2019 01:56

Я пытался скачать файл, но не могу пройти мимо социальной сети. Меня просят загрузить файл с помощью Facebook, Twitter или Goggle+. Поскольку я вообще не пользуюсь социальными сетями, я не собираюсь регистрироваться только для того, чтобы скачать ваш файл. Если вы можете разместить файл на другом сервере, возможно, я смогу его скачать, но не из текущего местоположения.

CharlesEF 05.02.2019 02:08

Вы используете веб-сервер, не так ли? PHP работает только на стороне сервера, поэтому вам нужно, чтобы веб-сервер работал. И PHP должен быть установлен на веб-сервере.

CharlesEF 05.02.2019 02:12

Я не пользуюсь такими сайтами, поэтому мне нечего вам порекомендовать, извините. Если вы можете найти другой сайт, просто напишите адрес в комментарии.

CharlesEF 05.02.2019 02:24

Хорошо понял. Дай мне немного времени, чтобы все обдумать.

CharlesEF 05.02.2019 02:30

Ваш header.php включен в home.php?

Jigar 05.02.2019 06:43

@jigar halani я добавил, никаких изменений при этом не происходит, все еще пустая страница (login.php)

Jack 05.02.2019 06:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
8
13 269
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

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

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

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

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

Jack 05.02.2019 01:19

@Jack Это функция cookie, такая как запуск сеанса в порядке. SET_COOKIE, у вас не должно быть вывода HTML раньше. Или используйте html для перенаправления, как этот <meta http-equiv = "refresh" content = "0; url=home.php" />

Sky Voyager 05.02.2019 08:47
Ответ принят как подходящий

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

<div class = "container">
 <!--Head wrap starts-->
 <div id = "head_wrap">
  <!--Header starts-->
  <div id = "header">
   <img src = "images/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>

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

Я пытался добавить тип отправки для ввода и значение, но это не единственная причина, по которой проблема не работает. если вы можете, пожалуйста, взгляните на Edit2 и посмотрите, какие еще ошибки он имеет, очень ценится. я два дня боролся с этим кодом и не могу найти причину

Jack 05.02.2019 01:54

после добавления имени и action = "login.php" в форму URL-адрес будет перенаправлен на login.php и белую пустую страницу. Я думаю, дело в том, что мне нужно изменить правильные файлы php в форме действия, я пробовал action = "home.php", но он не переходит на home.php, он остается в index.php. не могли бы вы быстро взглянуть и сообщить мне, какой php я должен добавить в действие? если вы хотите запустить код, вы найдете соединения конфигурации mysqli_connect в include/connections.php и function/functions.php и delete_post.php. Спасибо -

Jack 05.02.2019 03:46

Есть много других проблем с вашим кодом, которые я не упомянул, но должен был упомянуть. Я не вижу, чтобы вы выполняли какую-либо проверку данных на стороне Javascript или PHP. Вы всегда должны проверять ввод пользователя. Поскольку вы используете команды mysqli_*, вам следует использовать параметризованные запросы для защиты от SQL-инъекций. Что касается сценария действия, я поместил login.php в атрибут действия, потому что это сценарий, который будет обрабатывать вход пользователя в систему. Вы смотрели в журнале ошибок PHP? Это может дать вам представление о том, где проблема.

CharlesEF 05.02.2019 04:27

Я просмотрел ваш login.php и HTML-код, который вы разместили первым. Я вижу, что у кнопки отправки нет атрибута «имя», он нужен из-за этой строки в login.php «if (isset ($_POST ['login'])) {'. Без «имени» $_POST['login'] не будет существовать, и PHP не будет работать.

CharlesEF 05.02.2019 08:11
 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

используя успех ajax

Dharmik Unagar 05.02.2019 06:24

не могли бы вы завершить свой код с успехом ajax и window.location.href и window.open , это поможет мне точно понять, что вы имеете в виду, если вы полностью напишите это в коде. если это работает, я принимаю ваш ответ как эту тему

Jack 05.02.2019 06:27

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

1) header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP

2) Combine all your PHP codes and make sure you don't have any spaces at the beginning of the file.

3) after header('location: home.php'); add exit();

4) after sesssion_start() add ob_start();

Другие вопросы по теме