0

0

从零开始之ecshop基础篇(19)_PHP教程

php中文网

php中文网

发布时间:2016-07-13 17:17:01

|

1146人浏览过

|

来源于php中文网

原创

(为入口文件减负,将入口文件实现的功能,挪到框架的基础类中)

在框架目录增加Framework.class.php

计划:将需要初始化的公共功能,分模块,形成框架基础类的各个方法,分别调用执行,则可以完成项目的初始化功能。

使用静态的方法类完成:(看成功能的集合,而不是图纸设计对象;练习静态使用)

注意,对魔术常量的处理

dirname()函数可以取得一个地址中的路径部分

2
3

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
 * 初始化路径常量
 */      }

 

注意:将保存请求参数的变量,让在所有地方都可以被访问到。

2
3
4
5
6
7
8
9
10
11
12
13
14
            }

注意:需要将保存配置信息的数组,全局化。

2
3
4
5
6
7
8
9
/**
 * 初始化配置文件
 */      }

因此,使用时,应该找到全局的config变量:

在初始化默认平台时:

2
define(

 

2
3
4
5
6
7
8
9
10
11
12
13
14
        

 

此时自动加载功能:

有函数的实现专程了 类静态方法的实现

但是,PHP只认识一个叫__autoload()的函数,也就是php不能找到这个函数了。

处理方法:

告知php,在你需要找自动加载函数时,找我们定义的自动加载方法即可。

将一个普通函数(或者方法),注册成自动加载功能函数

利用一个php函数:spl_autoload_register();将普通函数(方法)注册成自动加载

参数,需要注册的函数或者方法

参数函数:函数名即可,使用一个字符串即可

参数方法:类(对象)和方法名。使用一个数组,第一个元素类名,第二个元素方法名

spl_autoload_register(array('Framework','userAutoload));

2
3
4
5
6
7
 * 注册自动加载方法
 */     spl_autoload_register( }

注意:自动加载的方法应该是公共的。

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 * 注册自动加载方法
 */     spl_autoload_register( }
 
   * 自动加载方法
  */                                  );            } 
                }   
                }
  }

在入口文件,加载Framework.class.php框架基础类,运行run()程序运转

index.php

2
3
4
5
6

判断管理员登陆状态

是否登陆标识(状态)

 

应该如何保存登陆标识?

保存登陆标识的数据特征:

总结:需要一个在同一个浏览器的多次请求间可以将数据传递(共享)处理方案。

难点就在于,php程序(凡事b/s,基于http协议),所有资源的最大生命周期就是脚本周期。

在浏览器上记录数据,最核心的解决方案。

cookie,session,会话技术。

 

 

setcookie()即可完成

setcookie('名字','值')

application/controller/back/AdminController.class.php

indexAction();

 

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    session_start();
                    $result = $model_admin->checkByCookie();
                            }                     }
    }
    }

 

setcookie(名,值,有效期,有效目录,有效域名)

setcookie第二个,只能字符串

setcookie('name',array('itcast','php'))

