我有2个脚本。那是:
有时候有人直接打开了这个链接到process_registration.php,那我怎么能阻止它?
Process_registration.php函数用于保存来自registration.html的输入数据。
有什么想法吗?
答案 0 :(得分:4)
您可以使用:
if (!isset($_POST['field'])) {
die();
}
位于process_registration.php文件的顶部。
当然,请将field
替换为表单中的一个现有字段。
如果您反对使用脚本注册多个帐户的flooders,您可以在注册表单上使用captcha字段,或使用protections against crawling。
答案 1 :(得分:3)
另一种方法:
if (empty($_POST)) {
exit("Direct access not allowed");
}
使用对象名称更加灵活。为了更加安全,您应该将其放在表单中:
<input type="hidden" value="9957374" name="hiddenvalidate" />
并在您的脚本中:
if (!isset($_POST['hiddenvalidate']) || $_POST['hiddenvalidate'] != 9957374) {
exit("Direct access not allowed");
}
答案 2 :(得分:1)
您可以检查当前请求是否为POST类型(如果您使用表单)
if($_SERVER['REQUEST_METHOD'] == 'POST')
您还可以检查是否已设置所有必需变量。
答案 3 :(得分:1)
您可以在process_registration.php中使用$_POST
数组,例如:
if(!isset($_POST['yourvariable'])){
//Redirect to registration page
}
您也可以使用PHP Session。如果未设置会话,则将用户重定向到注册页面。
答案 4 :(得分:1)
我喜欢Joomla
处理此问题的方式。
在Joomla的每个php页面上,您将看到以下代码:
// No direct access
defined('_JEXEC') or die; // it's a config setting
只有顶级页面包含此变量。所有其他文件,如果直接打开,关闭,从而防止任何意外误用/数据丢失。