2010-10-22 59 views
1

我有一个例程,我想精简。目前在我的注册页面上,您可以输入密钥(返回用户)或注册。一旦你填写了表单,表单就会被另一台服务器上的脚本处理(包括一些CRM数据库插入,因此它必须与CRM在同一台服务器上)我正在用jQuery进行客户端验证,但SS验证检查许可证密钥以确保其有效。如果它有效,它将执行以下操作 - 将URL更改为处理器URL,显示带有错误消息的警报并将您返回到注册页面。我讨厌这个。帮助显示PHP中的错误

if (($row = mysql_fetch_assoc($result))) 
    { 
     header("Location: http://" . $redirect); 
    } 
    else   
    { 
     echo "<html>\n"; 
     echo "<body>\n"; 
     echo "<script language=\"Javascript\">\n"; 
     echo "<!--\n"; 
     echo "alert (\"The NinjaTrader license ID you entered was not correct.\");\n"; 
     echo "window.location=\"http://www.dirtybirddesignlab.com/download-registration.php\";\n"; 
     echo "//-->\n"; 
     echo "</script>\n"; 
     echo "</html>\n"; 
     echo "</body>\n"; 
    } 
    mysql_close($link); 
} 

我没有写这个,并想改进它。我宁愿它显示一个处理味精,做检查,如果它是一个无效的代码,显示上面或在窗体中的消息。由于相同的原产地策略/跨域,这是否需要卷曲?我在其他几个领域使用cURL,但不能得到这个工作,我得到有关不关闭MySQL连接的错误。有没有更简单的方法来修复上述代码,只是“打印”到页面上的一个错误消息,无需更改网址并显示警报?感谢专家!

回答

1

如果可能,最简单的办法是通过让验证器在兼容的子域上进行响应(通过指向子域名或在自己的域上使用反向代理)来消除跨域问题。 reverse proxy解决方案基本上可以完成你想要用cURL做的事情,除了设置更快。

在另一方面,没有AJAX,你可以更换错误消息和警报,:

header("Location: http://domain.com/download-registration.php?err"); 

而且具有脚本检测?err并显示错误消息:

if (isset($_GET['err'])) echo "There was an error"; 

这需要最少的工作要做,但表单中的任何数据都将丢失。

+0

@Victor - 你可以扩展这些解决方案,尤其是'反向代理'?另外我会如何去检测剧本脚本?一个if/else语句。我对我缺乏知识表示歉意,试图变得更好。谢谢 – 2010-10-26 13:07:11

+0

添加了一些链接/信息。 – 2010-10-26 20:09:53

+0

@Victor - 我看到有关反向代理看起来很有前途。你可以在最后一部分扩展吗? “脚本检测到错误”......我道歉,但我只是一个设计师。谢谢你,先生。 – 2010-10-26 20:17:57