繁体   English   中英

如何在PHP和JavaScript中重定向PHP Window.location.href或Window.open()方法

[英]How redirect php Window.location.href or Window.open () methods in php and JavaScript

我跟进了一个教程,以了解有关php的更多信息,在它的源代码中,有些东西在当时似乎可行,但现在不再可用。 这是代码,请让我知道我应该在代码中进行哪些更改才能使登录过程正常运行(当前,在输入有效的用户名并通过并单击登录后,它冻结并显示第一页,而不是转到home.php

这是template / 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>

这是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搜索无法找到任何答案,我感谢您的帮助。

您必须使用header(...)函数,但不要忘记页面始终在最后运行。 不要忘记与die一起使用来停止脚本。 ;)

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

或5秒后:

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

这是您的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>

编辑:我无法调试您的整个项目,但查看了一些内容后,我发现您没有使用'name'属性。 提交页面后,将在$ _POST数组中发送一个名称/值对。 如果没有“名称”属性,则不会发送任何内容。 首先添加“名称”属性。 我已经修改了上面的HTML代码,向您展示了如何。

 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使用

签入文件。

1)必须先通过常规HTML标记,文件中的空白行或从PHP发送任何实际输出,然后再调用header()

2)合并所有PHP代码,并确保文件开头没有空格。

3)在header('location:home.php')之后; 添加exit();

4)在sesssion_start()之后添加ob_start();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM