【问题标题】:How redirect php Window.location.href or Window.open () methods in php and JavaScriptphp 和 JavaScript 中如何重定向 php Window.location.href 或 Window.open() 方法
【发布时间】:2019-02-04 22:33:42
【问题描述】:

我跟进了一个教程来了解更多关于 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>

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

【问题讨论】:

  • 提交按钮在哪里?我只看到一个普通的按钮。在您提交页面之前,PHP 根本不会运行。你应该使用 PHP 'header' 命令来重定向页面,而不是 Javascript。
  • @CharlesEF 我已经尝试过提交按钮,但这不仅是它有的错误,你能告诉我教程还有什么其他错误
  • 我尝试下载文件,但无法通过社交媒体部分。我被要求使用 Facebook、Twitter 或 Goggle+ 下载文件。因为我根本不做任何社交媒体,所以我不会为了下载你的文件而注册。如果您可以将文件放在另一台服务器上,也许我可以下载它,而不是从当前位置。
  • 您使用的是网络服务器,不是吗? PHP 只运行服务器端,所以你需要有一个 web 服务器工作。并且 PHP 必须安装在 web 服务器上。
  • 我不使用这样的网站,所以我没有推荐给你,抱歉。如果您能找到其他网站,只需在评论中发布地址即可。

标签: javascript php html window.open window.location


【解决方案1】:

这是您的 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 并查看它还有哪些其他错误,非常感谢。我在这段代码上苦苦挣扎了两天,找不到原因
  • 在表单中添加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 放在动作属性中,因为那是处理用户登录的脚本。您查看过 PHP 错误日志吗?这可能会让您知道问题出在哪里。
  • 我查看了您首先发布的 login.php 和 HTML 代码。我看到提交按钮没有“名称”属性,它需要一个因为 login.php 中的这一行“if(isset($_POST['login'])){'。如果没有 'name',则 $_POST['login'] 将不存在,PHP 将无法运行。
【解决方案2】:

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

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

或 5 秒后:

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

【讨论】:

  • 抱歉没有用,我在主要问题的edit2中附上了项目的整个源代码,如果您有任何想法,请告诉我。谢谢
  • @Jack 它的 cookie 功能就像 session start ok SET_COOKIE 你必须没有 HTML 输出之前。或者像这样使用html重定向&lt;meta http-equiv="refresh" content="0; url=home.php" /&gt;
【解决方案3】:
 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成功
  • 您能否使用 ajax success 和 window.location.href 和 window.open 完成您的代码,如果您完全用代码编写它,它可以帮助我准确理解您的意思。如果它有效,我接受你的回答作为这个线程
【解决方案4】:

签入您的文件..

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-10-28
    • 2013-09-09
    • 1970-01-01
    • 2019-08-13
    • 2013-09-27
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 2013-03-23
    相关资源
    最近更新 更多