按照视频教程进行,为什么会报错

按照视频教程进行,为什么会报错

代码部分:

<?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

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕查理 2018-03-19 10:08:26

您好,视频中老师直接使用127.0.0.1/mooc/index.php是因为此时老师已经进行了如下判断

if($controller == '')
{
    $controller = 'IndexController';
}
if($action == '')
{
    $action == 'index';
}

当没有收到值时,会默认使用IndexController类的内容。

同学按照老师的内容敲写代码,如果收到如下图所示内容:能够接收到Index,但是依旧存在报错信息,是因为一开始$_SERVER['PATH_INFO']变量没有收到值,因此会报Notice错误,但是打印出Index是因为进行了判断的设置,没有收到值时,会默认使用IndexController类的内容。

http://img1.sycdn.imooc.com//climg/5aaf1abc0001d60407710311.jpg

如果同学的错误与图片不同,可将您的控制器文件内容反馈,以便帮助您解决问题,祝学习愉快!

imooc_澈 2018-03-18 22:34:23

您好,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有 有效

否则没有值系统就会提示,后面也就都报错了。

如果解决了你的问题,请采纳,祝学习愉快~

  • 提问者 童莉莉 #1
    老师,您好,在视频课程中,视频中的讲师使用的域名是/mooc/index.php 即可访问 好像是在视频中的五分多钟左右,由于上传图片很模糊,所以只好上传代码
    2018-03-18 23:43:58
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师