2017-03-02 58 views
0

我的网站基本上是5个“页面”,大约30个由php调用的“帮助页面”,每个“页面”有时包含1或2个“帮助页面”,有时每页“10页”。是否可以检测页面是否包含PHP?

因为这些都包括我有某些变量和我的mysql连接代码在“页面”和助手页面依赖于这些变量。例如,这里是我的“edit.php”页:

<form method="POST" enctype="text/plain" action="<?php echo $actual_link; ?>"> 

<div class="one-hundred"><?php include("include/pages/vehicle.php"); ?></div> 

<div class="fifty"><?php include("include/pages/vehicle_valuations.php"); ?></div> 
<div class="fifty"><?php include("include/pages/vehicle_features.php"); ?></div> 

<div class="thirty-three"> 
    <?php 
     include("include/pages/purchased_info.php"); 
     include("include/pages/vehicle_Titles.php"); 
    ?> 
</div> 

<div class="thirty-three"><?php include("include/helper_content/warranty_lookup.php"); ?></div> 
<div class="thirty-three"><?php include("include/pages/vehicle_advertising.php"); ?></div> 

<div id="buttons"> 
    <input type="submit" id="Submit" value="Submit"> 
</div> 

我想知道如果我直接指导我的浏览器www.____.com/include/pages/vehicle.php是该页面失败,因为缺少mysql连接脚本和缺少变量。有没有办法来检测是否有人直接访问页面,或通过iframe或ajax或包括?

+0

你应该限制访问你的'include'目录,没有必要让它可以访问。 – AntoineB

+0

如果连接不正确,请检查每个文件或包含所有这些include/*文件的连接。 –

回答

0

您可以在“包含”php文件内查找$ _GET参数。

例如,

include(".../file.php?included=true"); 

然后,里面file.php ...

<?php 

if isset($_GET['included']) { 

//page was "included!" 

} 

但是,当用户通过HTTP访问页面:// ...有没有$ _GET参数添加到URL字符串,因此该页面不包括在内。

+0

我没有想到这一点。谢谢 –

0

是的,但它有点凌乱。首先,你拨打get_included_files。它返回迄今为止包含的所有文件的数组,因此您只需根据__FILE__验证其中的每个文件,即可使用__FILE__

0

将其连接定义在单独的PHP文件中,并将其包含在需要它的页面/子页面中, include_once()而不是include()。这样,您可以在所有页面上使用您的连接,而不必将其重新包括在内。

+0

我不知道,谢谢! –