我想在脚本的开头包含一个PHP文件,该文件打开IF条件。然后我写我的脚本,最后我包含了另一个PHP文件来关闭这个条件。
这给我带来了一个"Parse error: syntax error, unexpected end of file in…"的错误。
用这个简单的例子可以更好地理解:
header。php
if(aConditionalTest()) {
footer。php
} // endIf
mypage.php
include_once 'header.php';
echo 'my awesome content';
include_once 'footer.php';
供参考:我想这样做,例如:
- 在显示内容 之前检查用户是否被授权
- 实现一个网页缓存系统(参见http://www.phpfastcache.com/在"示例"部分,"缓存整个网页")
谢谢!
编辑:更准确地解释为什么我想这样做使用phpfastcache:
http://www.phpfastcache.com/说:
缓存整个网页PHP你也可以使用phpFastCache来缓存整个网页。这很简单例如,但在实际代码中,您应该将其拆分为两个文件:Cache_start.php和cache_end.php。 cache_start.php将存储开始代码直到ob_start();而cache_end。php将从获取HTML网页。那么,你的index.php将包含cache_start.php on
cache_end.php
那正是我想做的!根据他们下面的代码,这会导致条件在"cache_start.php"中打开,然后在"cache_end.php"
中关闭。cache_start.php
use phpFastCache'CacheManager;
$cache = CacheManager::Memcached();
$keyword_webpage = md5($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING']);
// try to get from Cache first.
$resultsItem = $cache->getItem($keyword_webpage)
if(!$resultsItem->isHit()) {
ob_start();
cache_end.php
// GET HTML WEBPAGE
$html = ob_get_contents();
$resultsItem->set($html)->expireAfter(1800);
$cache->save($resultsItem);
}
echo $resultsItem->get();
mypage.php
include_once 'cache_start.php';
// my awesome content to cache goes here...
include_once 'cache_end.php';
myotherpage.php
include_once 'cache_start.php';
// my other great content to cache goes here...
include_once 'cache_end.php';
所以为什么我要把phpfastcache代码在2个单独的文件的原因是,我有许多不同的PHP页面缓存,所以我想避免重复所有这些代码在每个页面…
希望这篇编辑能帮助你更好地理解为什么我要这样做,即使我明白,正如我担心的那样,这是不可能的。
试试吧:
我怎样才能做到这一点?
用邪恶的方式,eval all而不是像
那样包含:)eval(file_get_contents('header.php').'<?php echo "my awesome content";?>'.file_get_contents('footer.php'));
如果你想加入黑暗的一方,这可能是一个解决方案:)
旁注:在这个解决方案中,你必须密切关注全局变量!!
但是,事实是,你想把条件分散到不同的文件中,在我看来这是非常非常糟糕的做法。
[p]我用了另一种方法。
Only规则:只适用于全局空间(其他:-))
所以您想在cache_start.php
中打开if()并在cache_end.php
中关闭它。(出于ob_cache的原因)
但是如果条件没有改变,为什么不做两次呢?
在每个文件中测试if(condition)
!
或者设置一个变量,如$cach_op_started=true
,并在cache_end.php
中的第二个if()中测试它。
两者都适合你。
有点好笑,我第一次没有看到这个解决方案:)
最后注意:如果您愿意,还可以在PHP中使用自动前置和追加文件。这可以在php.ini中配置。这些文件将总是在脚本之前和之后自动加载。http://www.webdevsecrets.com/using-phps-auto_prepend_file-and-auto_append_file/
祝你玩得愉快
所以我理解的问题是,当你不希望某个用户看到一个页面的内容,页面的其余部分没有加载,这是什么导致错误?
如果是的话,为什么不总是包含文件,并在特定的页面中设置谁可以查看哪些文件的条件呢?
我在页眉中使用ob_start(),在页脚中使用ob_end_flush,效果很好。然后检查我的SESSION变量在特定页面的内容,如果登录的用户有权看到的内容,否则显示一个消息,如:"你没有被授权看到这个内容"