实例
先登录
<?php session_start(); if(isset($_SESSION['username']) && $_SESSION['username']==='admin'){ echo '<script>alert("已经登录请勿重新登录");location.assign("admin.php");</script>'; } ?> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>用户登录</title> </head> <body> <h3>用户登录</h3> <form action="check.php" method="post" onsubmit="return isEmpty()"> <p> <label for="email">邮箱</label> <input type="email" name="email" id="email"> </p> <p> <label for="password">密码</label> <input type="password" name="password" id="password"> </p> <button>提交</button> </form> <script> function isEmpty() { var email= document.getElementById('email').value; var password = document.getElementById('password').value; if (email.length===0 || password.length===0){ alert('邮箱不能为空'); return false; } } </script> </body> </html>
运行实例 »
点击 "运行实例" 按钮查看在线实例
再验证
实例
<?php session_start(); //防止重复登录检查 if(isset($_SESSION['username']) && $_SESSION['username']==='admin'){ echo '<script>alert("已经登录请勿重新登录");location.href="admin.php";</script>'; die; } // 连接数据库 require __DIR__ .'/connect.php'; //print_r ('<pre>'); //print_r($_POST); $email = htmlentities(trim($_POST['email'])); //htmlentities()进行转移 trim()过滤空格 $password = sha1($_POST['password']); // 到用户表user中进行验证 $sql = 'SELECT * FROM `user` WHERE `email` = :email AND `password` = :password LIMIT 1'; $stmt = $pdo->prepare($sql); //条理写法 $stmt->bindParam( 'email', $email, PDO::PARAM_STR); $stmt->bindParam( 'password', $password, PDO::PARAM_STR ); $stmt->execute(); //简约写法: //$stmt->execute(['email'=>$email,'password'=>$password]); // fetch(): 成功返回数组,失败返回false $user = $stmt->fetch(PDO::FETCH_ASSOC); if(false==$user){ // 登录失败 echo ' <script>alert("登录失败请检查");history.back();</script>'; die;// 终止当前脚本 } // 登录成功,将用户信息写入cookie //setcookie('username',$user['username']); $_SESSION['username'] = $user['username']; echo '<script>alert("登录成功");location.assign("admin.php");</script>'; //这里的assign()和location.href()意思一样就是写法不同
运行实例 »
点击 "运行实例" 按钮查看在线实例
通过后进入后台
实例
<?php //判断用户是否已经登录 session_start(); if(isset($_SESSION['username']) && $_SESSION['username']==='admin'): //这里 “ :”是三目运算符 表达式1?表达式2:表达式3 如果表达式1成了,结果为表达式2否则为表达式3 // 实际也可以也可以这样理解 ":"等于 "{}" //其实也就是<?php else { ?> <!--if(false) :--> <!--echo 'if';--> <!--else :--> <!--echo 'else';--> <!--endif;--> <!--等价于:--> <!--if(false){--> <!--echo 'if';--> <!--}else {--> <!--echo 'else';--> <!--}--> <!--html 和php混用的时候,需要再其中插入php时,就需要--><?php //?><!--包着。如:--> <!--<body>--> <?php //if(true){ ?> <!--<div>if</div>--> <?php //}else { ?> <!--<div>else</div>--> <?php //} ?> ?> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>会员中心</title> </head> <body> <h2>网站后台</h2> <p>欢迎: <?php echo $_SESSION['username']?> </p> <p> <a href="logout.php">退出</a> </p> </body> </html> <?php else :?> echo '<script>alert("请先登录");location.href="login.php";</script>'; <?php endif;?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
退出
实例
<?php // 必须已经登录才允许进行退出操作 session_start(); if(isset($_SESSION['username']) && $_SESSION['username']==='admin'){ // setcookie('username', null , time()-3600); session_destroy(); echo '<script>alert("退出成功");location.href="login.php";</script>'; }
运行实例 »
点击 "运行实例" 按钮查看在线实例