2014-02-23 20 views
0

假设在我的目录“MY_DIR /”包含以下文件:PHP如果目录中的所有文件都为空,如何显示“Text Empty”?

file1.php 
file2.php 
file3.php 
... 

而且假定每个文件不为空..

<div id="file_data"> 
<?php $my_dir = glob("my_dir/*.php"); ?> 

<!-- This will display all files --> 
<?php foreach($my_dir as $file) { ?> 
<?php include $file; ?><br> 
<?php } ?> 
</div> 

如果全部或部分文件不为空,将显示一些信息在我的页面,但如何显示自定义文本,如果所有文件都是空的?我不想在我的页面上显示任何数据/信息。

感谢您的帮助,我是程序员非常初级=)

+0

如果要显示文件内容,请不要使用include,它会执行代码,只需使用echo file_get_contents($ file); – Sirac

+0

@Sirac我创建的文件来构建一个HTML元素,所有文件的设计,所以它更简单,如果使用包括..,我保护该文件通过.htacess直接访问,所以任何人都无法打开它和file_get_contents方法也不会正常工作.. –

+0

在我看来,file_get_contents应该工作,因为它不使用http-stream,并且.htaccess文件在这里没有影响。您可以在包含文件的末尾设置返回$ somevalue。 include将返回包含文件中返回的值,所以如果文件为空,则不返回任何内容,并且可以通过检查包含语句的返回值来检查程序 – Sirac

回答

0

要检查的内容的文件,你可以添加

return "finished"; //or some other return value 

到文件的末尾,使用此代码:

<div id="file_data"> 
<?php $my_dir = glob("my_dir/*.php"); 

$content = false; //no content echoed until now 
foreach($my_dir as $file) { 
    $returnValue = include($file); 
    if ($returnValue == "finished"){ //or some other return-value to check 
     //some content was successfull echoed 
     $content = true; 
     echo "<br>\n"; 
    } 
} 
if (!$content){ 
    echo "No content here"; //or just echo something more useful 
} ?> 

顺便说一句,从几个文件加载你的内容,并只加载该目录中的所有文件是没有好的编程习惯。攻击者可以将他的文件插入你的目录并插入自己的代码。此外,它将非php文件放在您的目录中(意识到这一点或者只是意外),include会导致错误,并且不会创建您的页面。我会试着想想另一种方式来创建您的网站在未来。

+0

感谢您的帮助,但我不明白你的代码如何工作,它仍然显示文件的内容和自定义文本“无内容”,我可以通过创建一个文件来解决它,然后检查该文件(是否为空)..也许有更好的办法做到这一点..我很抱歉,如果我的英语不好:D –

+0

你不必为坏英语道歉,我的英语技能也不是那么好。不幸的是我不能完全理解,我应该解释哪部分代码。从你的评论我明白,代码仍然回应“没有内容在这里”,即使文件包括在内。如果是这种情况,则将“return somevaluehere”添加到您的代码中,并将上面代码中的第一个if语句更改为“if($ returnValue == somevaluehere){”。它可能也适用于“if($ returnValue){”。它重要的是在文件末尾或程序不会注意的地方添加return语句。我希望我能帮助你。 – Sirac

相关问题