今天继续学习CI框架的相关知识,分析下面语句,将匹配到的用户,Location跳转至相应界面,header()函数用来向客户端发送原始HTTP报头。

`if ($this->user ['uid'] == 0) {`
`header("Location:" . url('user/login'));`
`}`

头信息作用

1.跳转,当浏览器接收到头信息中的Location:xxx后,就会自动跳转到 xxxx 指向的URL地址,类似与js 跳转。但两者不同的是,Location跳转只有浏览器知道,外部的用户无法知道体内容存在与否。

2、指定网页的内容:同样一个XML文件,如果头信息中指定:Content-type: application/xml 的话,浏览器会将其按照XML文件格式解析。但是,如果头信息中是:Content-type: text/xml 的话,浏览器就会将其看作存文本解析。(浏览器不是按照扩展名解析文件的)

3、附件:有时候碰到在网站下载东西点开后,显示都为乱码。这是因为浏览器把它当作网页打开了。这与头信息有关。有些网站也因为网站设计者忘记写Content-type,导致浏览器判断错误,从而无法打开。因为Conteent-type作用是判断打开还是保存。另外一个方法可以指定内容为附件、需要保存–Content-Disposition: attachment; filename=”xxxxx”

PHP如何实现跳转

1、跳转:header(“Location: http://www.example.com/“);

2、指定内容: header(‘Content-type: application/pdf’);

3、附件: header(‘Content-Disposition: attachment; filename=”downloaded.pdf”‘);// 指定内容为附件 readfile(‘original.pdf’);// 打开文件,并输出。

注意:所有头信息都必须在体内容之前,在之前有任何输出了的话,header函数中的头信息就没用了。比如,在文件最开头的<?php 处,如果前面有空格或者有空行,那header函数就没用了(但也可以通过设置:output_buffer来解决)。

通过 URI 分段向你的方法传递参数

如果URI 多于两个段,多余的段将作为参数传递到所写的方法中。

例如,假设URI 是这样:

example.com/index.php/products/shoes/sandals/123

所写的方法将会收到第三段和第四段两个参数(”sandals” 和 “123”):

`<?php`
`class Products extends \CodeIgniter\Controller {`
`​`
`public function shoes($sandals, $id)`
`{`
`echo $sandals;`
`echo $id;`
`}`
`}`

构造函数

如果准备在控制器中使用构造函数,要在函数中加上这句代码::

parent::__construct(…$params);

原因是你的构造函数将会覆盖父类的构造函数,所以我们要手工的调用它。

例如:

`<?php`
`class Blog extends \CodeIgniter\Controller`
`{`
`public function __construct(...$params)`
`{`
`parent::__construct(...$params);`
`​`
`// Your own constructor code`
`}`
`}`

在子目录中存储视图

视图文件保存到子目录中。加载视图时需要包含子目录的名字,例如:

echo view('directory_name/file_name');

命名空间视图

将视图存储在已命名空间的 View 目录下,并像加载加载命名空间一样加载视图。虽然 PHP 不支持在命名空间下加载非类文件,但是 CodeIgniter 提供了此功能,使你可以将它们以类似于模块的方式打包在一起,以便于重用或分发。

视图中显示动态数据

数据通过视图方法的第二个参数从控制器传递到视图,这是一个例子:

`$data = [`
`'title'   => 'My title',`
`'heading' => 'My Heading',`
`'message' => 'My Message'`
`];`
`​`
`echo view('blogview', $data);`

打开控制器文件,并添加一下代码:

`<?php namespace App\Controllers;`
`​`
`class Blog extends \CodeIgniter\Controller`
`{`
`public function index()`
`{`
`$data['title']   = "My Real Title";`
`$data['heading'] = "My Real Heading";`
`​`
`echo view('blogview', $data);`
`}`
`}`

现在打开视图文件,并将文本更改为与数据中的数组键对应的变量:

`<html>`
`<head>`
`<title><?= $title ?></title>`
`</head>`
`<body>`
`<h1><?= $heading ?></h1>`
`</body>`
`</html>`

现在重新刷新页面,变量已经替换成数据中的值。

默认情况下,传递的数据只在当前调用 view 中可用。如果在一次请求中多次调用该方法,则必须将所需的数据传递给每个视图。这样可以防止 数据显示/覆盖到其他视图中的数据而导致出现问题。如果你想保留数据,则可以将 saveData 选项传递到第三个参数的 $option 数组中:

`$data = [`
`'title'   => 'My title',`
`'heading' => 'My Heading',`
`'message' => 'My Message'`
`];`
`​`
`echo view('blogview', $data, ['saveData' => true]);`

php ci框架中的$this->uri->segment()意思

获得url上的参数

比如:…index.php/controller/index/3

$this->uri->segment(3);就是url上从index.php开始往后数,/划分,例子上就是得到的3

10种常见机器学习的错误以及如何避免他们

CI框架–头信息,构造器,视图的更多相关文章

  1. 【ci框架学习】控制器-视图

    基础的东西就不写了,网上大把的教程,可以慢慢磨.这里说些要注意的要点. 1.所有控制器都必须间接或者直接继承控制器基类 CI_Controller. 2.文件命名尽量小写,因为ci使用的是pathin ...

  2. PHP获取http头信息和CI中获取HTTP头信息的方法

    CI中获取HTTP头信息的方法: $this->input->request_headers() 在不支持apache_request_headers()的非Apache环境非常有用.返回 ...

  3. CI框架+Umeditor上传图片配置信息

    Umeditor提供了一个上传文件通用的类Uploader.class.php, 首先将Uploader.class.php类放入CI框架的libraries目录下更名为Myuploader.php然 ...

  4. CI框架浅析(全篇)

        业余花了点时间看看CodeIgniter框架(简称CI),CI目前的稳定版本是 3.X,4.0版本已经出来了,但还在测试中,所以我分析的还是 3.x 版本. CI是一个很轻便的框架,整个下载包 ...

  5. CI框架 -- 核心文件 之 Exceptions.php

    使用CI框架,我们通常使用一下三个函数处理错误: show_error('消息' [, int $status_code = 500 ] ) show_404('页面' [, 'log_error'] ...

  6. CI框架浅析

    CI框架浅析(全篇)     业余花了点时间看看CodeIgniter框架(简称CI),CI目前的稳定版本是 3.X,4.0版本已经出来了,但还在测试中,所以我分析的还是 3.x 版本. CI是一个很 ...

  7. 初学后台框架总结篇二——快速了解CI框架

    一.下载CI框架并安装,这里放置一张自己的项目目录结构图 目录框架搭建好之后开始将自己的项目与框架融合 二.更改相关配置 1.用任何文本编辑器打开 application/config/config. ...

  8. CI框架如何在主目录application目录之外使用uploadify上传插件和bootstrap前端框架:

    19:29 2016/3/10CI框架如何在主目录application目录之外使用uploadify上传插件和bootstrap前端框架:项目主路径:F:\wamp\www\graduationPr ...

  9. CI框架源码阅读笔记3 全局函数Common.php

    从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap ...

  10. CI框架源码阅读笔记1 - 环境准备、基本术语和框架流程

    最开始使用CI框架的时候,就打算写一个CI源码阅读的笔记系列,可惜虎头蛇尾,一直没有行动.最近项目少,总算是有了一些时间去写一些东西.于是准备将之前的一些笔记和经验记录下来,一方面权作备忘,另一方面时 ...

随机推荐

  1. QQ/微信域名防红方法,打开网站跳转浏览器打开

    简单通用QQ/微信跳转浏览器打开代码 使用方法: 将代码全部复制 粘贴到 网站根目录下index.php文件的顶端 注意:不要覆盖了 index.php里面的原代码,原代码保留(请尽快把样式以及图片本 ...

  2. OERV兴趣探索:模拟器移植

      最近看了很多开源项目,主要都集中在模拟器方面,我指的是游戏模拟器比如GameBoy或者PlayStation这一类.现在想玩这系列的游戏可以在手机或者电脑下载相应的模拟器,并且获取对应的ROM文件 ...

  3. 题解:洛谷P11557 [ROIR 2016 Day 2] 有趣数字

    题目传送门. 考虑数位 dp,也就是记忆化搜索,设置一个搜索函数 \(dfs\),有三个参数,一个是当前位数,表示搜到哪一位了,一个是从第一位到上一个位数是否全部顶上界,从第一位到上一位全部顶上界的意 ...

  4. wikidata介绍和查询

      Wikidata是一个大型结构化开源知识图,为维基百科等项目提供支持.我们可使用SPARQL(Wikidata官方Tutorial)对其进行查询.SPARQL是一种专为 RDF(Resource ...

  5. .NET10 - 预览版1新功能体验(一)

    .NET 10 首个预览版已经在前两天发布,该版本在 .NET Runtime.SDK.libraries.C#.ASP.NET Core.Blazor 和 .NET MAUI 等多个方面都有重大改进 ...

  6. php的token管理类(AI生成)

    当然,以下是一个简单的 PHP 类,用于生成和管理令牌(token).这个类可以生成一个随机的令牌.验证令牌是否有效,并允许设置一个令牌的过期时间. <?php class Token { pr ...

  7. Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库

    #div_digg { float: right; font-size: 12px; margin: 10px; text-align: center; width: 120px; position: ...

  8. winform 实现太阳,地球,月球 运作规律https://www.cnblogs.com/axing/p/18762710

    无图眼吊(动图)    缘由 最近我太太在考公学习,给我出了两道高中地理知识的题目,把我问的一头雾水,题目是这样的 第一题 第二题 看到这两道题,当时大脑飞速运转,差点整个身体都在自转了,所以产生了个 ...

  9. MySQL 8.0 语法记录

    SQL又杂又烦,记不住,网上搜到的语句还未必正确.这里做一个Record 基本操作 数据库操作 数据表操作 create index [索引名] on [表名]([列名]); /* 以选定列为索引信息 ...

  10. Vue3生命周期钩子函数深度解析:从源码到实战的万字指南

    一.Vue3生命周期革新特性 相较于Vue2,Vue3通过Composition API带来了更灵活的生命周期管理方式.通过onBeforeMount等函数注册钩子时,实际是通过injectHook方 ...