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

如何在php和JavaScript中重定向php Window.location.href或Window.open()方法,javascript,php,html,window.open,window.location,Javascript,Php,Html,Window.open,Window.location,我跟随一个教程来学习更多关于php的知识,在它的源代码中有一些东西在那个时候似乎是有效的,但现在不再有效了。这是代码,请让我知道我应该在代码中更改什么,以便在输入有效用户名并通过并单击“登录”后使登录过程当前工作。它将冻结并显示第一页,而不是进入home.php 下面是template/header.php: <div class="container"> <!--Head wrap starts--> <div id="head_w

我跟随一个教程来学习更多关于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中搜索,找不到任何答案,我感谢您的帮助

您必须使用函数,但别忘了页面最后会一直运行。别忘了用骰子停止你的脚本

die(header("Location: home.php"))
或5秒后:

header("refresh: 5; url=home.php");
您必须使用函数,但不要忘记,您的页面将在最后运行。别忘了用骰子停止你的脚本

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”属性。提交页面时,将在$\u POST数组中发送名称/值对。如果没有“name”属性,则不会发送任何内容。首先添加“name”属性。我已经修改了上面的HTML代码以向您展示如何使用。

这是您的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>
 if($check==1){
            $email = mysqli_real_escape_string($con,$_POST['email']);

        $_SESSION['user_email']=$email;

                    return 1;
   }
        else {
         return 0;
    }
编辑:我无法调试您的整个项目,但在查看一些内容后,我发现您没有使用“name”属性。提交页面时,将在$\u POST数组中发送名称/值对。如果没有“name”属性,则不会发送任何内容。首先添加“name”属性。我已经修改了上面的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-use

和javascript检查状态1和0,然后使用window.location.href和window.open签入文件

在发送任何实际输出之前,必须调用1标头 普通HTML标记、文件中的空行或来自PHP

2组合所有PHP代码,确保没有空格 在文件的开头

在标题'location:home.php'后3;增加出口

4.session\u start后增加ob\u start

签入你的文件

在发送任何实际输出之前,必须调用1标头 普通HTML标记、文件中的空行或来自PHP

2组合所有PHP代码,确保没有空格 在文件的开头

在标题'location:home.php'后3;增加出口

4.session\u start后增加ob\u start


对不起,没有工作,我附加在主要问题的edit2项目的整个源代码,请让我知道如果你有任何想法。thanks@Jack它的cookie函数类似于sessionstart ok SET\u cookie,您以前不能有HTML输出。或者像这样使用html重定向对不起没有工作,我附加了整个项目的源代码在edit2的主要问题,请让我知道如果你有任何想法。thanks@Jack它的cookie函数类似于sessionstart ok SET\u cookie,您以前不能有HTML输出。或者像这样使用html重定向提交按钮在哪里?我只看到一个普通的按钮。在提交页面之前,PHP根本不会运行。你应该使用PHP的“header”命令来重定向页面,而不是Javascript。@CharlesEF我尝试过提交按钮,但这不仅仅是它的错误,你能告诉我教程还有什么错误吗?我试图下载文件,但我无法通过社交媒体部分。我被要求使用Facebook、Twitter或Goggle+下载该文件。因为我根本不做任何社交媒体,所以我不打算注册只是为了下载你的文件。如果你可以把文件放在另一台服务器上,也许我可以下载它,只是不能从当前位置下载。你正在使用web服务器,不是吗?PHP只在服务器端运行,所以您需要让web服务器工作。PHP必须安装在web服务器上。我不使用这样的网站,所以我没有推荐给你的网站,对不起。如果你能找到另一个网站,只需在评论中发布地址。提交按钮在哪里?我只看到一个普通的按钮。在提交页面之前,PHP根本不会运行。你应该使用PHP'header'命令重定向页面,而不是Javascript。@CharlesEF我尝试了提交按钮,但这不仅仅是它的错误,你能告诉我教程还有什么错误吗?我试图下载该文件,但无法通过
社交媒体部分。我被要求使用Facebook、Twitter或Goggle+下载该文件。因为我根本不做任何社交媒体,所以我不打算注册只是为了下载你的文件。如果你可以把文件放在另一台服务器上,也许我可以下载它,只是不能从当前位置下载。你正在使用web服务器,不是吗?PHP只在服务器端运行,所以您需要让web服务器工作。PHP必须安装在web服务器上。我不使用这样的网站,所以我没有推荐给你的网站,对不起。如果你能找到另一个网站,只需在评论中发布地址。我已尝试将提交类型添加到输入和值中,但这不是导致无法工作的唯一问题。如果你能看一下Edit2,看看它还有什么错误,我们将不胜感激。我花了两天时间编写这段代码,但找不到原因。在表单中添加name和action=login.php后,url将重定向到login.php并显示白色空白页面。我认为情况是我需要修改动作表单中正确的php文件,我尝试了action=home.php,但它没有返回home.php,而是保留在index.php中。你能不能快速看一下,让我知道我应该在操作中添加什么php?如果要运行代码,可以在include/connections.php和function/functions.php以及delete_post.php中找到mysqli_connect配置连接。谢谢–您的代码还有很多其他问题,我没有提到,但应该提到。我没有看到您在Javascript端或PHP端执行任何数据验证。您应该始终验证用户输入。因为您使用mysqli_*命令,所以应该使用参数化查询,以帮助防止SQL注入。至于操作脚本,我将login.php放在action属性中,因为这是处理用户登录的脚本。你看过PHP错误日志了吗?这可能会让您了解问题所在。我查看了您首先发布的login.php和HTML代码。我看到submit按钮没有'name'属性,它需要一个属性,因为login.php'ifisset$\u POST['login']{'中有一行。如果没有'name',那么$\u POST['login']将不存在,PHP将不运行。我已尝试将提交类型添加到输入和值中,但这不是导致不工作的唯一问题。如果您可以查看Edit2,并查看它有哪些其他错误,我们将不胜感激。我花了两天时间编写此代码,在th中添加name和action=login.PHP后,找不到原因在e表单中,url将重定向到login.php并清空页面。我认为情况是我需要在操作表单中修改正确的php文件,我尝试了action=home.php,但没有转到home.php,它仍保留在index.php中。请您快速查看,让我知道我应该在操作中添加哪些php?如果您想运行代码,您将找到mysqli_connect configuration connections在include/connections.php和function/functions.php以及delete_post.php中。谢谢–您的代码还有很多其他问题,我没有提到,但应该有。我没有看到您在Javascript或php端进行任何数据验证。您应该始终验证用户输入。因为您使用的是mysqli_*com命令您应该使用参数化查询,以帮助防止SQL注入。至于操作脚本,我将login.php放在action属性中,因为这是处理用户登录的脚本。您查看过php错误日志吗?这可能会让您了解问题所在。我查看了您发布的login.php和HTML代码ed first.我看到submit按钮没有'name'属性,它需要一个属性,因为login.php'ifisset$\u POST['login']{.没有'name'则$\u POST['login']将不存在,PHP将不会运行。使用ajax成功您可以使用ajax成功和window.location.href和window.open来完成您的代码吗?如果您完全在代码中编写,它可以帮助我准确地理解您的意思。如果它起作用,我接受您的答案,因为这是一个线程使用ajax成功您可以使用ajax完成您的代码吗success和window.location.href和window.open,如果您完全用代码编写,它可以帮助我准确地理解您的意思。如果它起作用,我接受您的答案作为此线程