我的情况是用户在注册页面上填写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
答案 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。
希望这有帮助!