禁用对php页面的直接访问,但允许从特定页面访问

禁用对php页面的直接访问,但允许从特定页面访问,php,permissions,Php,Permissions,我有一个表单,用于收集数据并将其发送到process_form.php。该文件执行各种功能,但需要用户输入数据才能工作,如果在没有用户数据的情况下执行,可能会产生一些问题。 我不希望有人可以键入www.mysite.com/process\u form.php,但我希望仅当引用的url为www.mysite.com/compile.php时才允许他访问 可能吗?通过使用$\u SERVER['HTTP\u REFERER']是可能的,但是请注意使用此变量,因为它可能会被操纵并且不可靠。从php.

我有一个表单,用于收集数据并将其发送到process_form.php。该文件执行各种功能,但需要用户输入数据才能工作,如果在没有用户数据的情况下执行,可能会产生一些问题。 我不希望有人可以键入www.mysite.com/process\u form.php,但我希望仅当引用的url为www.mysite.com/compile.php时才允许他访问
可能吗?

通过使用$\u SERVER['HTTP\u REFERER']是可能的,但是请注意使用此变量,因为它可能会被操纵并且不可靠。从php.net:

将用户代理引用到的页面(如果有)的地址 当前页面。这是由用户代理设置的。并非所有的用户代理都会这样做 设置此选项,一些选项提供将HTTP_REFERER修改为 特色。简言之,它真的不可信

我建议您编辑process_form.php,检查函数所需的输入数据是否存在。如果您有GET表格,您可以使用:

if(!empty($_GET['myFormFieldName'])) { 
    // process
}
或者如果使用POST:

if(!empty($_POST['myFormFieldName'])) {
    // process
}

您应该使用会话来验证用户是否通过正确的过程到达最后一页