PHP 登录&注册页面

要求:完成以下页面的制作
1、login.php:登录页面,存在权限类别(user和admin),登录成功后重定向到admin.php/user.php。

2、admin.php:admin用户登录后访问的页面,只有admin用户登录后能够访问,若为非
admin权限用户需重定向到登录页面。

3、user.php:user用户登录后访问的页面,只有user用户登录后能够访问,若为非user权
限用户需重定向到登录页面。

4、logout.php:退出登录,退出登录后将重定向到登录页面。

5、register.php:注册页面,实现账户注册。

0x1登录

HTML部分:login.html

<!DOCTYPE html>
<html></html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
</head>

<body>
   <h3 style="text-align:center">登录</h3>

   <form action="./login.php" method="POST" style="text-align:center">
       <input type="text" name="username" placeholder="用户名" required="required"/>
       <br/>
       <input type="password" name="password" placeholder="密码" required="required"/>
       <br/>
       <input type="submit" name="submit" value="登录"/>
       <p style="text-align:center">没有账号?<a href="register.php"><b>立即注册!</b></a></p>
   </form>
</body>
</html>

PHP部分:login.php

文件版

<?php

    if($_POST['submit']=="登录"){
        if($_POST['username']=="admin"){
            setcookie('username',$_POST['username'],time()+10086);
            setcookie('password',$_POST['password'],time()+10086);
            header("Location:admin.php");
            die;
        }
        $dir = opendir("./acount");
        $username_md5_file = md5($_POST['username']).".txt";
        $flag = 0;
        while(($filename=readdir($dir))!=false){
            if($filename==$username_md5_file){
                $flag = 1;
                break;
            }
        }
        closedir($dir);
        if(!$flag){
            echo "用户不存在,请先注册!";
            echo "<meta http-equiv=\"Refresh\" content=\"1;url=login.php\"/>";
        }
        else{
            setcookie('username',time()+10086);
            header("Location:user.php");
        }
    }
    else 
        include "./login.html";
    
?>

注释:1、PHP cookie:https://www.runoob.com/php/php-cookies.html

           2、PHP内嵌HTML(较多)时可以用"include":include简介

           3、PHP页面跳转可以有两种方法:header头和meta标签。

数据库版(数据库名为user_information,下有表register,表含两个字段username和password)

<?php
 
    header('Content-type:text/html;charset=utf-8');

    if($_POST['submit']=="登录"){
        if($_POST['username']=="admin"){
            setcookie('username',time()+10086);
            header("Location:admin.php");
            die;
        }
        $connect = mysql_connect('localhost','root','root'); //连接服务器
        if(!$connect)
            die("数据库连接失败!");
        //else
        //    echo "数据库连接成功!";
        mysql_select_db("user_information",$connect); //选择数据库
        $words = "SELECT * FROM register WHERE username='$_POST[username]'";
        $rezult = mysql_query($words);
        $value = mysql_fetch_array($rezult); //将查询结果取为数组
        $name = $value['username'];
        $pass = $value['password'];
        if($name!==$_POST['username']){
            echo "用户不存在,请先注册!";
            echo "<meta http-equiv=\"Refresh\" content=\"3;url=login.php\"/>";
        }
        else{
            if($pass!==$_POST['password']){
                echo "密码错误!";
                echo "<meta http-equiv=\"Refresh\" content=\"3;url=login.php\"/>";
                die;
            }
            setcookie('username',time()+10086);
            header("Location:user.php");
        }
    }
    else 
        include "./login.html";
    
?>

0x2登录成功

admin.php:

<?php

    if (isset($_COOKIE["username"])&&$_COOKIE["username"]=="admin"&&$_COOKIE["password"]=="admin"){
        echo "欢迎您,".$_COOKIE["username"]."!<br/>";
        echo "这里什么也没有,你不用再看了!"."<br/>";
        echo "<a href=\"logout.php\">退出登录</a>";
    }
    else{
        echo "权限不足或账户错误!"."<br/>";
        echo "3秒后将自动为您跳转到首页。";
        echo "<meta http-equiv=\"Refresh\" content=\"3;url=login.php\"/>";
    }

?>

注释:1、isset函数:https://www.php.net/manual/zh/function.isset.php

user.php:

<?php

    if (isset($_COOKIE["username"])){
        echo "欢迎您,".$_COOKIE["username"]."!<br/>";
        echo "空空如也!"."<br/>";
        echo "<a href=\"logout.php\">退出登录</a>";
    }
    else{
        echo "账户错误!"."<br/>";
        echo "3秒后将自动为您跳转到首页。";
        echo "<meta http-equiv=\"Refresh\" content=\"3;url=login.php\"/>";
    }

?>

0x3退出登录

logout.php:

<?php

    setcookie('username','',time()-1);
    setcookie('password',time()-1);
    header("Location:login.php");

?>

0x4注册

HTML部分:register.html

<!DOCTYPE html>
<html></html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
</head>

