php中利用session验证登录表单

前段时间在做一个中奖的活了,其中就用到中奖之后把数据写入session 然后再由用户进行数据提交验证了,下面我们要介绍的不是那个例子而一个差不多例子了,具体如下。

登录页面是:

  1. <!doctype html>
  2. <html >
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>登陆</title>
  6. </head>
  7. <body>
  8. <form name="login" action="login.php" method="post">
  9. 姓名:<input type=text name="name"><br/>
  10. 密码:<input type=password name="password"><br/>
  11. <!-- <input type="radio" name="limits" value="1">管理员 -->
  12. <!-- <input type="radio" name="limits" value="0">普通用户 -->
  13. <input type="submit" name="submit" value="登录">
  14. </form>
  15. </body>
  16. </html>

存储session的页面:

  1. <?php
  2. header("Content-Type: text/html; charset=utf8");
  3. if( !isset($_POST["submit"]) ){
  4. die("错误执行");
  5. }//检测是否有submit操作
  6. require_once('connect.php');//链接数据库
  7. if ( isset($_POST['name']) && isset($_POST['password']) ){//如果用户名和密码都不为空
  8. $name = $_POST['name'];
  9. $password = $_POST['password'];
  10. $sql = " SELECT id, limits, message FROM user WHERE username = '$name' AND password = '$password' LIMIT 1";
  11. $result = mysqli_query( $con , $sql );//执行sql 用户名和密码
  12. $rows = mysqli_num_rows( $result );//返回用户名密码是否存在
  13. if( $rows != 0 ){
  14. session_start();
  15. while( $rows_other = mysqli_fetch_assoc($result) ){
  16. $_SESSION['id'] = $rows_other['id'];
  17. $_SESSION['name'] = $name;
  18. $_SESSION['limits'] = $rows_other['limits'];
  19. $_SESSION['message'] = $rows_other['message'];
  20. }
  21. header("refresh:0;url=welcome.php");//跳转至welcome.html页面
  22. exit;
  23. }else{
  24. echo "用户名或密码错误";
  25. echo "<script>
  26. alert('用户名或密码错误');
  27. setTimeout(function(){window.location.href='login.html';},1000);
  28. </script>";
  29. }
  30. }else{
  31. echo "表单填写不完整";
  32. //phpfensi.com
  33. echo "<script>
  34. alert('表单填写不完整');
  35. setTimeout(function(){window.location.href='login.html';},1000);
  36. </script>";
  37. }
  38. ?>

登陆后跳转的页面,根据不同的用户显示不同的权限和用户名:

  1. <?php
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <?php
  10. session_start();
  11. if( isset($_SESSION['id']) ){
  12. require_once('connect.php');
  13. $id = $_SESSION['id'];
  14. $name = $_SESSION['name'];
  15. $limits = $_SESSION['limits'];
  16. $message = $_SESSION['message'];
  17. if( $limits == 1 ){
  18. echo 'hello, 管理员' . '<br/>';
  19. }else{
  20. echo 'helo, 普通用户' . '<br/>';
  21. }
  22. echo 'hello you name is:' . $name;
  23. }else{
  24. echo '未登录!';
  25. header("refresh:3;url=login.html");
  26. }
  27. ?>
  28. &nbsp;
  29. </body>
  30. </html>
  31. ?>

使用session注意事项

1.在当前页面要使用session时我们在文件最前面没有输入内容时加上session_start();

2.session有一个时间限制的这个我们可以进行修改的,具体如下

其实PHP5 Session还提供了一个函数 session_set_cookie_params(); 来设置PHP5 Session的生存期的,该函数必须在 session_start() 函数调用之前调用:

  1. <?php
  2. // 保存一天
  3. $lifeTime = 24 * 3600;
  4. session_set_cookie_params($lifeTime);
  5. session_start();
  6. ?>