【问题标题】:How to go from one page to another page using javascript?如何使用javascript从一个页面转到另一个页面?
【发布时间】:2010-12-13 06:00:25
【问题描述】:

如果用户是有效的,那么浏览器应该从管理页面转到另一个页面。

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

如何使用 JavaScript 做到这一点?

【问题讨论】:

  • 虽然不清楚你想要什么,但使用 javascript 来处理登录和重定向并不是一个好主意,因为精明的用户可以轻松绕过这样的限制。

标签: javascript web-applications web-application-project


【解决方案1】:

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

【讨论】:

  • 额外说明,至少 Safari 可以处理这个问题:您不需要为脚本方法指定域。因此,如果您的代码已经位于 http://example.com,那么只需 window.location.href = 'new_url'; 即可。如果您的代码将用于多个域,但您总是希望用户被重定向到他们所在域中的相同子路径,这将特别有用。
  • 下一页是否可以接收到表单POST的信息?
【解决方案2】:

试试这个,

window.location.href="sample.html";

这里sample.html 是下一页。它将转到下一页。

【讨论】:

    【解决方案3】:

    不能完全依赖客户端 JavaScript 来确定用户凭据是否正确。浏览器(以及执行它的所有代码)都在用户的控制之下,而不是你,所以它不值得信赖。

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

    这个程序可以用 JavaScript 编写,但如何执行取决于您使用的是哪个 server side JavaScript engine。请注意,SSJS 不是主流技术,因此如果您真的想使用它,则必须使用专门的托管或管理您自己的服务器。

    (五年后,由于 Node.js,SSJS 变得更加普遍,但它仍然相当专业)。

    如果你想在之后重定向,那么程序需要发出一个HTTP Location header

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

    【讨论】:

      【解决方案4】:

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

      也许这不是您试图回答您的问题的方式:

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

      【讨论】:

        【解决方案5】:

        我得到的正确解决方案是

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

        这里新的 url 在单引号内给出。

        【讨论】:

          【解决方案6】:

          试试这个:

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

          【讨论】:

          • 我认为这确实提供了问题的答案。
          【解决方案7】:

          更简单的方法是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);
          ?>
          

          【讨论】:

            【解决方案8】:

            希望这会有所帮助:

            window.location.href = '/url_after_domain';

            【讨论】:

              【解决方案9】:

              还有几种重定向方式:

              • location.replace("http://example.com");
              • location.href = "http://example.com"
              • window.location = "http://example.com"
              • window.location.href = "http://example.com"

              【讨论】:

                【解决方案10】:

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

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

                【讨论】:

                  猜你喜欢
                  • 2017-03-02
                  • 2016-06-18
                  • 1970-01-01
                  • 2011-11-08
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-12-04
                  相关资源
                  最近更新 更多