防止直接访问PHP
我有2个脚本。这就是:防止直接访问PHP
- registration.html
- process_registration.php
有时有人打开该链接直接进入process_registration.php,所以我怎么能预防呢?
Process_registration.php功能是保存从registration.html输入获得的数据。
有什么想法?
您可以使用:
if (!isset($_POST['field'])) {
die();
}
你process_registration.php文件的顶部。
当然,您的表单中的一个现有字段替换field
。
如果您针对使用脚本注册多个帐户的flooders,您可以在注册表中使用captcha字段,或使用protections against crawling。
$ _POST也可以用PHP发送卷曲,所以我不认为这是最有效的解决方案..为了更好的安全我想你也可以验证引用者 –
引用者也可以通过cURL设置 –
谢谢@Ninsuo –
您可以检查当前的请求是POST类型(如果你使用的一种形式)
if($_SERVER['REQUEST_METHOD'] == 'POST')
,你也可以检查是否所有必需的变量设置。
只是另一种方法:
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");
}
感谢您的代码。 :) –
您可以使用process_registration.php $_POST
阵列此类似:
if(!isset($_POST['yourvariable'])){
//Redirect to registration page
}
您也可以使用PHP Session。如果没有设置会话,则将用户重定向到注册页面。
我喜欢Joomla
处理此问题的方式。
论的Joomla每个PHP页面,你会看到下面的代码:
// No direct access
defined('_JEXEC') or die; // it's a config setting
只有*页面都有这个变量包含在其中。所有其他文件,如果直接打开,关闭,从而防止任何意外的误用/数据丢失。
可能的dublicate:http://*.com/questions/1101895/how-to-stop-direct-execution-of-a-php-page-using-htaccess-rules – Peon