1.SESSION 登录实战
cookie.php
文件
<?php
//设置cookie(参数,值)
setcookie('loginkey',123456);
//设置过期时间档期时间+10秒
setcookie('loginkey1',987654,time()+10);
echo '输出输出'.$_COOKIE['loginkey'];
echo '<hr>';
echo '输出输出'.$_COOKIE['loginkey1'];
echo '<hr>';
//更新
if (!empty($_COOKIE['loginkey'])){
echo '输出'.$_COOKIE['loginkey'];
$_COOKIE['loginkey'] = 666666;
}
echo '<hr>';
echo '输出_输出'.$_COOKIE['loginkey'];
//删除
setcookie('loginkey','',time()-3600);
echo '<hr>';
echo '输出_输出__'.$_COOKIE['loginkey'];
session.php
文件
<?php
//启动session
session_start();
echo session_save_path();
echo '<hr>';
//设置
$_SESSION['loginkey'] = 123456;
//读取
echo 'eeee='.$_SESSION['loginkey'];
echo '<hr>';
session_unset();
echo 'eeee='.$_SESSION['loginkey'];
echo '<hr>';
connect.php
文件
<?php
$db = [
'type' => 'mysql',
'host' => 'localhost',
'dbname' => 'jason',
'port' => '3306',
'username' => 'root',
'password' => 'root'
];
//配置dsn
$dsn = "{$db['type']}:host={$db['host']};dbname={$db['dbname']}";
try{
$pdo = new PDO($dsn,$db['username'],$db['password']);
} catch (PDOException $exception){
echo '数据库连接方式1错误。。'.$exception->getMessage();
}
index.php
首页文件
<?php
require_once __DIR__.'/session.php';
if (!empty($_SESSION['userName'])){
echo '欢迎'.$_SESSION['userName'].'登录';
echo '<br>';
echo '<a href="dispatch.php?action=logout">退出登录</a>';
}else{
echo '<a href="dispatch.php?action=login">请登录</a>';
}
dispatch.php
派发器文件
<?php
//获取用户传参
$action = !empty($_GET['action']) ? $_GET['action'] : 'login';
//函数把字符转换为 HTML 实体
$action = htmlentities(strtolower($action));
switch ($action){
case 'login':
include __DIR__.'/login.php';
break;
case 'check':
include __DIR__.'/check.php';
break;
case 'logout':
include __DIR__.'/logout.php';
break;
default:
include __DIR__.'/index.php';
break;
}
login.php
登录文件
<?php
require_once __DIR__.'/session.php';
//判断是否重复登录
if (!empty($_COOKIE['userName'])){
echo '请勿重复登录';
return;
}
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户登录</title>
</head>
<body>
<h3>用户登录</h3>
<form action="dispatch.php?action=check" method="post" onsubmit="return isEmpty();">
<p>
<label for="phone">手机号:</label>
<input type="phone" name="phone" id="phone">
</p>
<p>
<label for="password">密码:</label>
<input type="password" name="password" id="password">
</p>
<p>
<button>提交</button>
</p>
</form>
<script>
function isEmpty() {
var phone = document.getElementById('phone').value;
var password = document.getElementById('password').value;
if (phone.length=== 0 || password.length===0) {
alert('手机和密码不能为空');
return false;
}
}
</script>
</body>
</html>
check.php
校验文件
<?php
require_once __DIR__.'/connect.php';
require_once __DIR__.'/session.php';
$phone = empty($_POST['phone']) ? "" :$_POST['phone'];
$sql = 'SELECT *FROM `account` WHERE `phone`=:phone';
$stmt = $pdo->prepare($sql);
$stmt->bindParam('phone',$phone,PDO::PARAM_STR);
try{
if ($stmt->execute()){
$userArr = $stmt->fetchAll();
if (empty($userArr[0])){
echo '用户不存在';
}else{
$dbPwd = $userArr[0]['password'];
$userPwd = md5($_POST['password']);
if ($dbPwd == $userPwd){
//验证成功
session_start();
$_SESSION['userName'] = $phone;
echo '<a href="index.php">登录成功,返回首页</a>';
}else{
echo '<a href="login.php">您输入的密码不正确,返回重新登录</a>';
}
}
}else{
echo '数据库查询失败';
}
}catch (PDOException $exception){
echo '数据库连接失败='.$exception->getMessage();
}
logout.php
退出登录文件
<?php
require_once __DIR__.'/session.php';
session_unset();
echo '<a href="index.php">退出登录成功,返回</a>';
运行效果gif动图
手抄代码
练熟pdo操作,查(手写)
bindColumn
将结果集某字段绑定到指定变量上
<?php
require_once __DIR__.'/connect.php';
echo '<hr>';
//sql语句
$sql = 'SELECT *FROM `account` WHERE `user_id`=:user_id';
//预处理
$stmt = $pdo1->prepare($sql);
$user_id = 3;
//绑定参数
$stmt->bindParam('user_id',$user_id,PDO::PARAM_INT);
//执行查询操作
try{
if ($stmt->execute()){
//将值绑定给变量(结果集中的变量,赋值的变量)
$stmt->bindColumn('username',$username);
$stmt->bindColumn('department_list',$department_list);
while ($stmt->fetch(PDO::FETCH_ASSOC)) {
echo '名字='.$username .'-----' .'公司='.$department_list;
echo '<hr>';
}
}else{
echo '执行查询操作失败,error='.$stmt->errorCode();
}
}catch (PDOException $exception){
echo '数据库操作异常'.$exception->getMessage();
}
//销毁数据库连接
$pdo1 = null;
print_r("销毁".$pdo1);
echo '<hr>';
$sql1 = 'UPDATE FROM `account` SET `username`:user1 WHERE `user_id`:uid';
echo $sql;