1

我有 2 个脚本。那是 :

  1. 注册.html
  2. process_registration.php

有时有人直接打开链接到 process_registration.php,那么我该如何防止呢?

Process_registration.php 功能是保存从registration.html 输入的数据。

任何的想法 ?

4

5 回答 5

4

您可以使用 :

if (!isset($_POST['field'])) {
  die();
}

在您的 process_registration.php 文件的顶部。

当然,替换field为表单中的现有字段之一。

如果您反对使用脚本注册多个帐户的洪水泛滥,您可以在注册表单上使用验证码字段,或使用防止爬行的保护措施。

于 2012-09-25T06:51:55.300 回答
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");
}
于 2012-09-25T06:54:41.733 回答
1

您可以检查当前请求是否为 POST 类型(如果您使用表单)

if($_SERVER['REQUEST_METHOD'] == 'POST')

您还可以检查是否设置了所有必需的变量。

于 2012-09-25T06:52:12.407 回答
1

您可以$_POST在 process_registration.php 中使用数组,例如:

if(!isset($_POST['yourvariable'])){
//Redirect to registration page
}

您也可以使用PHP Session。如果未设置会话,则将用户重定向到注册页面。

于 2012-09-25T06:55:11.380 回答
1

我喜欢Joomla处理这个问题的方式。

在 Joomla 的每个 php 页面上,您都会看到以下代码:

// No direct access
defined('_JEXEC') or die; // it's a config setting

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

于 2012-09-25T06:56:10.787 回答