防止直接访问PHP

时间:2012-09-25 06:50:16

标签: php

我有2个脚本。那是:

  1. registration.html
  2. process_registration.php
  3. 有时候有人直接打开了这个链接到process_registration.php,那我怎么能阻止它?

    Process_registration.php函数用于保存来自registration.html的输入数据。

    有什么想法吗?

5 个答案:

答案 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

只有顶级页面包含此变量。所有其他文件,如果直接打开,关闭,从而防止任何意外误用/数据丢失。