2
3
4
$arr = setcookie(setcookie(

此时,在获取该变量时:

$_COOKIE['info']就变成一个有2个元素的数组

$_POST['info'] = array()

默认,浏览器关闭,也称临时cookie

利用setcookie的第三个参数,则可以被配置:使用一个时间戳,来表示有效期

time()获得当前的时间戳。做加减,得到其他时间的时间戳。

典型的设置方法

2
3
4
5
6

立即学习PHP免费学习笔记(深入)”;

立即学习PHP免费学习笔记(深入)”;

 

 

大师兄智慧家政
大师兄智慧家政

58到家打造的AI智能营销工具

下载
2
3
4
5
//但是,浏览器端的还是itcast

cookie是保存浏览器端,php通过发出命令,才能在浏览器上保存数据。

浏览器上的cookie

利用firebug上网络面板,监控浏览器发出的请求与接到的响应:

在响应数据内,应该将数据发送的浏览器端,告知浏览器保存该cookie变量:

服务器,利用响应数据的一部分(响应头),将设置的cookie的信息,发送到浏览器:

在浏览器发送的请求数据中将浏览器认为有效的cookie携带到服务器端。

此时,服务器接收的该请求,发现存在cookie数据,利用这个数据,形成$_COOKIE数组,供用户脚本使用

 

 

session与cookie,所解决的问题是相同的。

得到可以在同一个浏览器的多次请求,将数据传递一个方法。

cookie劣势:

数据直接存储在浏览器端,两个显著的问题:

方案:

在服务器上,保存数据。

如何保证数据可以在浏览器的多次请求间传递,并且区分浏览器。

在服务器端,为每个来访的浏览器端,都建一个独立的数据空间。为每个数据空间分配一个唯一的标识,让浏览器保存这个唯一的标识。浏览器每次请求时,携带标识过来,利用标识确定唯一的数据空间

总结:

session技术:将会话数据保存在服务器端,是浏览器端保存存储数据空间标识,浏览器请求时携带标识,服务器负责利用标识,在相应的存储空间内做数据处理。

 

session_start()可以开启

利用预定义变量$_SESSION变量进行操作。增,删,改,查都在$_SESSION上完成。

2
3
4
5
6
7
8

Tips;session技术时基于cookie技术,需要在cookie保存标识

在开启session时,服务器会为浏览器分配一个保存sessionID(session的标识)的cookie变量,保存到浏览器端。

Tips:是一个整站有效的cookie变量

在浏览器的接下来的请求中,都是携带该cookie变量,sessionID到服务器端:

 

默认的:php以文件的形式,保存每个独立的数据空间的。被保存在,服务器端系统的临时目录内。

文件名,以当前的sessionID命名,保证空间唯一性。

可见,保存的时候是学历恶化的结果。

两个基本步骤:

 

 

只有$_SESSION的元素下表才能是数值型的。

2

 

unset($_SESSION['key']);删除$_SESSION内的一个元素

如果删除所有的session数据呢?

$_SESSION = array();

不对的:unset($_SESSION);,不会导致session数据丢失,php内部的session机制,还可以找到已经存在的处理好的session数据,将其写到session数据空间内。

删除session相关的存储文件

session_destroy()函数可以完成

2

但是,删除文件,$_SESSION数组内的数据还在:

但是,在执行session_destroy()后,脚本周期后的写操作,则不执行。

 

如何完全删除一个session的全部数据?

文件,$_SESSION,cookie内的sessionID变量

session_destory();

$_SESSION = array();

setcookie('PHPSESSID','',time() - 1);

 

典型的通过执行session_start()完成

支持,在配置文件中,自动开启

但是,session如果重复开启,则会报告一个错误:

典型的将错误屏蔽了即可

 

 

可以被配置:

session.save_handler php使用的session数据的处理的方式

可以改成user,表示用户自定义

session.save_path

 

 

存储位置不同

敏感度低,需要永久保存的数据,存到cookie内(用户体验)

安全性高,会话周期内存在的数据,保存到session内(数据合法性,合理性,完整性)

session可以保存各种数据类型

 

典型的将登陆验证标识,保存到session中:

application/controller/back/AdminController.class.php

2
3
4
5
6
7
8
9
10
11
12
                }

 

application/controller/back/IndexController.class.php

2
3
4
5
6
7
8
                    
    }   
}

 

 

记录登陆状态

在登陆成功后,判断是否选择了保存登陆信息:

application/controller/back/AdminController.class.php

signinAction()

2
3
4
    

记录什么格式:

保密,可以被验证

不能保存,后台登陆的信息

至少要成对,可以被验证

设计成:

admin_id

处理过的密码(在md5的基础上,再加密处理)

2
3
4
5
        setcookie(}

application/controller/back/IndexController.class.php

indexAction()

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        $result = $model_admin->checkByCookie();
                    $session_start();
            }             }
}

模型

在AdminModel内增加一个checkByCookie()方法:

application/model/AdminModel.class.php

2
3
4
5
6
7
8
9
10
                }
        }

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/626631.htmlTechArticle(为入口文件减负,将入口文件实现的功能,挪到框架的基础类中) 在框架目录增加Framework.class.php 计划:将需要初始化的公共功能,分模...

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

1044

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

334

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

213

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

35

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

111

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

77

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

17

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

813

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

97

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

Vue 教程
Vue 教程

共42课时 | 8.7万人学习

Sass 教程
Sass 教程

共14课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号