我有一个例程,我想简化。目前在我的注册页面上,您可以输入密钥(返回用户)或注册。填写表单后,表单由另一台服务器上的脚本处理(包括一些CRM数据库插件,因此它必须与CRM在同一服务器上)我正在使用jQuery进行客户端验证,但是SS验证检查许可证密钥,以确保其有效。如果它有效,则执行以下操作 - 将URL更改为处理器URL,显示带有错误消息的警报并返回注册页面。我讨厌这个。
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?我在其他几个方面使用cURL,但无法使其工作,我得到与不关闭MySQL连接有关的错误。是否有一种更简单的方法来修复上面的代码,简单地“打印”到页面错误消息没有更改网址和显示警报?谢谢专家!
答案 0 :(得分:1)
如果可能的话,最简单的方法是通过让验证器在兼容的子域上进行响应(通过在其中指向子域,或在您自己的域上使用反向代理)来消除跨域问题。 reverse proxy解决方案基本上可以解决您尝试使用cURL的问题,但设置速度更快。
另一方面,如果没有AJAX,您可以用以下内容替换错误消息和警报:
header("Location: http://domain.com/download-registration.php?err");
让脚本检测?err
并显示错误消息:
if (isset($_GET['err'])) echo "There was an error";
这需要做的工作量最少,但表单中的任何数据都将丢失。