如何使用javascript从一页转到另一页?


75

如果用户有效,请从管理页面进入浏览器,然后转到另一个页面。

用户输入用户名和密码后,单击确定按钮,将显示另一个页面,并自动关闭登录页面。

如何使用JavaScript执行此操作?


7
尽管尚不清楚您到底想要什么,但使用javascript处理登录和重定向并不是一个好主意,因为精明的用户可以轻松绕过这样的限制。
micmcg 2010年

Answers:


128

要简单地使用javascript重定向浏览器:

window.location.href = "http://example.com/new_url";

要重定向并提交表单(即登录详细信息),不需要javascript:

<form action="/new_url" method="POST">
   <input name="username">
   <input type="password" name="password">
   <button type="submit">Submit</button>
</form>

7
需要特别注意的是,至少Safari可以处理此问题:您无需为脚本方法指定域。因此,如果您的代码已经在http://example.com,则window.location.href = 'new_url';可以正常工作。如果您的代码将在多个域上使用,但是您始终希望将用户重定向到他们已经在该域中的同一子路径中,则这特别有用。
ArtOfWarfare 2015年

下一页是否可以从POST表单接收信息?
本·阿兰德

10

不能理智地依靠客户端JavaScript来确定用户凭据是否正确。浏览器(以及执行该代码的所有代码)都在用户(而不是您)的控制之下,因此不可信。

用户名和密码需要使用表格输入。确定按钮将是一个提交按钮。action属性必须指向一个URL,该URL将由检查凭据的程序处理。

该程序可以用JavaScript编写,但是如何实现将取决于您所使用的服务器端JavaScript引擎。请注意,SSJS不是主流技术,因此,如果您真的想使用它,则必须使用专门的托管或管理您自己的服务器。

(十年半后,由于使用Node.js,SSJS变得更加普遍,尽管它仍然相当专业)。

如果您之后想要重定向,则程序需要发出HTTP Location标头

请注意,在输出任何私有页面之前,您需要检查凭据是否正常(通常是通过将令牌(不是实际密码)存储在cookie中)。否则,任何人都可以通过知道URL进入私有页面(从而绕过登录系统)。



7

验证用户是javascript的管理员会导致麻烦,因为javascript代码对任何人都是可见的。服务器是应该在登录过程之后告诉管理员和普通用户之间的区别,然后相应地生成新页面的服务器。

也许这不是您要尝试回答的问题:

window.location.href="<the page you are going to>";

4

我得到的正确解决方案是

<html>
      <head>
        <script type="text/javascript" language="JavaScript">
                  function clickedButton()
            {

                window.location = 'new url'

            }
             </script>
      </head>

      <form name="login_form" method="post">
            ..................
            <input type="button" value="Login" onClick="clickedButton()"/>
      </form>
 </html>

在此,新网址在单引号内给出。


1

更简单的方法是 window.location.href = "http://example.com/new_url";

但是,如果您想使用JavaScript检查用户名和密码是否为空并将其发送到php以检查用户是否在数据库中,该怎么办?您可以按照以下代码轻松完成此操作。

html表格-

<form name="myForm" onsubmit="return validateForm()" method="POST" action="login.php" >         
    <input type="text" name="username" id="username" />
    <input type="password" name="password" id="password" />
    <input type="submit" name="submitBt"value="LogIn" />
</form>

javascript验证-

function validateForm(){
    var uname = document.forms["myForm"]["username"].value;
    var pass = document.forms["myForm"]["password"].value;

    if((!isEmpty(uname, "Log In")) && (!isEmpty(pass, "Password"))){

        return true;
    }else{
        return false;
    }
}

function isEmpty(elemValue, field){
    if((elemValue == "") || (elemValue == null)){
        alert("you can not have "+field+" field empty");
        return true;
    }else{
        return false;
    }
}

检查用户是否在数据库中使用php

<?php
    $con = mysqli_connect("localhost","root","1234","users");

    if(mysqli_connect_errno()){
        echo "Couldn't connect ".mysqli_connect_error();
    }else{
        //echo "connection successful <br />";
    }

    $uname_tb = $_POST['username'];
    $pass_tb = $_POST['password'];

    $query ="SELECT * FROM user";
    $result = mysqli_query($con,$query);

    while($row = mysqli_fetch_array($result)){
        if(($row['username'] == $uname_tb) && ($row['password'] == $pass_tb)){
            echo "Login Successful";
            header('Location: dashbord.php');
            exit();
        }else{
            echo "You are not in our database".mysqli_connect_error();
        }
    }
    mysqli_close($con);
?>


0

对于MVC开发人员,使用javascript重定向浏览器:

window.location.href = "@Url.Action("Action", "Controller")";

0

尝试这个:

window.location.href = "http://PlaceYourUrl.com";

我认为这确实为问题提供了答案。
jkdev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.