session和cookie完成登入验证\session和cookie的优缺点
实例index
<?php $page_Name='首页'; include 'inc/header.php';//dao导入公共头部 echo '<h1 style="color: green ">首页信息<h1/>'; //判断用户是否已经登录,检测cookie,检测访问网址的文件名称是否为 //$_SERVER['PHP_SELF'] 获取当前网址信息 //basename($_SERVER['PHP_SELF']) 获得当前页面的文件名称 if (isset($_COOKIE['id']) && basename($_SERVER['PHP_SELF'])!='logout.php') { echo '<a href="logout.php">退出</a>'; } else { echo '<a href="login_page.php" style="color: blue">登录</a>'; } include 'inc/footer.php';//导入公共底部
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例login_page
<?php $page_Name='用户登录'; include 'inc/header.php'; //错误 信息显示 if (isset($errors) && !empty($errors)){ $errors_msg='<p style="color: red">'; foreach ($errors as $msg) { $errors_msg.=$msg.'<br>'; }; echo $errors_msg.'</p>'; } ?> <h2>用户登录</h2> <form action="login.php" method="post"> <p> <lable for="user">账号:</lable> <input type="text" name="user" id="user" value="<?php echo isset($_POST['user'])?$_POST['user']:'' ?>" placeholder="用户名或手机号!"> <!-- echo isset($_POST['user'])?$_POST['user']:''--> <!-- //value中加入后,页面刷新和提交出错输入值都不会消失;--> </p> <p> <lable for="password">密码:</lable> <input type="password" name="password" id="password" value="<?php echo isset($_POST['password'])?$_POST['password']:''?>" placeholder="请输入密码!"> </p> <p> <button type="submit" name="submit" id="submit">登录</button> <button type="reset" name="reset" id="reset">重置</button> </p> <a href="index.php">返回首页</a> </form> <?php include 'inc/footer.php'; ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例login
<?php //启动会话 session_start(); $page_Name='用户登录'; //判断当前用户的请求是否POST请求 if ($_SERVER['REQUEST_METHOD']=='POST'){ //判断请求类型是否为POST require 'inc/function.php'; //链接数据库 require 'inc/connect.php'; //验证登录 list($check,$data)=check_login($dbc,$_POST['user'],$_POST['password']); //检测是否验证通过 if ($check){ //设置session $_SESSION['id']=$data['id']; $_SESSION['name']=$data['name']; //跳转 redirect_user('loggedin.php'); } else { $errors=$data; } //关闭数据库 mysqli_close($dbc); } include 'login_page.php';
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例loggedin
<!--<h2>登陆成功!</h2>--> <?php //启动会话 session_start(); //判断用户是否登陆 if (!isset($_SESSION['id'])){ require 'inc/function.php'; redirect_user(); } $page_Name='登陆成功页面'; include 'inc/header.php';//dao导入公共头部 //heredoc echo <<< "WELCOME" <h2 style="color:red">登录成功<h2> <p>欢迎您:亲爱的{$_SESSION['name']}</p> <p><a href="logout.php">退出</a></p> WELCOME; include 'inc/footer.php';//导入公共底部
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例loginout
<?php //启动会话 session_start(); //判断用户是否登陆 if (!isset($_SESSION['id'])){ require 'inc/function.php'; redirect_user(); } else { //退出登录,删除session unset($_SESSION['id']); session_destroy();//删除服务器的信息 setcookie('PHPSESSID','',time()-3600); } $page_Name='登陆成功页面'; include 'inc/header.php';//dao导入公共头部 //heredoc echo <<< "WELCOME" <h2 style="color:red">退出成功<h2> <p><a href="login.php">登录</a></p> WELCOME; include 'inc/footer.php';//导入公共底部
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例function
<?php //公共函数库 //用户登录成功的跳转 function redirect_user($page='index.php') { $url='http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']); //WINDOWS \ //MAC / //如果有,去掉URL右侧的斜线 $url=rtrim($url,'/\\'); //添加上当前脚本名称 $url.='/'.$page; //跳转到指定地址 header('Location:'.$url); exit(); } //用户的验证函数 function check_login($dbc,$user='',$password) { //初始化一个保持错误信息的数组 $errors =[]; //非空验证 if (empty($user)){ $errors[]='用户名不能为空'; } else { $u= mysqli_real_escape_string($dbc,trim($user)); } //密码非空验证 if (empty($password)){ $errors[]='密码不能为空'; } else { $p=mysqli_real_escape_string($dbc,$password); } //到数据表中进行数据验证 if (empty($errors)) { //根据用户和密码进行验证,返回当前用户的id,name $sql="SELECT `id`,`name` FROM `user` WHERE `user`='$u' AND `password`='$p'"; // echo $sql;die(); //执行查询 $res=mysqli_query($dbc,$sql); // var_dump($res); echo '<hr>'; if (mysqli_num_rows($res)) { $row=mysqli_fetch_array($res,MYSQLI_ASSOC); //返回查询结果 return [true,$row]; // print_r($row); } else{ $errors[]='用户和密码不正确,请重新输入'; return [false,$errors]; } } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例connect
<?php $dbc=mysqli_connect('127.0.0.1','root','root','php'); if (mysqli_connect_errno()) { die('连接失败'.mysqli_connect_errno()); }
运行实例 »
点击 "运行实例" 按钮查看在线实例
-----------------------------------------------------------------------------------------------------
实例session index
<?php //启动会话 session_start(); $page_Name='首页'; include 'inc/header.php';//dao导入公共头部 echo '<h1 style="color: green ">首页信息<h1/>'; //判断用户是否已经登录,检测cookie,检测访问网址的文件名称是否为 //$_SERVER['PHP_SELF'] 获取当前网址信息 //basename($_SERVER['PHP_SELF']) 获得当前页面的文件名称 if (isset($_SESSION['id']) && basename($_SERVER['PHP_SELF'])!='logout.php') { echo '<a href="logout.php">退出</a>'; } else { echo '<a href="login_page.php" style="color: blue">登录</a>'; } include 'inc/footer.php';//导入公共底部
运行实例 »
点击 "运行实例" 按钮查看在线实例