<body>
   <h3 style="text-align:center">注册</h3>

   <form action="./register.php" method="POST" style="text-align:center">
       <input type="text" name="username" placeholder="用户名" required="required"/>
       <br/>
       <input type="password" name="password" placeholder="密码" required="required"/>
       <br/>
       <input type="submit" name="submit" value="注册"/>
       <p style="text-align:center">已有账号?<a href="login.php"><b>立即登录!</b></a></p>
   </form>
</body>
</html>

PHP部分:register.php

文件版

<?php

    if($_POST['submit']=="注册"){
        $username = $_POST['username'];
        $password = $_POST['password'];
        $filename = md5($username).".txt";
        $path = "./acount/$filename";
        if(file_exists($path)){
            echo "该用户已存在!"."<br/>";
            echo "<a href=login.php>返回登录</a>";
        }
        else{
            $file = fopen($path,"w");
            $content = "username:".md5($username)."\n"."password:".md5($password);
            fwrite($file,$content);
            echo "注册成功!"."<br/>";
            echo "<a href=login.php>立即登录</a>";
        }
    }
    else
        include "./register.html"

?>

注释:1、file_exists函数:https://www.w3school.com.cn/php/func_filesystem_file_exists.asp

附·dalao版代码:

<?php
function writeAccount($username,$password){
    if(!file_exists("./account/"))
    mkdir("./account/");
    $filename=md5($username);
    $dir=scandir("./account/");
    foreach($dir as $name){
        if($name==$filename)
        echo "<h4>账户已注册!请重新注册</h4>";
        echo '<meta http-equiv="Refresh" content="3;url=register.php"/>';
    }
    try{
        file_put_contents('./account/'.$filename,$username."\n".$password);
    }catch(Exception $e){                                   
        echo "<h4>抱歉!账户存储失败!请尝试重新注册</h4>";
        echo '<meta http-equiv="Refresh" content="3;url=register.php"/>';
    }
}

function readAccount($inputUsername,$inputPassword){
    $filename=md5($inputUsername);
    $dir=scandir("./account/");
    $accountExist=FALSE;
    foreach($dir as $name){
        if($name===$filename){
            $accountExist=TRUE;
        }
    }
    if($accountExist){
    $content=explode("\n",file_get_contents('./account/'.$filename));
    $username=$content[0];
    $password=$content[1];
    if($username===$inputPassword&&$password===$inputPassword){
        setcookie('username',$username,time()+10086);
        setcookie('password',$password,time()+10086);
        echo "<h4>欢迎访问——用户${username}</h4>";
        if($inputPassword==="admin")
        echo '<meta http-equiv="Refresh" content="3;url=admin.php"/>';
        else
        echo '<meta http-equiv="Refresh" content="3;url=user.php"/>';
    }
    }else{
        echo "<h4>账户未注册!请先注册</h4>";
        echo '<meta http-equiv="Refresh" content="3;url=register.php"/>';
    }
}

#writeAccount("admin","admin");
#readAccount("admin","admin")
?>

数据库版

<?php
    header('Content-type:text/html;charset=utf-8');

    if($_POST['submit']=="注册"){
        $username = $_POST['username'];
        $password = $_POST['password'];
        $connect = mysql_connect('localhost','root'); //连接服务器
        if(!$connect)
            die("数据库连接失败!");
        //else
        //    echo "数据库连接成功!";
        mysql_select_db("ccdb",$connect); //选择数据库
        $words = "INSERT INTO register (username,password) VALUES ('$username','$password')";
        $rezult = mysql_query($words);
        if($rezult){
            echo "注册成功!";
            echo "<meta http-equiv=\"Refresh\" content=\"3;url=login.php\"/>";
        }
        else{
            echo "注册失败!";
            echo "<meta http-equiv=\"Refresh\" content=\"3;url=register.php\"/>";
        }
        mysql_close($connect); //切断连接
    }
    else
        include "./register.html"
 
?>

模板链接:友情链接

操作指南:(以本地操作为例,本地使用的是PHPstudy集成环境)

1、在PHPstudy应用文件夹下的WWW文件夹内新建demo文件夹,将所有源码文件放入demo文件夹,(再在demo文件夹内新建acount<用于存放注册信息>文件夹)。

2、开启PHPstudy。访问localhost/demo/login.php,即可开启一系列操作。默认管理员账密为"admin admin",管理员无需注册即可访问admin.php,普通用户需注册方可访问user.php。


 

相关文章

文章浏览阅读8.4k次,点赞8次,收藏7次。SourceCodester Onl...
文章浏览阅读3.4k次,点赞46次,收藏51次。本文为大家介绍在...
文章浏览阅读1.1k次。- php是最优秀, 最原生的模板语言, 替代...
文章浏览阅读1.1k次,点赞18次,收藏15次。整理K8s网络相关笔...
文章浏览阅读1.2k次,点赞22次,收藏19次。此网络模型提供了...
文章浏览阅读1.1k次,点赞14次,收藏19次。当我们谈论网络安...