1.php会话机制
1.1 cookie——客户端所保存的缓存信息
客户端所保存的缓存信息
1.向客户端电脑设置cookie
setcookie('NAME','孙胜利',time()+3600)
2.再服务器端上读取cookie内容
$_COOKIE
3.将多维数组应用于cookie中
setcookie["member[NAME]",'孙胜利',time()+3600]
setcookie["member[EMAIL]",'223344556@qq.com',time()+3600]
4.删除cookie
setcookie("member",time()-1)
操作
1.新建setcookie.php
<?php
//一维数组
setcookie('NAME','孙胜利',time()+3600);
setcookie('EMAIL','29773366@qq.com',time()+3600);
//多维数组
setcookie('member[NAME]','LILY',time()+3600);
setcookie('member[EMAIL]','223344556@qq.com',time()+3600);
?>
~~~~~~~~~~~~~~神奇操作—产生一个随机id~~~~~~~~~~~~~~~~~~~~~~
<?php
$id=uniqid(rand(1000,9999).'_');
setcookie('id',$id,time()+3600);
?>
2.新建获取cookie的文件test.php
<?php
var_dump($_COOKIE);
?>
3.先点击setcookie.php,再点击teat.php登入网页
4.删除cookie
<?php
foreach($_COOKIE['member'] as $key=>$value){
setcookie('member[{$key}]','',time()-3600);
}
//或者
//setcookie('member[NAME]','',time()-3600);
//setcookie('member[EMAIL]','',time()-3600);
?>
1.2 session——服务器端保存的缓存信息
session_start()
1)开启一个会话
2)返回已经存在的会话
$_SESSION[NAME]='LILY'
//存储SESSION的值
session_start();
var_dump($_SESSION);
//查看cookie的值
setcookie.php
test.php
最后点击test.php
——————session的信息存放在————————
XAMPP的tmp临时文件中,打开可以看到和源session一致
—存储文件的配置信息可以从xampp的php.ini文件中看—
——销毁session信息——
1.3 基于cookie与session的登录模块
—————————— 简易版本 ———————————
login.php界面
<?php
if(isset($_POST['submit'])){
//查看是否输入用户名,密码,并且是否用户名密码输入正确
if(isset($_POST['username'])&&isset($_POST['password'])&& $_POST['username']==='ton'&& $_POST['password']==='123'){
if(setcookie('username',$_POST['username'],time()+3600)){
header('location:index.php'); //header可以实现跳转页面,跳转到index.php界面
}
else{
echo '登录失败!';
}
}
else{
echo '对不起,登录失败!';
}
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8"/>
<title>请登录</title>
</head>
<body>
//表单,输入用户名,密码
<form method="post" action="login.php">
姓名:<input type="text" name="username" />
密码:<input type="password" name="password" />
<input type="submit" name="submit" value="登录" />
</form>
</body>
</html>
index.php
<?php
//如果cookie存在,并且与条件符合,进行下一步
if(isset($_COOKIE['username'])&& $_COOKIE['username']==='ton'){
echo "亲爱的 {$_COOKIE['username']} 您好,欢迎回来!";
}
else{
//<a> 标签定义超链接,用于从一张页面链接到另一张页面
//<a> 元素最重要的属性是 href 属性,它指示链接的目标
echo "<a href='login.php'> 请登录</a>" ;
}
?>
显示页面
1.4 加一个跳转页面
<?php
if(!isset($_GET['url'])|| !isset($_GET['info'])){
exit();
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8"/>
// 每个3秒钟刷新一次页面,并且跳转到输入的新界面
<meta http-equiv="refresh" content="3;URL=<?php echo $_GET['url']?>"/>
<title>正在跳转中.....</title>
</head>
<body>
<div style="text-align:center;font-size:20px;"><?php echo $_GET['info']?>,3秒后自动跳转</div>
</body>
</html>
输入:
会产生跳转页面3秒钟…,之后跳转到百度
其他页面修改
login.php
<?php
if(isset($_POST['submit'])){
//查看是否输入用户名,密码,并且是否用户名密码输入正确
if(isset($_POST['username'])&&isset($_POST['password'])&& $_POST['username']==='ton'&& $_POST['password']==='123'){
if(setcookie('username',$_POST['username'],time()+3600)){
header('Location:skip.php?url=index.php&info=登陆成功!'); //header可以实现跳转页面,跳转到index.php界面
}
else{
echo '登录失败!';
}
}
else{
header('Location:skip.php?url=index.php&info=对不起,登录失败!');
}
}
?>
index.php
<?php
//如果cookie存在,并且与条件符合,进行下一步
if(isset($_COOKIE['username'])&& $_COOKIE['username']==='ton'){
echo "亲爱的 {$_COOKIE['username']} 您好,欢迎回来!";
}
//如果网站没有缓存cookie,就让用户先登录
else{
//<a> 标签定义超链接,用于从一张页面链接到另一张页面
//<a> 元素最重要的属性是 href 属性,它指示链接的目标
echo "<a href='login.php'> 请登录</a>" ;
}
?>
1.5 加一个logout页面
logout.php
<?php
if(isset($_POST['username'])&&isset($_POST['password'])&& $_POST['username']==='ton'&& $_POST['password']==='123'){
if(setcookie('username',$_POST['username'],time()-3600)){
header('Location:skip.php?url=index.php&info=注销成功,正在跳转!'); //header可以实现跳转页面,跳转到index.php界面
}
else{
header('Location:skip.php?url=index.php&info=注销失败,请稍后重试!');
}
?>
2、php开发系统——实战
1)需求分析
浏览者。。。
注册用户。。。
版主能够删除帖子
管理员具有操纵后台的权限
2)开发步骤
a.前台与后台的界面
b.后台-父板块
c.后台-子版块
d.前台-用户注册
e.前台-用户发帖
f.前台-帖子列表
g.前台-帖子内容
h.前台-帖子回复
i.前台-首页
j.前台-用户中心
等等。。。。
- 数据库表
a. ton_father_module 父板块表
字段:id、module_name、sort
b. ton_son_module 父板块表
字段:id、father_module_id、module_name、info、member_name、sort
c.ton_member
字段:id、name、pw、photo、register_name、last_name
d.ton_content
字段:id、module_id、title、content、time、member_id、times
e.ton_reply
字段:id、content_id、quote_id、content、time、member_id
f.ton_manager
字段:id、name、pw
- 编写数据库操作函数库
//数据库连接
//执行一条SQL语句,返回结果集对象或者返回布尔值
//执行一条SQL语句,只会返回布尔值
//一次性执行多条SQL语句
//获取记录数
//关闭与数据库的连接
5)程序目录文件结构
/admin 存放后台文件
/inc 存放被包含的文件
- 后台-父板块 模块
a、展示父板块
就是将数据库中ton_father_module表中的数据使用select语句查询出来,并且显示到页面上
b、删除父板块
c、添加父板块
d、修改父板块
7)展示子版块
a、添加子版块
3、遇到的问题
3.1 XAMPP连接数据库的问题
1)修改数据库root权限密码
找到config.inc.php(***…/XAMPP/phpmyadmin/config.inc.php***)文件,然后修改里面的密码
3.2 id传参一直报错You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘’ at line 1
我想要进行的是通过点击编辑,修改用户信息,要做的几步:
1)查询信息——通过id访问到后台数据库,再进行下一步
2)修改信息
然后之前找了半天错误都没找到,最后发现html代码部分跳转页面没加id信息。
3.3 Duplicate entry ‘0’ for key ‘PRIMARY’
AI:Auto-increment,数据库中键值的自动增长,一般默认为零,不变化的话就会一直是零,因此添加新数据的时候就会报错