1. 程式人生 > >php+redis實戰留言板(todolist)與互粉功能

php+redis實戰留言板(todolist)與互粉功能

註銷 lis username IT login har 常用命令 href sse

目的:通過留言板(todolist)與互粉功能,掌握php操作redis的方法

相關數據操作命令

1,keys * 查看數據庫所有的key

2,type + key: 如 type uid 查看數據key的類型

3,批量刪除key, 如redis-cli keys "auth:*" | xargs redis-cli del 這行命令在linux終端執行, 刪除 auth: 開頭的所有key

4。。。。其他基本常用命令, 參照百度或者redis手冊

0,連接redis

1 <?php
2 
3 $redis = new Redis();
4 $redis
->connect( "127.0.0.1", 6379 ); 5 $redis->auth( "ghostwu" ); 6 7 ?>

1、註冊功能( reg.php )

 1 <!doctype html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8" />
 5         <title>用戶註冊頁面</title>
 6     </head>
 7     <body>
 8
<h3>用戶註冊</h3> 9 <form action="do_reg.php" method="post"> 10 <p> 11 用戶名: <input type="text" name="user" /> 12 </p> 13 <p> 14 密碼:<input type="password" name="pwd" /> 15
</p> 16 <p> 17 年齡: <input type="text" name="age" /> 18 </p> 19 <p> 20 <input type="submit" value="註冊" /> 21 <input type="reset" value="重置" /> 22 </p> 23 </form> 24 </body> 25 </html>

2、處理註冊( do_reg.php )

 1 <?php
 2 require "./redis_connect.php";
 3 
 4 $user = $_POST[‘user‘];
 5 $pwd = md5( $_POST[‘pwd‘] );
 6 $age = $_POST[‘age‘];
 7 
 8 $uid = $redis->get( "username:" . $user );
 9 if( empty( $uid ) ) {
10     $uid = $redis->incr( "userid" );
11     $redis->hMset( "user:" . $uid, array( "uid" => $uid, "user" => $user, "pwd" => $pwd, "age" => $age ) );
12     $redis->rpush( "uid", $uid );
13     $redis->set( "username:" . $user, $uid );
14     header( "Location:./list.php" );
15     exit();
16 }else {
17     die( "user already exists " );
18 }
19 
20 ?>

3,登錄(login.php)

 1 <!doctype html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8" />
 5         <title>用戶登錄頁面</title>
 6     </head>
 7     <body>
 8         <?php
 9             require "./redis_connect.php";
10             if( isset( $_POST[‘login‘] ) || $_POST[‘login‘] == ‘登錄‘ ) {
11                 $user = $_POST[‘user‘];
12                 $pwd = $_POST[‘pwd‘];
13                 $uid = $redis->get( "username:" . $user );
14                 if( !empty( $uid ) ) {
15                     $db_pwd = $redis->hget( "user:" . $uid, "pwd" );
16                     if( md5( $pwd ) == $db_pwd ) {
17                         $auth = md5( time() . $user . rand() );
18                         $redis->set( "auth:" . $auth, $uid );
19                         setcookie( "auth", $auth, time() + 86400 );
20                         header( "Location:./list.php" );
21                     }else {
22                         echo "<script>alert(‘用戶密碼錯誤‘);</script>";
23                     }
24                 }else {
25                     echo "<script>alert(‘該用戶不存在‘);</script>";
26                 }
27             }
28         ?>
29         <h3>用戶登錄</h3>
30         <form action="" method="post">
31             <p>
32                 用戶名: <input type="text" name="user" />
33             </p>
34             <p>
35                 密碼:<input type="password" name="pwd" />
36             </p>
37             <p>
38                 <input type="submit" value="登錄" name="login" />
39             </p>
40         </form>
41     </body>
42 </html>

