按照视频教程进行,为什么会报错
代码部分:
<?php
header('content-type:text/html;charset=utf-8');
$pathinfo = substr($_SERVER['PATH_INFO'],1);
//echo $pathinfo;
$array = explode('/',$pathinfo);
list($controller,$action) = $array;
//var_dump($controller);
//echo '<br>';
//var_dump($action);
if($controller == '')
{
$controller = 'IndexController';
}
if($action == '')
{
$action == 'Index';
}
require_once 'controller/'.$controller.".php";
$class = new $controller();
//print_r($class);
$class -> $action();
?>
报错部分:
Notice: Undefined index: PATH_INFO in D:\xampp\htdocs\ceshi\index.php on line 4
Notice: Undefined offset: 1 in D:\xampp\htdocs\ceshi\index.php on line 11
Fatal error: Method name must be a string in D:\xampp\htdocs\ceshi\index.php on line 35
谢谢老师
正在回答 回答被采纳积分+1
您好,视频中老师直接使用127.0.0.1/mooc/index.php是因为此时老师已经进行了如下判断
if($controller == '') { $controller = 'IndexController'; } if($action == '') { $action == 'index'; }
当没有收到值时,会默认使用IndexController类的内容。
同学按照老师的内容敲写代码,如果收到如下图所示内容:能够接收到Index,但是依旧存在报错信息,是因为一开始$_SERVER['PATH_INFO']变量没有收到值,因此会报Notice错误,但是打印出Index是因为进行了判断的设置,没有收到值时,会默认使用IndexController类的内容。
如果同学的错误与图片不同,可将您的控制器文件内容反馈,以便帮助您解决问题,祝学习愉快!
您好,PATH_INFO未定义,说明没有这个值,检查一下应该是你的访问没有带路由,导致这个值没有,后面也就报错了。
访问路径必须跟路由 $_SERVER['PATH_INFO']才有效,如下:
http://localhost/test.php 此时PATH_INFO是没有的,无效
http://localhost/test.php?id=1 PATH_INFO没有,无效
http://localhost/test.php/1.html PATH_INFO有 有效
否则没有值系统就会提示,后面也就都报错了。
如果解决了你的问题,请采纳,祝学习愉快~
- 参与学习 人
- 提交作业 225 份
- 解答问题 3372 个
掌握用PHP开发互联网网站的必备功能,掌握当下主流的Linux系统开发,并熟练使用热门框架ThinkPhp开发电商团购项目,是通向PHP工程师必经之路。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星