PHP学习笔记

本文介绍了PHP的会话机制,包括cookie和session的使用。通过实例展示了如何设置、读取、删除cookie,以及如何利用cookie和session实现登录模块。同时,文章还提及了在实际开发中遇到的XAMPP连接数据库问题、SQL语法错误和数据重复插入问题及其解决方案。此外,还探讨了基于cookie和session的简易登录、注销流程以及添加跳转页面的功能。
摘要由CSDN通过智能技术生成

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.前台-用户中心
等等。。。。

  1. 数据库表

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

  1. 编写数据库操作函数库

//数据库连接
//执行一条SQL语句,返回结果集对象或者返回布尔值
//执行一条SQL语句,只会返回布尔值
//一次性执行多条SQL语句
//获取记录数
//关闭与数据库的连接

5)程序目录文件结构

/admin 存放后台文件
/inc 存放被包含的文件

  1. 后台-父板块 模块

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,数据库中键值的自动增长,一般默认为零,不变化的话就会一直是零,因此添加新数据的时候就会报错

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值