이 글은 주로 PHP에서 데이터베이스와 테이블을 구축하는 방법 - 구성 파일 - 오류 로그를 소개합니다. 이제 필요한 친구들이 참고할 수 있도록 공유하겠습니다.
- 조직 프레임워크
- 데이터베이스 및 테이블 구축
- 구성 파일 클래스
- 오류 로깅
-
--------------本篇后文件结构:-------------------------------------- blog ├─App │ ├─Model 模型目录 │ ├─View 视图目录 │ │ ├─Admin后台目录 │ │ └─Home前台目录 │ ├─Common 配置目录 │ │ └─config.php 配置文件 │ ├─Log 日志目录 │ │ └─log.txt 日志文件 │ ├─Controller 控制器 │ │ ├─Admin后台 │ │ │ └─DemoController.class.php 测试控制器 │ │ └─Home前台 ├─Public 静态公共文件(js,css,images) │ ├─Plugins 插件 │ ├─Back后台 │ └─Home前台 ├─Frame 公共使用的类 │ ├─BaseModel.class.php 数据库连接类 │ ├─BaseController.class.php 控制器公共操作(设置编码,信息跳转) │ ├─FactoryModel.class.php 模型工厂类 │ ├─Log.class.php 日志厂类 │ ├─Config.class.php 配置文件读取类 │ ├─Init.class.php 初始化应用类 │ └─MySQLDB.class.php 数据库操作工具类 └─index.php 入口文件 -----------------------------------------------------------------------------------------------------
프로젝트 소스 코드 다운로드 및 보기: https://gitee.com/NewbiesYang/young_blog프레임워크 구성
테스트 페이지 정리1) 이전에 프레임워크 구조를 빌드합니다. , 사용자 로그인 테스트 페이지 및 백엔드 홈 페이지를 사용합니다. 여기에서 모두 제거하고 처음부터 시작하여 전면 및 백엔드 페이지를 작성하세요. ThinkPHP, Laravel 또는 기타 프레임워크를 다운로드할 때와 유사합니다. 이제 이 마이크로 프레임워크에서 프로젝트 구축을 시작하겠습니다
2) 실제 개발에는 프런트엔드 직원이 준비한 정적 페이지를 사용합니다. 따라서 [템플릿 홈]이나 다른 웹사이트에서 배경 템플릿과 프런트엔드 블로그 정적 페이지를 다운로드할 수도 있습니다. 그런 다음 백엔드 개발에 집중하여 작업 속도를 높이세요. 이 프로젝트는 학습 및 연구를 위한 것이므로 걱정할 필요가 없습니다.
原本是准备全部利用别人写好的前端页面(包括前端显示和后台页面),专注于后端逻辑的开发。而且已经把分类页面列表都做好了。还提交传送了。 此刻,仔细想想,要是这样玩,那我直接用框架更好了。既然做后端开发,自己写个后端页面+程序处理,没什么问题吧..., 置于前端显示页面,那再用前辈写的前端页面倒是可以的 于是乎,卷起柚子,说干就干,先来整理框架,开始搭建博客。。。。。
프레임 구조 :
--------------清理后MVC框架文件结构:--------------------------------------
blog
├─App
│ ├─Model 模型目录
│ ├─View 视图目录
│ │ ├─Back后台
│ │ └─Home前台
│ ├─Controller 控制器目录
│ │ ├─Back后台
│ │ └─Home前台
├─Public 静态公共文件(js,css,images)
│ ├─Plugins 插件
│ ├─Back后台
│ └─Home前台
├─Frame 公共使用的类
│ ├─BaseModel.class.php 数据库连接类
│ ├─BaseController.class.php 控制器公共操作(设置编码,信息跳转)
│ ├─FactoryModel.class.php 模型工厂类
│ ├─Init.class.php 初始化应用类
│ └─MySQLDB.class.php 数据库操作工具类
└─index.php 入口文件
-----------------------------------------------------------------
후속 개발은 디렉토리 구조 파일만 복사하면 되며 이를 기반으로 개발이 가능합니다.
전송 코드 제출
git add -A git commit -m "清理MVC结构"git push origin master플러그인 준비
1)layui 플러그인: 백그라운드 프로그램을 빌드하고layui 프론트엔드 프레임워크를 사용할 준비를 합니다. 개인적으로 이 프레임워크는 백그라운드 인터페이스에 좋다고 생각합니다. . 또한 일부 비교 사용 모듈도 포함되어 있습니다.
부트스트랩을 사용할 수도 있습니다. 저는 첫 페이지에 사용하는 것을 선호합니다.
다운로드 URL: http://www.layui.com/
2) jQuery 라이브러리: 특히 ajax 요청을 사용할 때 DOM을 조작하는 것이 더 편리합니다.
3) 기타 플러그인: Ueditor 에디터 등 필요하실 때 다운받아 사용하세요. 일반적으로 플러그인에는 데모 예제가 포함되어 있습니다. 예제와 매뉴얼을 따라가다 보면 웹 개발을 이해한다면 기본적으로 사용할 수 있습니다.
위 플러그인에 대해 잘 모르셔도 상관없습니다. 필요한 모듈이 있으면 매뉴얼을 확인하시고, 원하시면 사용하시면 됩니다. 더 잘하려면 당연히 더 많은 시간을 투자하고 더 많이 연습해야 합니다. 프로그램 관리자가 백그라운드에서 사용하도록 의도했는데, 아주 아름다울 필요는 없고 단지 실용적일 뿐입니다.
데이터베이스 구축 및 테이블 구축
준비: 브랜치 생성
$ git checkout master $ git checkout -b "start-admin-module"테이블 구축 아이디어:
블로그 템플릿을 기반으로 홈페이지에서 분석을 시작하고 어떤 동적 데이터가 순서대로 필요한지 분석합니다. 해당 데이터 테이블을 구축합니다. ㅋㅋㅋㅋㅋ in-ure in , 카테고리 관리 , 블로그 게시물 관리 , 댓글 관리
관리자, 일반 사용자
메뉴 관리: 권한이 다른 사람은 해당 메뉴 바가 다릅니다
테이블 도구는 임의로 선택할 수 있습니다. 초기 단계에서는 테이블 생성 문을 수동으로 작성하고, 익숙해지면 바로 도구를 사용합니다. 이 프로젝트에서는 Navicat을 사용하여 데이터베이스와 테이블을 생성합니다
데이터베이스, 테이블1) 데이터베이스 생성: php_blog
create database php_blog charset utf8
2) 사용자 테이블: y_users CREATE TABLE `y_user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户主键',
`username` varchar(20) NOT NULL COMMENT '用户名',
`password` char(32) NOT NULL COMMENT '密码',
`email` varchar(50) NOT NULL DEFAULT '' COMMENT '注册邮箱',
`token_email` varchar(32) NOT NULL DEFAULT '' COMMENT '邮箱验证',
`status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '状态, 0-正常,1-禁用',
`gid` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '角色id,1-管理员,2-普通用户,0-无效',
`login_ip` varchar(20) NOT NULL DEFAULT '' COMMENT '最后登录的ip地址',
`login_times` smallint(6) unsigned NOT NULL DEFAULT '0' COMMENT '登录次数',
`created_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '注册时间',
`updated_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最后一次登录时间', PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`), UNIQUE KEY `email` (`email`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='用户表';
사용자 테이블 SQL
3) 역할 테이블 : y_ user_group
CREATE TABLE `y_user_group` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '角色id', `name` varchar(20) NOT NULL DEFAULT '' COMMENT '角色名称', `auths` varchar(255) NOT NULL DEFAULT '' COMMENT '角色权限', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
문자 테이블 SQL
4) 메뉴 테이블 : y_menus
CREATE TABLE `y_menus` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '菜单id', `title` varchar(20) DEFAULT '' COMMENT '菜单名称', `controller` varchar(30) DEFAULT '' COMMENT '控制器名称', `action` varchar(30) DEFAULT '' COMMENT '操作名称', `status` tinyint(1) unsigned DEFAULT '1' COMMENT '状态,1-正常,0-禁用', `is_hidden` tinyint(1) unsigned DEFAULT '0' COMMENT '是否隐藏,0-正常显示,1-隐藏', `sort` int(10) unsigned DEFAULT '0' COMMENT '排序', `pid` int(10) unsigned DEFAULT '0' COMMENT '上一级菜单', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COMMENT='菜单表';
메뉴 테이블 SQL
5) 기사 테이블 y_article
CREATE TABLE `y_article` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '文章id', `title` varchar(60) NOT NULL DEFAULT '' COMMENT '标题', `description` varchar(200) NOT NULL DEFAULT '' COMMENT '文章简介', `content` text NOT NULL COMMENT '内容', `cid` int(10) unsigned NOT NULL COMMENT '文章类别', `pic` varchar(150) NOT NULL DEFAULT '' COMMENT '文章封面图', `pic_watermark` varchar(150) NOT NULL DEFAULT '' COMMENT '水印图', `pic_thumb` varchar(150) NOT NULL DEFAULT '' COMMENT '缩略图', `uid` int(10) unsigned NOT NULL COMMENT '作者', `clicks` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '阅读数(点击数)', `updated_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间', `created_at` int(11) NOT NULL DEFAULT '0' COMMENT '发布时间', PRIMARY KEY (`id`), KEY `title` (`title`), KEY `uid` (`uid`), KEY `clicks` (`clicks`), KEY `cid` (`cid`) USING BTREE ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='文章表';
기사 테이블 SQL
6) 기사 카테고리 테이블 y_category
CREATE TABLE `y_category` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '分类id', `catename` varchar(15) NOT NULL COMMENT '分类名', `description` varchar(255) NOT NULL DEFAULT '' COMMENT '简介', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='文章类别表';
글 카테고리 테이블 SQL
7) 댓글(답글) 테이블 y_comment
CREATE TABLE `y_comment` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '评论id', `uid` int(10) unsigned NOT NULL COMMENT '评论者', `created_at` int(11) DEFAULT NULL COMMENT '评论时间', `content` varchar(255) NOT NULL DEFAULT '' COMMENT '评论内容', `aid` int(10) unsigned NOT NULL COMMENT '被评论的文章', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='评论(回复)表';
댓글(답글) 테이블 SQL
8) 세션 데이터 테이블 y_session (실제로는 필요하지 않습니다. 목적은 "데이터베이스에 세션 쓰기" 작업 " )
CREATE TABLE `y_session` ( `sess_id` varchar(50) NOT NULL DEFAULT '' COMMENT 'session id', `data` text NOT NULL COMMENT 'session数据', `created_at` int(11) NOT NULL COMMENT 'session创建时间', PRIMARY KEY (`sess_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='session数据表';
세션 데이터 테이블 SQL
너무 복잡해지지 않도록 이러한 데이터 테이블을 일시적으로 생성하며 필드는 나중에 조정할 수 있습니다. 모듈 기능을 추가해야 하는 경우 그에 따라 해당 데이터 테이블을 추가할 수 있습니다.
데이터베이스 연결
badeModel [Frame/BaseModel.class.php]에서 데이터 연결의 배열 정보 수정 (구성 파일 클래스를 사용하는 경우 여기에서 생략 가능)
1 class BaseModel { 2 。。。 3 。。。 4 。。。 5 function __construct(array $config=null) 6 { 7 $conf = array( 8 'host'=>'localhost', 9 'user'=>'root', 10 'pwd'=>'root', 11 'port'=>'3306', 12 'charset'=>'utf8', 13 'dbname'=>'php_blog', 14 ); 15 $conf = empty($config)? $conf : array_merge($conf,$config); 16 $this->db = Db::getDb($conf); 17 } 18 }
设置连接数据库信息
配置文件类
需求分析:
为了框架便于数据库连接以及方便读取配置文件。如 希望在 App/Common/config.php 做一些配置项,要求能读取这些配置并应用到项目
思路:
step 1: 创建文件 App/Common/config.php 并将数据库连接信息写入该配置文件 step 2: 在Frame/目录下创建读取配置文件类 Config.class.php step 3: 设置自动加载 读取配置类 step 4: 基础模型类实例化 读取配置类。 操作数据库必须要经过基础模型类 step 5: 调整数据库工具类获取配置信息,既 其构造方法中通过传递进来的数据配置信息对象获取 step 6: 测试连接数据结果,验证获取配置
实现连接数据库-读取数据库配置信息思路
代码实现
1) 创建配置文件config.php 【App/Common/Config.php】
<?php/** * 配置文件 * User: young */return [ //数据库连接配置 'host'=>'localhost', 'user'=>'root', 'pwd'=>'root', 'port'=>'3306', 'charset'=>'utf8', 'dbname'=>'php_blog',];
配置文件-数据库配置信息
2) 创建读取配置文件类 【Frame/Config.class.php】
1 <?php 2 /** 3 * 配置文件读取类 4 * User: young 5 */ 6 7 class Config 8 { 9 protected static $ins = null; //本类实例 10 protected $cfg = array(); //存储配置项 11 12 /** 13 * 获取本类实例 14 * @access public 15 * @return object 本类的单例对象 16 */ 17 public static function getIns() { 18 if(false === (self::$ins instanceof self)){ 19 self::$ins = new self(); 20 } 21 return self::$ins; 22 } 23 24 /** 25 * 构造方法: 读取配置项 26 * @access public 27 * @return void 28 */ 29 final protected function __construct() { 30 require APP.'Common'.DS.'config.php'; //读取配置项 31 $this->cfg = $cfg; 32 } 33 34 /** 35 * 根据指定的配置项,返回该配置项的值 36 * @param string $k 配置项 37 * @return mixed|null 返回配置项的数据 38 */ 39 public function __get($k) { 40 if(!isset($this->cfg[$k])) { 41 return null; 42 } 43 return $this->cfg[$k]; 44 } 45 46 47 /** 48 * 根据指定的配置项,返回配置项的值 49 * @param string $k 配置项名称 50 * @param string $v 配置项对应的值 51 */ 52 public function __set($k,$v) { 53 $this->cfg[$k] = $v; 54 } 55 }
3) 自动加载配置类
需要自动加载该类, 该类在Frame目录下, 所以可以写入到 Init.class.php 类中的属性数组中 【Frame/Init.class.php】
<?php /** * 初始化应用类 * User: young */ class Init { protected static $frame = array('BaseController','BaseModel','Db','FactoryModel','Config'); 。。。 。。。 。。。 自动加载配置类
4)基础模型类实例化配置类【Frame/BaseModel.class.php】
<?php /** * BaseModel.class.php 基础模型类 * 连接数据库 * @author young */ class BaseModel { protected $db = null; /** * 构造方法: 实例化数据库类 * @access public */ function __construct() { $conf = Config::getIns(); //读取配置项实例 $this->db = Db::getDb($conf); } }
5)数据库读取配置项信息 【Frame/Db.class.php】
<?php /** * Db.class.php 数据库操作工具类 * @author young */ class Db { 。。。 。。。 。。。 /** * 构造方法: 保存数据库连接信息,连接数据库 * @access private * @param array $conf 数据库连接信息 */ private function __construct($conf) { $this->host = $conf->host; $this->user = $conf->user; $this->pwd = $conf->pwd; $this->port = $conf->port; $this->charset = $conf->charset; $this->dbname = $conf->dbname; $this->connect(); } 。。。 。。。 。。。 } 数据库工具类获取配置信息
6) 测试 在App/Controller/Home/DemoController.class.php 用于测试数据库连接情况
<?php /** * 测试控制器类 * User: young */ class DemoController extends BaseController { public function test() { $db = new BaseModel(); $data = $db->db->getAllRows("select * from y_user"); var_dump($data); } }
测试控制器类测试连接数据库
注: 前提,需要将BaseModel.class.php中的$db属性先临时修改为public公开,才能测试成功 (原因:在Demo控制器中实例化的基础模型类,数据库操作实例是放在类的属性db中,外部不能访问protected属性), 本节所有测试,可以临时将db设置为公开的。
还可以使用配置如: 上传目录,网站配置信息等,根据需求自定义配置需求,再通过读取配置类读取配置的数据
提交代码
git add -A git commit -m "完成读取配置文件类"
错误日志记录
除了开发阶段调试错误, 项目上线一般会将错误信息写入指定文件中。安全性更好。
需求分析:
将错误写入日志文件中,这里暂时主要记录数据库操作的错误。 如:默认将错误记录在App/log/logError.txt。 如果在配置文件中进行了配置,则将日志信息写入到配置项log指定的目录中
思路:
step 1: 制作日志类Frame/Log.class.php, 用于将错误信息写入到指定文件中。 (设置日志文件位置,正好可以利用上面写的配置项,通过读取配置来实现) step 2: 在基础模型类BaseModel中,读取配置项后, 可以将日志目录路径写入常量。 使用try..catch 捕捉异常,将错误写入日志 step 3: 实现日志类自动加载。Log类在Frame目录中,所以只要在初始化应用类Init中的属性$frame数组中加入 “Log” step 4: 记录错误。 数据库连接可能失败, sql语句可能执行失败 step 5: 测试错误日志记录功
实现错误日志记录过程思路
代码实现
1) 制作错误日志类 【Frame/Log.class.php】
<?php /** * Db.class.php 数据库操作工具类 * @author young */ class Db { 。。。 。。。 。。。 /** * 构造方法: 保存数据库连接信息,连接数据库 * @access private * @param array $conf 数据库连接信息 */ private function __construct($conf) { $this->host = $conf->host; $this->user = $conf->user; $this->pwd = $conf->pwd; $this->port = $conf->port; $this->charset = $conf->charset; $this->dbname = $conf->dbname; $this->connect(); } 。。。 。。。 。。。 } 数据库工具类获取配置信息
2) 读取日志位置,捕捉错误 【Frame/BaseModel.class.php】
发生错误记录后,这里只是简单使用exit(..)退出, 可以自定error错误页面会更好
<?php /** * BaseModel.class.php 基础模型类 * 连接数据库,捕捉记录错误 * @author young */ class BaseModel { Public $db = null; /** * 构造方法: 实例化数据库类 * @access public */ function __construct() { $conf = Config::getIns(); //读取配置项实例 //读取日志配置项目 并写成常量 $logPath = $conf->log; $logPath = !isset($logPath) ? APP."log".DS : $logPath; define('LOG',$logPath); //监控数据库操作 try { $this->db = Db::getDb($conf); }catch(Exception $e) { $err = ''; $err .= '错误代码:' . $e->getCode() . "\r\n"; $err .= '错误信息:' . $e->getMessage() . "\r\n"; $err .= '文件:' . $e->getFile() . "\r\n"; $err .= '行号:' . $e->getLine() . "\r\n\r\n"; Log::write($err); exit("<h2 id="客官-页面暂时无法响应-请稍后访问">客官!页面暂时无法响应,请稍后访问</h2>"); } } } 点击查看【基础模型类中监测并记录错误】
3)自动加载日志记录类 【Frame/Init.class.php】
<?php /** * 初始化应用类 * User: young */ class Init { protected static $frame = array('BaseController','BaseModel','Db','FactoryModel','Config','Log'); 。。。 。。。 。。。 点击查看【自动加载日志类】
4) 记录错误 【Frame/Db.class.php】
数据库连接可能发生错误处理
class Db { 。。。 。。。 。。。 /** * 连接数据库,设置编码,选库 * @access private */ private function connect() { $this->link = @ mysql_connect("{$this->host}:{$this->port}", "$this->user", "$this->pwd") ; if(!$this -> link) { $error = new Exception("数据库连接不上",10000); throw $error; } $this->setCharset($this->charset); $this->useDb($this->dbname); } 。。。 。。。 。。。 点击查看【数据库连接错误抛出】
sql语句发生错误处理
class Db { 。。。 。。。 。。。 /** * 执行sql语句 * @param string $sql sql语句 * @return mixed */ private function query($sql) { $result = mysql_query($sql, $this->link); // if(false === $result) { // echo "<p>sql执行失败!<br>"; // echo "<br>失败语句:".$sql; // echo "<br>错误代号".mysql_errno(); // echo "<br>错误提示: ".mysql_error()."</p>"; // exit(); // } if(false === $result) { $err = "sql执行失败!\r\n失败语句:".$sql."\r\n错误代号:".mysql_errno()."\r\n错误提示:".mysql_error()."\r\n\r\n"; Log::write($err); exit("<h2 id="查询出错-请稍后访问">查询出错,请稍后访问</h2>"); } return $result; } 。。。 。。。 。。。 点击查看【执行SQL错误处理】
测试
可以在【App/Common/config.php】中配置日志文件目录。 如果不进行配置, 默认记录在App/log/目录中
<?php /** * 配置文件 * User: young */ return [ //数据库连接配置 。。。 、 。。。 。。。 //日志文件位置配置 'log' => APP, ]; 点击查看【日志文件配置】
以下测试可以 开启配置项中的配置log 和关闭后分别测试。 注意: 如果没有做配置log, 则要首先在App目录下建立一个log目录
1. 在配置文件中故意写错数据库连接信息,如密码写错
2. 执行sql错误
最后说明: 配置目录,日志目录都是不希望浏览器直接访问的,所以需要将.htaccess文件放入目录中 (由于App目录中已经存在,故也可以省略)
提交传送代码
git add -A git commit -m "完成日志类"git checkout master git merge start-admin-module git push origin master
小结: 本篇主要实现了 框架清理,博客数据库表搭建,创建配置读取类,日志记录类。
实际上,到此仍然只是更加完善了一下框架结构,增加了2个功能。正如前篇所提,还有很多是可以改进的。这里就暂时不再继续增加功能了。
提出问题:
1. 如何使用该自制框架搭建项目 ==> 用户操作+mvc实现
2. 如何着手使用ajax实现后台登录功能 ==> ajax应用
3. 분류 모듈 기능 구현 방법, 어떤 동작을 하는지 ==> 추가, 삭제, 수정 및 확인
다음 단계: 백엔드 템플릿 보기 제작, 백엔드 로그인, 기사 분류 모듈 기능.
위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!
관련 권장 사항:
MVC 구조 마이크로 프레임워크를 구현하기 위한 PHP 소스 코드
위 내용은 PHP 소스코드 데이터베이스 구축 테이블 구성 파일 오류 로그 방식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

phpsession 실패 이유에는 구성 오류, 쿠키 문제 및 세션 만료가 포함됩니다. 1. 구성 오류 : 올바른 세션을 확인하고 설정합니다. 2. 쿠키 문제 : 쿠키가 올바르게 설정되어 있는지 확인하십시오. 3. 세션 만료 : 세션 시간을 연장하기 위해 세션을 조정합니다 .GC_MAXLIFETIME 값을 조정하십시오.

PHP에서 세션 문제를 디버그하는 방법 : 1. 세션이 올바르게 시작되었는지 확인하십시오. 2. 세션 ID의 전달을 확인하십시오. 3. 세션 데이터의 저장 및 읽기를 확인하십시오. 4. 서버 구성을 확인하십시오. 세션 ID 및 데이터를 출력, 세션 파일 컨텐츠보기 등을 통해 세션 관련 문제를 효과적으로 진단하고 해결할 수 있습니다.

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

SESSION.GC_MAXLIFETIME 및 SESSION.COOKIE_LIFETIME을 설정하여 PHP에서 세션 수명을 구성 할 수 있습니다. 1) SESSION.GC_MAXLIFETIME 서버 측 세션 데이터의 생존 시간을 제어합니다. 2) 세션 .Cookie_Lifetime 클라이언트 쿠키의 수명주기를 제어합니다. 0으로 설정하면 브라우저가 닫히면 쿠키가 만료됩니다.

데이터베이스 스토리지 세션 사용의 주요 장점에는 지속성, 확장 성 및 보안이 포함됩니다. 1. 지속성 : 서버가 다시 시작 되더라도 세션 데이터는 변경되지 않아도됩니다. 2. 확장 성 : 분산 시스템에 적용하여 세션 데이터가 여러 서버간에 동기화되도록합니다. 3. 보안 : 데이터베이스는 민감한 정보를 보호하기 위해 암호화 된 스토리지를 제공합니다.

SessionHandlerInterface 인터페이스를 구현하여 PHP에서 사용자 정의 세션 처리 구현을 수행 할 수 있습니다. 특정 단계에는 다음이 포함됩니다. 1) CustomsessionHandler와 같은 SessionHandlerInterface를 구현하는 클래스 만들기; 2) 인터페이스의 방법 (예 : Open, Close, Read, Write, Despare, GC)의 수명주기 및 세션 데이터의 저장 방법을 정의하기 위해 방법을 다시 작성합니다. 3) PHP 스크립트에 사용자 정의 세션 프로세서를 등록하고 세션을 시작하십시오. 이를 통해 MySQL 및 Redis와 같은 미디어에 데이터를 저장하여 성능, 보안 및 확장 성을 향상시킬 수 있습니다.

SessionId는 웹 애플리케이션에 사용되는 메커니즘으로 사용자 세션 상태를 추적합니다. 1. 사용자와 서버 간의 여러 상호 작용 중에 사용자의 신원 정보를 유지하는 데 사용되는 무작위로 생성 된 문자열입니다. 2. 서버는 쿠키 또는 URL 매개 변수를 통해 클라이언트로 생성하여 보낸다. 3. 생성은 일반적으로 임의의 알고리즘을 사용하여 독창성과 예측 불가능 성을 보장합니다. 4. 실제 개발에서 Redis와 같은 메모리 내 데이터베이스를 사용하여 세션 데이터를 저장하여 성능 및 보안을 향상시킬 수 있습니다.

JWT 또는 쿠키를 사용하여 API와 같은 무국적 환경에서 세션을 관리 할 수 있습니다. 1. JWT는 무국적자 및 확장 성에 적합하지만 빅 데이터와 관련하여 크기가 크다. 2. 쿠키는보다 전통적이고 구현하기 쉽지만 보안을 보장하기 위해주의해서 구성해야합니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

Dreamweaver Mac版
시각적 웹 개발 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

드림위버 CS6
시각적 웹 개발 도구
