(为入口文件减负,将入口文件实现的功能,挪到框架的基础类中)
在框架目录增加Framework.class.php
计划:将需要初始化的公共功能,分模块,形成框架基础类的各个方法,分别调用执行,则可以完成项目的初始化功能。
使用静态的方法类完成:(看成功能的集合,而不是图纸设计对象;练习静态使用)
注意,对魔术常量的处理
dirname()函数可以取得一个地址中的路径部分
2 | ' |
2 |
/** * 初始化路径常量 */ } |
注意:将保存请求参数的变量,让在所有地方都可以被访问到。
2 | } |
注意:需要将保存配置信息的数组,全局化。
2 |
/** * 初始化配置文件 */ } |
因此,使用时,应该找到全局的config变量:
在初始化默认平台时:
2 | define( |
2 | $action_name(); |
此时自动加载功能:
有函数的实现专程了 类静态方法的实现
但是,PHP只认识一个叫__autoload()的函数,也就是php不能找到这个函数了。
处理方法:
告知php,在你需要找自动加载函数时,找我们定义的自动加载方法即可。
将一个普通函数(或者方法),注册成自动加载功能函数
利用一个php函数:spl_autoload_register();将普通函数(方法)注册成自动加载
参数,需要注册的函数或者方法
参数函数:函数名即可,使用一个字符串即可
参数方法:类(对象)和方法名。使用一个数组,第一个元素类名,第二个元素方法名
spl_autoload_register(array('Framework','userAutoload));
2 |
* 注册自动加载方法 */ spl_autoload_register( } |
注意:自动加载的方法应该是公共的。
2 |
* 注册自动加载方法 */ spl_autoload_register( } * 自动加载方法 */ FRAME_PATH . FRAME_PATH . FRAME_PATH . ); } } } } |
在入口文件,加载Framework.class.php框架基础类,运行run()程序运转
index.php
2 |
|
判断管理员登陆状态
是否登陆标识(状态)
应该如何保存登陆标识?
保存登陆标识的数据特征:
总结:需要一个在同一个浏览器的多次请求间可以将数据传递(共享)处理方案。
难点就在于,php程序(凡事b/s,基于http协议),所有资源的最大生命周期就是脚本周期。
在浏览器上记录数据,最核心的解决方案。
cookie,session,会话技术。
setcookie()即可完成
setcookie('名字','值')
application/controller/back/AdminController.class.php
indexAction();
2 |
session_start(); $result = $model_admin->checkByCookie(); } jump( } } } |
setcookie(名,值,有效期,有效目录,有效域名)
setcookie第二个,只能字符串
setcookie('name',array('itcast','php'))
2 | $arr = setcookie(setcookie( |
此时,在获取该变量时:
$_COOKIE['info']就变成一个有2个元素的数组
$_POST['info'] = array()
默认,浏览器关闭,也称临时cookie
利用setcookie的第三个参数,则可以被配置:使用一个时间戳,来表示有效期
time()获得当前的时间戳。做加减,得到其他时间的时间戳。
典型的设置方法
2 |
2 | '//但是,浏览器端的还是itcast |
cookie是保存浏览器端,php通过发出命令,才能在浏览器上保存数据。
浏览器上的cookie
利用firebug上网络面板,监控浏览器发出的请求与接到的响应:
在响应数据内,应该将数据发送的浏览器端,告知浏览器保存该cookie变量:
服务器,利用响应数据的一部分(响应头),将设置的cookie的信息,发送到浏览器:
在浏览器发送的请求数据中将浏览器认为有效的cookie携带到服务器端。
此时,服务器接收的该请求,发现存在cookie数据,利用这个数据,形成$_COOKIE数组,供用户脚本使用
session与cookie,所解决的问题是相同的。
得到可以在同一个浏览器的多次请求,将数据传递一个方法。
cookie劣势:
数据直接存储在浏览器端,两个显著的问题:
方案:
在服务器上,保存数据。
如何保证数据可以在浏览器的多次请求间传递,并且区分浏览器。
在服务器端,为每个来访的浏览器端,都建一个独立的数据空间。为每个数据空间分配一个唯一的标识,让浏览器保存这个唯一的标识。浏览器每次请求时,携带标识过来,利用标识确定唯一的数据空间
总结:
session技术:将会话数据保存在服务器端,是浏览器端保存存储数据空间标识,浏览器请求时携带标识,服务器负责利用标识,在相应的存储空间内做数据处理。
session_start()可以开启
利用预定义变量$_SESSION变量进行操作。增,删,改,查都在$_SESSION上完成。
2 |
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 | jump(} jump(} |
application/controller/back/IndexController.class.php
2 |
jump( } } |
记录登陆状态
在登陆成功后,判断是否选择了保存登陆信息:
application/controller/back/AdminController.class.php
signinAction()
2 |
记录什么格式:
保密,可以被验证
不能保存,后台登陆的信息
至少要成对,可以被验证
设计成:
admin_id
处理过的密码(在md5的基础上,再加密处理)
2 | setcookie(} |
application/controller/back/IndexController.class.php
indexAction()
2 |
$result = $model_admin->checkByCookie(); $session_start(); } jump( } } |
模型
在AdminModel内增加一个checkByCookie()方法:
application/model/AdminModel.class.php
2 |
} db->fetchRow($sql); } |

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.
