改善我的PHP用户交互

时间:2010-10-20 19:34:57

标签: php

我的情况是用户在注册页面上填写2个表单中的1个并发送到软件下载页面。如果他们以新用户身份注册,表单将被处理插入到MySQL数据库中,并且他们转到该页面没问题。

这是我的问题。如果他们是返回用户并输入许可证密钥,则处理器脚本会检查其是否对数据库有效,是否将其发送到软件下载页面。如果它不是有效的许可证密钥(继承人我不喜欢的话),屏幕会转到脚本的URL,页面是白色的,会弹出一个警告,告诉它们它不是有效的许可证密钥,它们会返回到注册页面再试一次。我讨厌这个。我需要找到一种方法,可以在注册页面上弹出警报,而不是离开它,或者更好地在页面上显示某种消息。一个缺点是脚本始终与我的表单位于不同的服务器上。香港专业教育学院尝试过curl并在其他情况下取得了成功,但无法在此处关闭MySQL连接。有没有另一种方法来实现一些“跨域AJAX”的外观我真的很想不去脚本url / white page / alert然后返回它们。我希望它发生在一个页面上。这是我脚本的一部分:

if ($_POST['license_code'] != "")
{
    $result = mysql_query("(//mysql stuff here)");



    if (($row = mysql_fetch_assoc($result)))
    {
        header("Location: http://" . $redirect);
    }
    //here is the part I dont like
    else        
    {
        echo "<html>\n";
        echo "<body>\n";
        echo "<script language=\"Javascript\">\n";
        echo "alert (\"The license ID you entered was not correct.\");\n";
        echo "window.location=\"http://www.registrationpageURL.php\";\n";
        echo "</script>\n";
        echo "</html>\n";
        echo "</body>\n";
    }
    mysql_close($link); 
}
//I use jquery valiadate.js for CS validation, but realize this is necessary and would like it to behave like the desired result for the above
else
{
  if (strpos($_POST['email1'], '@') === false)
{
        echo "<html>\n";
        echo "<body>\n";
        echo "<script language=\"Javascript\">\n";
        echo "alert (\"The email address you entered was not correct.\");\n";
        echo "window.location=\"http://www.registrationpageURL.php\";\n";
        echo "</script>\n";
        echo "</html>\n";
        echo "</body>\n";    
  return;
}

THX

2 个答案:

答案 0 :(得分:2)

是否可以删除警报,当您重定向到registrationpage.php时,还使用重定向网址发送参数并在重定向后弹出警报或错误消息?

答案 1 :(得分:1)

研究使用AJAX。 jQuery有一个很棒的API:

EDITIED - 适用于跨域

你可以这样做:

<div id="results"></div>
<script type="text/javascript">
$("#the_form").submit(function() {
    $.getJSON("http://remote.domain/script/to/validate.php?data=" + escape($(this).serialize()) + "&callback=?", function(data) {
        $("#results").html(data);
    });
    return false;
});
</script>

这将(一旦ID指向正确的元素)拦截表单提交,将表单中的值(通过serialize()函数)拉到一起,然后通过AJAX将其发送到验证脚本。脚本的输出显示在#results div。

希望这有帮助!