이 기사는 간단한 예를 통해 완전한 PHP MySQL 멤버십 시스템 기능을 완성합니다. 매우 실용적인 응용 프로그램입니다. 구체적인 구현 단계는 다음과 같습니다.
1. 회원제 원칙:
로그인-->판단-->상태 유지(쿠키 또는 세션)-->상태 및 권한 확인
2. 회원제 보안 :
1. md5 보안을 향상하기 위해 상수를 사용하는 방법을 알아보세요
2. 쿠키/세션은 일반 텍스트 정보를 덜 사용합니다
3. 쿠키보다 세션 보안이 더 강합니다
4. 쿠키/세션을 이용하여 정보를 읽어 판단력을 높여보세요
5. 쿠키/세션 콘텐츠는 간소화되어야 합니다
6. 오류 메시지에 맞춰 쿠키/세션을 삭제합니다
3. 데이터베이스 테스트, 테이블 user_list 및 해당 필드
uid m_id 사용자 이름 비밀번호
1 1 1 관리자 291760f98414679e3fd3f9051b19b6f7
2 2 관리자2 895785cfa5d8157f4d33c58ae0f55123
비밀번호: 각각 md5(admintest100), md5(admin2test100) 즉, 비밀번호는 상수 test100에 바인딩된 다음 암호화되어 데이터베이스에 저장됩니다.
4. 구성 페이지 m_config.php:
<?php session_start(); //数据库连接 $conn=mysql_connect('localhost','root',''); mysql_select_db('test',$conn); //定义常量 define(ALL_ps,"test100"); //查看登录状态与权限 function user_shell($uid,$shell,$m_id){ $sql="select * from user_list where `uid`='$uid'"; $query=mysql_query($sql); $us=is_array($row=mysql_fetch_array($query)); $shell=$us ? $shell==md5($row[username].$row[password].ALL_PS):FALSE; if($shell){ if($row[m_id]<=$m_id){//$row[m_id]越小权限越高,为1时权限最高 return $row; }else{ echo "你的权限不足,不能查看该页面"; exit(); } }else{ echo "登录后才能查看该页"; exit(); } } //设置登录超时 function user_mktime($onlinetime){ $new_time=mktime(); echo $new_time-$onlinetime."秒未操作该页面"."<br>"; if($new_time-$onlinetime>'10'){//设置超时时间为10秒,测试用 echo "登录超时,请重新登录"; exit(); session_destroy(); }else{ $_SESSION[times]=mktime(); } } ?>
5. 로그인 페이지 m_user.php:
<?php include("m_config.php"); //echo md5("admin2".ALL_PS); if($_POST[submit]){ $username=str_replace(" ","","$_POST[username]"); $sql="select * from user_list where `username`='$username'"; $query=mysql_query($sql); $us=is_array($row=mysql_fetch_array($query)); $ps=$us ? md5($_POST[password].ALL_PS)==$row[password] : FALSE; if($ps){ $_SESSION[uid]=$row[uid]; $_SESSION[user_shell]=md5($row[username].$row[password].ALL_PS); $_SESSION[times]=mktime();//取得登录时忘该的时间 echo "登录成功"; }else{ echo "用户名或密码错误"; session_destroy();//密码错误时消除所有的session } } ?> <form action="" method="post"> 用户名:<input name="username" type="text" /><br /> 用户名:<input name="password" type="password" /><br /> 验证码:<input name="code" type="code" />5213<br /><br /> <input name="submit" type="submit" value="登录" /> </form>
6. 권한 및 시간 제한이 설정된 페이지 m_zhuangtai.php:
<?php include("m_config.php"); $arr=user_shell($_SESSION[uid],$_SESSION[user_shell],1);//设置该页面只有权限为1时即最高权限的才能访问 user_mktime($_SESSION[times]);//判断是否超时10秒 //echo $_SESSION[times]."<br>";//登录时该的时间 //echo mktime()."<br>";//当前日期 //echo $arr[username]."<br>"; //echo $arr[uid]."<br>"; ?>
허락을 받아야만 볼 수 있는 콘텐츠
7. 테스트 결과:
1. sss, sssssss, 프롬프트: 잘못된 사용자 이름 또는 비밀번호로 로그인합니다. m_zhuangtai.php 보기, 프롬프트: 이 페이지를 보려면 로그인해야 합니다.
2. admin admin으로 로그인 후 권한이 1이므로 m_zhuangtai.php 페이지의 내용을 볼 수 있습니다.
3. admin admin으로 로그인 후 권한이 1이기 때문에 m_zhuangtai.php 페이지의 내용을 볼 수 있으나 10초 후에 새로고침을 하면 X초 동안 페이지가 작동되지 않았다는 메시지가 뜹니다. 로그인 시간이 초과되었습니다. 다시 로그인해 주세요.
4. admin2 admin2로 로그인 후 권한이 2이므로 m_zhuangtai.php 페이지 내용을 볼 수 없습니다. Tip: 권한이 부족하여 페이지를 볼 수 없습니다.
이 기사에 설명된 예제가 PHP 프로그램 개발에 종사하는 모든 사람에게 도움이 되기를 바랍니다.