2013-01-18 53 views
-1

In there 存在一个简单的PHP MVC示例。问题是,这个例子只是工作时,这个关于简单的PHP MVC示例

$action = $_GET['action']; 
if(function_exists($action) && !substr($action,0,1)=="_"){ 
    $action(); 
}else{ 
    echo "<h1>404 Page Not Found</h1><p>The page you requested could not be found</p>"; 
} 

改为:

$action = $_GET['action']; 
if(function_exists($action) || !substr($action,0,1)=="_"){ 
    $action(); 
}else{ 
    echo "<h1>404 Page Not Found</h1><p>The page you requested could not be found</p>"; 
} 

& &改为||。或完全!substr($ action,0,1)==“_”删除。这条线是不允许运行的$ action

=======================

编辑:问题是,路由器不& &工作!

+0

你为什么要这样? _通常是跟踪私有函数,这些函数只能在其他类函数中使用。 – Jason

+2

为什么这个标签为“mvc”?问题应该是“substr()如何工作?” –

回答

0

解决与变化

来源:

if(function_exists($action) && !substr($action,0,1)=="_") 

收件人:

if(function_exists($action) && !(substr($action,0,1)=="_")) 
1

其因为&&and

所以这样

if(function_exists($action) && !substr($action,0,1)=="_"){ 

如果函数exsits ANDsubstr不包含_不是运行

这意味着

||or所以这意味着

if(function_exists($action) || !substr($action,0,1)=="_"){ 

如果函数exsits但字符串包含_它会失败, 或者如果功能不exsists,但是字符串犯规包含_它仍然会失败。

所以&&检查如果两者都好,什么||不管其中之一是有效的还是真实的,如果对方失败或无效的,它作为你在上面

指定会给你404我希望它帮助你,如果它不是明确的,我会尽力来形容它在诺特尔方式

+0

我想你不理解我。我的语法没有问题,我的谈话只是在** && **改为** || **路由器工作时。好? – msoa

+0

哦,太难过了 –