博客列表 >简单的电影网站与会话机制--2019年6月6日22:30分

简单的电影网站与会话机制--2019年6月6日22:30分

白守的博客
白守的博客原创
2019年06月16日 14:51:21807浏览

本文章涉及的知识点有

1.GET参数获取和使用

2.foreach,基本使用实例

3.cookie和SESSION的作用与使用实例

4.数据库的SELECT查询

 



一个简单的电影查询功能

实例

# 0418 会话控制

## Lesson1: 数据库管理网站数据

## Lesson2. 会话机制原理与实现

_______________________________________________
<!-- 数据库文件 --> database.php
<?php

return[
    'type' => 'mysql',
    'host' => 'localhost',
    'dbname' => 'php',
    'username' => 'root',
    'password' => 'root',
];

_______________________________________________
<!-- 头部文件 --> tb.php
<?php
// 连接数据库
require 'connect.php';


// 获取网站配置信息
$sql = 'SELECT * FROM `system` LIMIT 1';
$stmt = $pdo->prepare($sql);
$stmt->execute();
$system = $stmt->fetch(PDO::FETCH_ASSOC);


// 获取栏目信息
$sql = 'SELECT * FROM `category`';
$stmt = $pdo->prepare($sql);
$stmt->execute();
$cates = $stmt->fetchAll(PDO::FETCH_ASSOC);
$cate_count = count($cates);


// 获取电影信息
$sql = 'SELECT * FROM `movies`';
$stmt = $pdo->prepare($sql);
$stmt->execute();
$movies = $stmt->fetchAll(PDO::FETCH_ASSOC);


?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="static/css/style.css">
    <meta name="description" content="<?php echo $system['key'] ?>">
    <meta name="keywords" content="<?php echo $system['desc'] ?>">
    <title><?php echo $system['title'] ?></title>
</head>
<body>
 <div class="header">
 <ul class="nav">
 <li><a href="index.php">首页</a></li>
 <?php foreach ($cates as $cate):?>
     <li><a href="list.php?cate_id=<?php echo $cate['cate_id']; ?>">
     <?php echo $cate['alias']; ?></a></li>
<?php endforeach; ?>
 </ul>
 </div>

_______________________________________________
<!-- 首页文件 --> index.php


<?php

include  'inc/tb.php';

foreach ($cates as $cate){
    echo "<h2>{$cate['alias']}</h2>";
    echo '<ol>';
    foreach($movies as $movie){
        if ($cate['cate_id'] === $movie['cate_id']){
            echo "<li><a href='detail.php?mov_id=" .$movie['mov_id']. "'>{$movie['name']}</a></li>";
        }
    }
    echo '</ol>';
}

_______________________________________________
<!-- 电影页面文件 --> detali.php


<?php
// 引入头部
include 'inc/tb.php';

// 使用get获取电影ID

$getid = $_GET['mo_id'];


foreach($movies as $movie){
    if ($movie['mov_id'] === $getid ){
        
        $mo = "<h2>{$movie['name']}</h2>";
        $mo .= "<img src='{$movie['image']}'>";
        $mo.= "<p>{$movie['detail']}</p>";
        echo $mo;

    }
}

_______________________________________________
<!-- 列表页面文件 --> list.php
<?php

include 'inc/tb.php';

// 使用get获取栏目ID
$cate_id = $_GET['cate_id'];


foreach ($cates as $cate){
    if($cate['cate_id'] === $cate_id){
        echo "<h2>{$cate['alias']}";
        echo "<ol>";
        // 遍历对应栏目的电影
        foreach($movies as $movie){
            if($cate['cate_id'] === $movie['cate_id']){
                echo "<br><li><a href='detali.php?mo_id=" .$movie['mov_id']."'>{$movie['name']}</a><span> 电影介绍:{$movie['detail']}</span></li>";
            }
        }
    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例





cookie与SESSION介绍和案例‍

<?php

// 设置

setcookie('username', 'admin');

// 可设置过期时间,默认关闭页面自动消除

// 设置user_id变量,在浏览器中一分钟后失效

setcookie('user_id', 10, time() + 60);


// 读取

// 需要刷新二次,才可以获取到cookie,原因是

// 第一次刷新,是将cookie写入到客户端, 即写操作

// 第二次刷新,是将写入到客户端的cookie数据读出来,即读操作

echo 'username = ', $_COOKIE['username'], '<br>';

echo 'user_id = ', $_COOKIE['user_id'], '<br>';


// 通过application中查看,可知username过期时间是时间戳起止计时的前一秒

// 意思就是关闭浏览器, 就会自动删除


// 如果想在一个cookie变量可存储多个值,可以使用数组语法

// 60*60表示1小时, 60*60*24表示1天

setcookie('user[name]', 'peter', time() + 60 * 60 * 24);

setcookie('user[id]', '20', time() + 60 * 60 * 24);

setcookie('user[email]', 'peter@php.cn', time() + 60 * 60 * 24);


if (isset($_COOKIE['user'])) {

    foreach ($_COOKIE['user'] as $key => $value) {

        echo "{$key} => {$value} <br>";

    }

}


// 更新,直接修改$_COOKIE全局数组对应元素值即可

if ($_COOKIE['user_id']) {

    $_COOKIE['user_id'] = 800;

}

echo 'user_id = ', $_COOKIE['user_id'];


// 删除

// 1. 方法1

unset($_COOKIE['username']);


// 2. 设置一个已经过期的持续时间

setcookie('username', '', time() - 3600);

//setcookie('PHPSESSID','',time()-3600);




// _____________________________________________________________  //


// session 会话


// 开启一个会话(之前不能有输出)

// session_start()自动设置客户端的session_id,或重启启用一个已存在的会话

session_start(); // 刷新页面, 打开application可以查看到PHPSESSID,适用于根路径


// 查看服务器上的sesscion会话存储的路径位置

echo session_save_path();

// 到该路径下可看到一个sess_为前缀,后跟session_id的文件名

// 文件内容为序列化的session变量:username|s:9:"peter zhu";user_id|i:10;

echo '<hr>';


// 设置

$_SESSION['username'] = 'peter zhu';

$_SESSION['user_id'] = 10;


// 读取

echo 'username = ', $_SESSION['username'], '<br>';

echo 'user_id = ', $_SESSION['user_id'], '<br>';


// 清除

//session_unset();  // 会话内容清空,但会话文件'sess_******'仍在

session_destroy();  // 会话内容清空,会话文删除,但客户端的cookie仍在,即会话仍在,还能重启

// 可以session_destroy()后, 再调用setcookie()清除掉客户端的session_id,就完全清除了会话

setcookie('PHPSESSID','',time()-3600,'/');




总结

俩者之间使用方法差别不大,


cookie:读取更快,不需要在服务器读取cookie

SESSION:更安全,会慢一点,因为需要在服务器读取SESSION

>


 


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议