4,列表頁( list.php )

  1 <meta charset="utf-8" />
  2 <?php
  3 require( "./redis_connect.php" );
  4 ?>
  5 <a href="./reg.php">註冊</a>
  6 <?php
  7     if( !empty( $_COOKIE[‘auth‘] ) ) {
  8         $login_uid = $redis->get( "auth:" . $_COOKIE[‘auth‘] );
  9         $userName = $redis->hget( "user:" . $login_uid, "user" );
 10 ?>
 11     歡迎您:<?php echo $userName; ?> | <a href="./logout.php">退出</a>
 12 <?php
 13     }else {
 14 ?>
 15     <a href="./login.php">登錄</a>
 16 <?php
 17     }
 18 ?>
 19 <?php
 20     $total = $redis->lsize( "uid" );
 21     $pageSize = 3;
 22     $p = isset( $_GET[‘p‘] ) ? $_GET[‘p‘] : 1;
 23     $page = ceil( $total / $pageSize );    
 24     $uids = $redis->lrange( "uid", ( $p - 1 ) * $pageSize, ( ( $p - 1 ) * $pageSize + $pageSize - 1  ) );
 25     $userList = array();
 26     foreach( $uids as $uid ) {
 27         $userList[] = $redis->hgetall( "user:" . $uid );
 28     }
 29 ?>
 30 
 31 <h3>列表數據</h3>
 32 <table>
 33     <tr>
 34         <th>uid</th>
 35         <th>用戶名</th>
 36         <th>年齡</th>
 37         <th>操作</th>
 38     </tr>
 39     <?php
 40         foreach( $userList as $user ) {
 41     ?>
 42         <tr>
 43             <td><?php echo $user[‘uid‘]; ?></td>
 44             <td><?php echo $user[‘user‘]; ?></td>
 45             <td><?php echo $user[‘age‘]; ?></td>
 46             <td>
 47                 <a href="delete.php?uid=<?php echo $user[‘uid‘]; ?>">刪除</a>
 48                 <a href="edit.php?uid=<?php echo $user[‘uid‘]; ?>">修改</a>
 49                 <?php
 50                     if( !empty( $_COOKIE[‘auth‘] ) && ( $login_uid != $user[‘uid‘] ) ) {
 51                 ?>
 52                         <a href="./do_fans.php?login_id=<?php echo $login_uid; ?>&uid=<?php echo $user[‘uid‘]; ?>">關註</a>
 53                 <?php
 54                     }
 55                 ?>
 56             </td>    
 57         </tr>
 58     <?php
 59         }
 60     ?>
 61         <!--分頁開始-->    
 62         <tr>
 63             <td colspan="4">
 64                 <?php
 65                     for( $i = 1; $i <= $page; $i++ ) {
 66                 ?>
 67                         <a href="?p=<?php echo $i; ?>"><?php echo $i; ?></a>
 68                 <?php
 69                     }
 70                 ?>    
 71             </td>        
 72         </tr>    
 73 </table>
 74 
 75 <h3>我關註了誰</h3>
 76 <table>
 77     <tr>
 78         <th>uid</th>
 79         <th>用戶名</th>
 80         <th>年齡</th>
 81     </tr>
 82     <?php
 83         $myWatchIds = $redis->smembers( "user:" . $login_uid . ":watch" );
 84         foreach( $myWatchIds as $wId ){
 85             $watchList = $redis->hgetall( "user:" . $wId );
 86 ?>
 87     <tr>
 88         <td><?php echo $watchList[‘uid‘]; ?></td>
 89         <td><?php echo $watchList[‘user‘]; ?></td>
 90         <td><?php echo $watchList[‘age‘]; ?></td>
 91     </tr>
 92 <?php
 93         }
 94     ?>
 95 </table>
 96 <h3>我的fans</h3>
 97 <table>
 98     <tr>
 99         <th>uid</th>
100         <th>用戶名</th>
101         <th>年齡</th>
102     </tr>
103     <?php
104         $myFlowerIds = $redis->smembers( "user:" . $login_uid . ":flowers" );
105         foreach( $myFlowerIds as $fId ){
106             $flowerList = $redis->hgetall( "user:" . $fId );
107 ?>
108     <tr>
109         <td><?php echo $flowerList[‘uid‘]; ?></td>
110         <td><?php echo $flowerList[‘user‘]; ?></td>
111         <td><?php echo $flowerList[‘age‘]; ?></td>
112     </tr>
113 <?php
114         }
115     ?>
116 </table>

5,編輯 ( edit.php)

 1 <meta charset="utf-8" />
 2 <?php
 3     require "./redis_connect.php";
 4     $uid = intval( $_GET[‘uid‘] );
 5     if( empty( $uid ) ){
 6         header( "Location:./list.php" );
 7         exit();
 8     }
 9     $userInfo = $redis->hgetall( "user:" . $uid );
10 ?>
11 
12 <form action="do_edit.php" method="post">
13     <p>
14         用戶名: <input disabled type="text" name="user" value="<?php echo $userInfo[‘user‘]; ?>" />
15     </p>
16     <p>
17         年齡:<input type="text" name="age" value="<?php echo $userInfo[‘age‘]; ?>" />
18     </p>
19     <p>
20         <input type="submit" value="修改" name="edit" />
21     </p>
22     <input type="hidden" value="<?php echo $userInfo[‘uid‘]; ?>" name="uid" />
23 </form>

6,處理更新( do_edit.php )

 1 <?php
 2     require( "./redis_connect.php" );
 3     $uid = intval( $_POST[‘uid‘] );
 4     $age = $_POST[‘age‘];
 5 
 6     if( empty( $uid ) ) {
 7         header( "Location:./edit.php" );
 8         exit();
 9     }
10     $res = $redis->hmset( "user:". $uid, array( "age" => $age ) );
11     if( $res ) {
12         header( "Location:./list.php" );
13     }else {
14         header( "Location:./edit.php" );
15     }
16     exit();
17 ?>

7,刪除(delete.php)

 1 <?php
 2     require( "./redis_connect.php" );
 3     $uid = intval( $_GET[‘uid‘] );
 4     if( empty( $uid ) ) {
 5         header( "Location:./list.php" );
 6         exit();
 7     }
 8     $userName = $redis->get( "user:" . $uid );
 9     $redis->del( "user:" . $uid );
10     $redis->del( "username:" . $userName );
11     $redis->lrem( "uid", $uid );
12     header( "Location:./list.php" );
13 ?>

8,註銷( logout.php )

1 <?php
2     require "./redis_connect.php";
3     if( isset( $_COOKIE[‘auth‘] ) ){
4         $redis->del( "auth:" . $_COOKIE[‘auth‘] );
5         setcookie( "auth", "", time() - 86400 );
6         header( "Location:./list.php" );
7         exit();
8     }
9 ?>

9,互粉( do_fans.php )

 1 <?php
 2     require "./redis_connect.php";
 3     $login_id = intval( $_GET[‘login_id‘] );
 4     $uid = intval( $_GET[‘uid‘] );
 5     if( empty( $login_id ) || empty( $uid ) ) {
 6         header( "Location:./list.php" );            
 7         exit();
 8     }
 9     //當前用戶關註
10     $redis->sadd( "user:" . $login_id . ":watch", $uid );
11     //被當前用戶關註
12     $redis->sadd( "user:" . $uid . ":flowers", $login_id );
13     header( "Location:./list.php" );            
14     exit();
15 ?>

php+redis實戰留言板(todolist)與互粉功能