【问题标题】:Changing the address of the website, as per the php being used根据使用的 php 更改网站的地址
【发布时间】:2009-07-14 18:11:15
【问题描述】:

我的 abc.html 页面中有一个按钮 <input type="button" onclick="javafun();">

点击它会转到 javascript,它会进一步将信息发送到我的 abc.php ...并且 javascript 函数看起来像:

function login()
{   
    xmlhttp=GetXmlHttpObject();
    //alert("pass");
    if(xmlhttp==null)
    {
        alert("Your browser does not support AJAX!");
        return;
    }
    var url="login.php";
    url=url+"?id="+username+"&passwrd="+passwrd;
    xmlhttp.onreadystatechange=statechangedLogin;
    xmlhttp.open("GET", url, true);
    xmlhttp.send(null);
    }
}

function statechangedLogin()
{
    //alert(xmlhttp.readyState);
    if(xmlhttp.responseText=="<font color='red'>Your User Name or Password is incorrect. Please try again.</font>")
    {
        document.getElementById("response").innerHTML=xmlhttp.responseText;
    }
    else 
    {
        //hwin=window.location="http://forum.research.bell-labs.com/zeeshan/qotw/login.php";
        document.getElementById("mainbody").innerHTML=xmlhttp.responseText;
        //hwin.document.innerHTML=xmlhttp.responseText;
        //alert();
    }
}

一切正常,但地址栏中的网站地址保持不变: http://severname.com/abc.html

我希望根据 php.ini 更改此地址栏。它应该来... http://severname.com/abc.html/login.php

但仍不应显示?id=username&amp;passwrd=passwrd

这可能吗,如果是怎么回事??

泽山

【问题讨论】:

  • 只是为了记录,如果都是javascript那不是javafun而是javascriptfun...java和javascript只有名字中的四个前导字符。

标签: php javascript html


【解决方案1】:

将请求发布到 ../login.php ?

不要使用 ajax,而是将表单元素包装在

 <form method=POST action="login.php">
      User Name: <input name="username"><br>
      Password: <input name="passwrd" type="password"><br>
      <input type="submit" name="Login">
 </form>

如果要更改地址栏,为什么要使用 AJAX?

编辑 为表单添加实数值

编辑 2 更清晰。

您确实应该通过表单进行登录(请参阅@nathans 帖子)。

  • 将您的 html 登录表单重命名为 php 页面。让我们称之为 loginForm.php。
  • 从 loginForm.php 中删除所有 javascript 函数
  • 使用表单标签将表单插入到 loginForm 中。
  • 在 login.php 中,检查他们的用户是否成功登录,
  • 如果登录成功:

     $failMsg = urlencode("Logged in successfully")
     header("Location: loginForm.php?okMsg=$msg&redirect=home.php");
    
  • 如果登录失败:

     $failMsg = urlencode("Failed to login")
     header("Location: loginForm.php?failMsg=$msg");
    
  • 在您现在显示错误消息的 loginForm.php 中,输入:

     <? echo  htmlentities($_REQUEST['failMsg']);?>
    
  • 在 loginForm.php 中显示成功登录信息的地方

     <? echo  htmlentities($_REQUEST['okMsg']);?>
    
  • 然后在head标签中放

     <? if(array_key_exists($_REQUEST,'redirect'))
        {
            echo "<meta http-equiv='refresh" content='5;url=/".$_REQUEST['redirect']."' />";
        }    
     ?>
    

没有 javascript,用户会收到漂亮的错误消息,并在登录后被转发到主页。

【讨论】:

  • 我正在创建一个登录页面。一旦用户输入用户名和密码,并单击登录,他/她应该转到另一个页面。但是我的 php 检查,如果用户名和密码是正确的。然后它显示登录的味精。那我该怎么做呢??
  • @Zeeshan,您可以剪切和粘贴上面的表单,它的作用与您的 javascript 登录相同。
  • 您的 PHP 脚本显示“登录”并且还有一个元刷新标签 (en.wikipedia.org/wiki/Meta_refresh)。即使禁用了javascript,也可以保证工作更简单。这种琐碎的任务没有必要使用JS。
  • 但是拜伦,如果不正确,我将如何检查用户名和密码。如果响应不同,我的 php 将响应“用户名或密码不正确,请重试”,那么我希望我的页面被重定向到 login.php 。不是其他明智的。我再次编辑我的问题。明确我在做什么。
【解决方案2】:
<form method="post" action="login.php">

您根本不需要 AJAX 来执行此操作。如果您使用 Javascript 来验证输入,您可以添加 onSubmit="return my_validation_function() ... 如果一切正常,您的验证函数应该返回 true,否则返回 false。 (false返回值会阻止表单提交)

【讨论】:

    【解决方案3】:

    听起来你根本不需要 AJAX,只是一种常规形式,除非我遗漏了什么。

    【讨论】:

    • 是的,我认为你是对的......但我不知道该怎么做。 ..如果你能帮助我。
    【解决方案4】:

    我认为您误解了 AJAX 的全部意义。 Ajax 应该在后台工作,即不更改 url。如果你想要,试试 document.location="foobar";

    【讨论】:

      【解决方案5】:

      Ajax 隐藏了 JS 与您的服务器的交互。这就是为了。如果您希望您的浏览器指向某个 URL,那么您不应该使用 Ajax。 您尝试归档的内容可以使用简单的 POST 请求轻松实现,使用旧的 &lt;form&gt;。 HTTP POST 请求从 URL 中隐藏请求的参数,将它们传递到消息本身的标头中。所以 URL 可以是干净的。

      【讨论】:

        【解决方案6】:

        正如其他评论者所触及的那样,真正的答案是您无法更改网页的 URL(除了“#”片段标识符,但这对您没有用处)而不导致浏览器发送请求该网址。

        如果您通过 AJAX 提交,您不想尝试更改 URL。或者,您可以按照其他 cmets 中的建议进行发布请求。

        &lt;form method="post" action="login.php"&gt;

        【讨论】:

          【解决方案7】:

          您的方法有些不安全,容易受到一些脚本攻击。我会考虑不进行 Ajax 登录,而只使用常规表单。这篇文章对我帮助很大:

          http://www.evolt.org/PHP-Login-System-with-Admin-Features

          Evolt 有另一个看起来与您试图完成的类似的,但我没有读过它 - 只是谷歌“evolt ajax login”

          【讨论】:

            猜你喜欢
            • 2015-04-27
            • 1970-01-01
            • 2011-05-27
            • 1970-01-01
            • 2012-01-22
            • 2016-01-27
            • 2015-03-04
            • 1970-01-01
            • 2015-04-22
            相关资源
            最近更新 更多