PHP加载页面仅在包含页面上

时间:2018-07-29 14:13:36

标签: php url-redirection

我有一个process.php页面,

<p>This is process page</p>

我有一个index.php页面:

<?php include_once 'process.php' ?>

当我在Web URL中键入process.phpindex.php时,两个URL都会输出相同的结果:This is process page.

我想要的是

  • 我只想访问此process.php页,或者仅从index.php页访问。
  • 当我输入process.php时,它应该重定向到其他地方或不打印任何内容。

我该怎么做?任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:2)

这通常是通过变量或常量完成的:

index.php

define('IN_APP', true);
include('process.php'); //APP will be defined

process.php

if (!defined('IN_APP')) {
    //You can also add redirects here.
    die('Do not access this script directly.');
}

答案 1 :(得分:2)

您可以检查所包含文件的页面名称与用户所在页面的名称...以这种方式进行操作,无需在代码中添加额外的变量。

更改process.php

if(basename(__FILE__, ".php") != basename($_SERVER["REQUEST_URI"], ".php")){
    echo "<p>This is process page</p>";
}

解释功能:

  

这将返回包含的文件名:

basename(__FILE__, ".php")
     

这将返回用户所在的文件名:

basename($_SERVER["REQUEST_URI"], ".php")

答案 2 :(得分:0)

尝试此代码

index.php

$sourcePage = __FILE__; 
include 'process.php';

现在process.php

 if (isset($sourcePage)){
echo "Page is legally called from ".$sourcePage;
//or do your stuff here
}else{
die("Page was accessed directly, execution aborted.");
}