PHP小项目

实现的功能

1、注册、登陆、注销  设置session
2、页面信息展示
3、页面信息编辑
4、文件上传、密码修改、页面信息删除、头像更换

代码详解

1、登陆页面

html文件展示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登陆</title>
</head>
<body>
    <div align="center" >
        <div class="top">
            <h1>登陆</h1>
        </div>
        <form action="denglu.php" method="post">
            <input type="text" name="username" placeholder="手机号/邮箱/用户名">
            <br>
            <input type="password" name="password" placeholder="密码">
            <br>
            <input type="text" class="input_code" name="verifycode" placeholder="验证码">
            <img class="verifycode" src="https://passport.360.cn/captcha.php?m=create&app=i360&scene=login&userip=&level=default&sign=8820a4&r=1564540365&border=none&_=1564540365972">
            <br>
            <input type="submit" name="submit" value="登陆">
            <a href="reg_user.html" class="reg_user">注册用户</a>
        </form>
    </div>
</body>
</html>

效果图

php代码处理逻辑

<?php
session_start();    // 使用session
// 接受到登陆页面传来的数据对数据进行处理
// 与数据库的数据进行匹对
$tmp=$_POST;// 登陆页面传来的数组数据

// 调用用户的数据库文件进行遍历匹对
$file=fopen("../data/user.db","r");
if($file==null)
{
    echo "user.db文件打开失败";
    return;
}


// 开始循环比对数据库
$flag=true;// 设定是否在数据库找到匹配的用户名和密码
//$isend=feof($file); // 是否到达文件末尾  feof() 到达返回 1  每到达返回0
while(!feof($file)) {
    // 按行读取数据
    $userdb = fgets($file);
    // 用户数据库的存储方式按照顺序存储
    //    0     1     2      3
    // 用户名、邮箱、手机号、密码
    $userdb = explode("||", $userdb);
//    var_dump($userdb);
//    var_dump($tmp);
    if (count($userdb) != 3)
    {
        continue;
    }
    $uid=$userdb[0];// 用户ID
    $use=base64_decode($userdb[1]);// base64 用户名解码
    //    $mail=base64_decode($userdb[1]);// base64 邮箱解码
    //    $phone=base64_decode($userdb[2]);// base64 手机解码
    $pass=base64_decode($userdb[2]);// base64 密码解码
//    var_dump($use);
//    var_dump($passwd);
//    var_dump($tmp);
    if(($tmp["username"]==$use)&&($tmp["password"]==$pass))
        //        $tmp['username']==$mail&&$tmp['password']==$passwd||
        //        $tmp['username']==$phone&&$tmp['password']==$passwd)
    {
        // session 中需要保存:用户名 时间是在编辑中保存,ID是读取注册时用户的ID
        $_SESSION['uname']=$use;// 将登陆成功的用户信息存储到 SESSION中
        echo "<script>alert('登陆成功!请稍候');location.href='../houtai/houtai.php';</script>";
        $flag=false;
        return;
    }
}
if($flag)
{
    echo "<script>alert('用户名或密码错误!请重新输入');location.href='denglu.html';</script>";
}

2、注册界面

html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>注册</title>
</head>
<body>

<div align="center">
    <div>
        <h1>注册用户</h1>
    </div>
    <form action="reg_user.php" method="post">
        <br>
        <input type="text" name="username" placeholder="请输入用户名">
        <br>
        <input type="text" name="pass1" placeholder="请输入密码">
        <br>
        <input type="text" name="pass2" placeholder="请输入密码">
        <br>
        <input type="submit" name="submit" value="注册">
    </form>
</div>

</form>
</body>
</html>

效果图

php代码逻辑

<?php
session_start();
// 用来保存用户的注册信息
// 将用户信息保存到user.db中
$tmp=$_POST;
//var_dump($tmp);

if($tmp==null)
{
    echo "数据传输失败";
    die();
}

// 讲述据打开 user.db文件
$file=fopen("../data/user.db","r");// 读取指针
if($file==null)
{
    echo "user.db文件打开失败";
    die();
}

// 遍历用户数据库,防止重复注册
$id=0;// 设置当前数据库已经注册的用户数
//$flag=true;// 标志当前是否有相同的用户名/邮箱  默认没有相同的用户名/邮箱
while(!feof($file))
{

    $userdata=explode("||",fgets($file));

    // 对注册数据编码
    $username=base64_encode($tmp['username']);
    $password=base64_encode($tmp['pass1']);

//    var_dump($userdata);
//    var_dump($username);

    if(count($userdata)!=3)
    {
        continue; // 防止取到不完整的数据影响判断
    }

    if($username==$userdata[1])
    {
//        $flag=false;// 存在相同的用户名/邮箱
        echo "<script>alert('用户名/油箱名 重复请勿重复注册!!');location.href='reg_user.html';</script>";
        die();
    }
    $id++;  // 记录当前注册的用户的个数
}
echo $id;
fclose($file);

/////////////////////////////////////////////////////////////////
// 存储注册的用户名和密码

// user.db 数据按照 id||用户名||密码 的格式存储


$file=fopen("../data/user.db","a");
if($file==null)
{
    echo "user.db文件打开失败";
    die();
}

// 合并数据 使用 || 分割字符串
$data="$id||$username||$password\n";
// 写入数据文件
fwrite($file,$data);

echo "<script>alert('注册成功!请登陆');location.href='denglu.html';</script>";
fclose($file);

3、注销

php代码逻辑

<?php
session_start();
// setcookie("username","",time()-1);
session_destroy();// 销毁session

echo "<script>location.href='../xianshi.php'</script>";
?>

4、密码修改

html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>修改密码</title>
</head>
<body>
    <div align="center">
        <h1>修改密码</h1>
    </div>
    <hr>
    <div align="center">
        <form action="getpass.php" method="post">
            <input type="text" name="ypass" placeholder="原始密码">
            <br>
            <input type="text" name="xpass1" placeholder="请输入新密码">
            <br>
            <input type="text" name="xpass2" placeholder="重新输入">
            <br>
            <input type="submit" name="submit">
        </form>
    </div>
</body>
</html>

效果图

php代码逻辑

<?php
session_start();
// 必须在第一行
$ulogin=$_SESSION["uname"];
if($ulogin==null)
{
    echo "<script>alert('请登陆!');location.href=../dlzc/denglu.html;</script>";
}

// 调试信息
var_dump($ulogin);

// 用户名和密码都进行了 base64编码

$pass=$_POST;
//var_dump($pass);

// 判断当前登录的用户
//var_dump($_SESSION['uname']);

// 读取文档查找相应的用户名和密码
$file=file("../data/user.db");
if($file==null)
{
    echo "../data/user.db文件打开失败";
    die();
}

// 循环遍历数组
for($i=0,$j=0;$i<count($file);$i++,$j++)
{
    $filer=explode("||",$file[$i]);

//    var_dump($_SESSION["uname"]);
//    var_dump(base64_decode($filer[1]));

    if($ulogin==base64_decode($filer[1]))
    {
        // 找到用户名
        // 判断输入的是否是原始密码
        // post传进来的 $pass数组分别是 ypass xpass1 xpass2

        // 两次输入的密码是否一致

//        var_dump($pass['ypass']);
//        var_dump($pass['xpass1']);
//        var_dump($pass['xpass2']);

        if($pass["xpass1"]==$pass["xpass2"])
        {
            // 输入密码和原密码是否一致
            if($pass["ypass"]==base64_decode($filer[2]))
            {
                // 验证身份,修改密码生效
                // 新密码写入文件
                // 记录该行用户信息并删除
                $uid=$filer[0]; // 帐户ID
                $uname=$filer[1]; // 帐户名
                // 新密码
                $upass=$pass['xpass1'];
                continue;
            }
            else{
                echo "<script>alert('请输入正确的密码');location.href=getpass.html;</script>";
            }
        }
        else{
            echo "<script>alert('请输入一致密码');location.href=getpass.html;</script>";
        }
    }

    $xyhu[$j]=$file[$i];// 删除用户信息的数组

}
// var_dump($xyhu);

//echo $xyhu[1];
//echo $xyhu[2];
//echo $xyhu[3];

// 将删除后的用户信息写入文件
$fil=fopen("../data/user.db","w");
if($fil==null)
{
    echo "user.db文件打开失败";
    die();
}

//var_dump(count($xyhu));

for($i=1;$i<=count($xyhu);$i++)
{
    fwrite($fil,$xyhu[$i]);
}

fclose($fil);

// 将新的用户信息追加到文件中
$file1=fopen("../data/user.db","a");
if($file1==null)
{
    echo "user.db文件打开失败";
    die();
}

// 进行64编码存储
//$uname=base64_encode($uname);
$upass=base64_encode($upass);

// 调试信息
var_dump($uname);
var_dump($upass);

$udata="$uid||$uname||$upass\n";

var_dump($udata);

fwrite($file1,$udata);

fclose($file1);

echo "<script>alert('密码修改成功,请重新登陆');location.href=../dlzc/denglu.html;</script>";

// 退出登录
session_destroy();// 销毁session
?>

5、登陆后的后台

html代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>


</head>
<body>

    <div>
        <img src="../upload_file/files/1.gif" >

        <a id="link" href="getpass.html">修改密码</a>
    </div>

    <div align="center">

        <h1>控制后台</h1>
        <br>
        <a href="../xianshi.php">
            <button >
                数据展示
            </button>
        </a>
        <a id="link" href="edit.php">
            <button >
                数据编辑
            </button>
        </a>
        <br>
        <a href="../upload_file/upload.html">
            <button>
                图片上传
            </button>
        </a>
        <a href="../upload_file/upload.html">
            <button>
                修改头像
            </button>
        </a>

    </div>

</body>
</html>

效果图

6、文章编辑

html代码与php逻辑代码

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div align="left">
    <a href="houtai.php">返回</a>
</div>

<div align="center">
    <div>
        <h1>数据编辑
            <?php
            // 判断是否登陆
            if(isset($_SESSION["uname"]))
            {
                echo "欢迎".$_SESSION["uname"];
            }
            else{
                echo "<script>alert('请登陆!');location.href='../dlzc/denglu.html'; </script>";
            }
            ?>

        </h1>
    </div>

    <form action="edit.php" method="post">
        <p>标题</p>
        <input type="text" name="title" placeholder="标题">
        <p>图片</p>
        <input type="text" name="img_url" placeholder="请输入图片链接">
        <p>内容</p>
        <textarea name="content" placeholder="请输入内容"></textarea>
        <p>评论</p>
        <textarea name="plun" placeholder="plun"></textarea>
        <input type="submit" value="提交">
        <br>
    </form>
</div>
</body>
</html>



<?php
//                            0    1    2    3     4    5         6
// $data数据 按照数组顺序分成:ID、标题、图片、内容、作者、发表时间、评论
// 前三行的数据
//var_dump($_POST);

$tmp=$_POST;
if($tmp==null)
{
    die();
}

// 对post接受的数据进行处理
// 将数据写入news.db文件
$file=fopen("../data/news.db","r");
if($file==null)
{
    echo "文件打开失败";
    die();
}

// 关于文章id通过对文件进行行遍历获取当前文章的个数
$num=0;// 从0开始计数
while(!feof($file))
{
    fgets($file);// 按行读取
    $num++;
}
fclose($file);

$id=$num+1;

// 分别对 标题、图片链接、内容、评论 进行编码
$title=base64_encode($tmp["title"]);    // 将内容进行编码去掉特殊字符
$img_url=base64_encode($tmp["img_url"]);
$content=base64_encode($tmp["content"]);
$plun=base64_encode($tmp["plun"]);

$author=$_SESSION["uname"];

$_SESSION["time"]=time();
$time=$_SESSION["time"];



// 按照格式保存数据
//                            0    1    2    3     4    5         6
// $data数据 按照数组顺序分成:ID、标题、图片、内容、作者、发表时间、评论
$data="$id||$title||$img_url||$content||$author||$time||$plun\n";

// 写入文件
$file=fopen("../data/news.db","a");// 追加模式
if($file==null)
{
    echo "文件打开失败";
    die();
}

fwrite($file,$data);

echo "<script>alert('新闻编辑成功!');</script>";

fclose($file);
?>

效果图

7、文章删除

php代码逻辑

<?php
// 接收传文章ID对相应的文章进行展示
//var_dump($_GET);
$id=$_GET['id'];

// 对文件数据进行读取比对相应的文章ID
$file=fopen("../data/news.db","r");
if($file==null)
{
    echo "文件打开失败!";
    die();
}

while(!feof($file))
{
    $data=explode("||",fgets($file));// 按行读取并按照 || 分成数组存储

    // 通过ID 查找相应的文章
    if($data[0]==$id)
    {

        // 找到需要显示的文章
        //                            0    1    2    3     4    5         6
        // $data数据 按照数组顺序分成:ID、标题、图片、内容、作者、发表时间、评论
        // 分别对 标题、图片链接、内容、评论 进行编码
        // 对相应的文章进行解码
        $data[1]=base64_decode($data[1]);
        $data[2]=base64_decode($data[2]);
        $data[3]=base64_decode($data[3]);
        $data[6]=base64_decode($data[6]);
        $sj=$data;
    }
}
fclose($file);



// 删除文件
$file = file("../data/news.db", FILE_SKIP_EMPTY_LINES);
//    var_dump($file);
// 循环遍历数组
for ($i = 0, $j = 0; $i < count($file); $i++, $j++) {
    $tmp = explode("||", $file[$i]);
    if ($sj[0] == $tmp[0]) {
        continue;
    }
    $xwzhang[$j] = $file[$i];
}
//var_dump($xwzhang);
// 对文库重新写入
$fil = fopen("../data/news.db", "w");
if ($fil == null) {
    echo "文件打开失败!";
    die();
}
for ($i = 0; $i < count($xwzhang); $i++) {
    fwrite($fil, $xwzhang[$i]);
}
fclose($fil);

echo "<script>alert='文章删除成功!';location.href='../xianshi.php';</script>";
?>

8、数据展示

html代码与php代码逻辑

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>

<!-- 展示页面-->

    <style type="text/css">
        table{
            width 80%;
        }
        th{
            width: 300px;
            text-align: center;
            height: 50px;
        }
        td{
            height: 30px;
            width: 300px;
            text-align: center;
        }
        img{
            /* 修改宽或高都回自动调整图片的大小,可以自定义 */
            height: 100px;
        }
    </style>

</head>
<body >

    <div align="left">
        <a href="houtai/houtai.php">返回</a>
    </div>

    <div align="right">
        <?php
            // 判断是否登陆
            if(isset($_SESSION['uname']))
            {
                // 判断是否修改头像
                if(isset($_GET['hz']))
                {
                    $hz=$_GET['hz'];
//                  var_dump($hz);
                    echo <<<EOF
        <img src="upload_file/files/txiang.$hz" >
EOF;
                }
                else{
                    echo <<<EOF
        <img src="upload_file/files/txiang.gif" >
EOF;
                }

            }
        ?>
        <a href="dlzc/denglu.html">登陆</a>
        <a href="dlzc/loginout.php">注销</a>
    </div>

    <div align="center">

        <br><br><br>
        <h1>影视榜单
            <?php
                if(isset($_SESSION['uname']))
                {
                    echo "欢迎".$_SESSION['uname'];
                }
            ?>
        </h1>
        <br><br>
        <hr>

        <table border="1">
            <tr>
                <th>ID</th>
                <th>标题/图片</th>
                <th>内容</th>
                <th>作者</th>
                <th>发表时间</th>
                <th>评论</th>
            </tr>
            <?php
            $file=fopen('data/news.db','r');
            if ($file==null)
            {
                echo "文件打开失败";
                return;
            }

            $i=0;
            while(!feof($file))
            {
                $temp=fgets($file);
                $data=explode("||",$temp);

                if(count($data)!=7)
                {
                    continue;
                }
                if($i<3)
                {
                    echo_info($data);
                }else{
                    echo_zhihou($data);
                }
                $i++;
            }
            ?>
        </table>
    </div>
</body>
</html>


<?php
//                            0    1    2    3     4    5         6
// $data数据 按照数组顺序分成:ID、标题、图片、内容、作者、发表时间、评论
    // 前三行的数据
    function echo_info($data)
    {
        // 分别对 标题、图片链接、内容、评论 解码
//        $data[1]=base64_decode($data[1]);// 标题
        $data[2]=base64_decode($data[2]);// 图片
        $data[3]=base64_decode($data[3]);// 内容
        $data[6]=base64_decode($data[6]);// 评论
        $data[3]=substr($data[3],0,120).'...';
        $data[5]=date("Y-m-d",$data[5]) ;
        echo <<<EOF
            <tr>
                <td>$data[0]</td>
                <td>
                    <a href="xxzshi.php?id=$data[0]"> <img src="$data[2]" ></a>
                </td>
                <td>$data[3]</td>
                <td>$data[4]</td>
                <td>$data[5]</td>
                <td>$data[6]</td>
            </tr>
EOF;
    }

    // 三行之后的数据
    function echo_zhihou($data)
    {
        // 分别对 标题、图片链接、内容、评论 解码
        $data[1]=base64_decode($data[1]);// 标题
//        $data[2]=base64_decode($data[2]);// 图片
        $data[3]=base64_decode($data[3]);// 内容
        $data[6]=base64_decode($data[6]);// 评论
        $data[3]=substr($data[3],0,120).'...';
        $data[5]=date("Y-m-d",$data[5]) ;
        echo <<<EOF
            <tr>
                <td>$data[0]</td>
                <td>
                <a href="xxzshi.php?id=$data[0]">$data[1]</a>
                </td>
                <td>$data[3]</td>
                <td>$data[4]</td>
                <td>$data[5]</td>
                <td>$data[6]</td>
            </tr>
EOF;

    }
?>

效果图

9、数据详细展示

html代码和php代码逻辑

<?php
session_start();
//                            0    1    2    3     4    5         6
// $data数据 按照数组顺序分成:ID、标题、图片、内容、作者、发表时间、评论

// 接收传文章ID对相应的文章进行展示
//var_dump($_GET);
$id=$_GET['id'];

// 对文件数据进行读取比对相应的文章ID
$file=fopen("data/news.db","r");
if($file==null)
{
    echo "文件打开失败!";
    die();
}



while(!feof($file))
{
    $data=explode("||",fgets($file));// 按行读取并按照 || 分成数组存储

    // 通过ID 查找相应的文章
    if($data[0]==$id)
    {
        // 找到需要显示的文章
        //                            0    1    2    3     4    5         6
        // $data数据 按照数组顺序分成:ID、标题、图片、内容、作者、发表时间、评论
        // 分别对 标题、图片链接、内容、评论 进行编码
        // 对相应的文章进行解码
        $data[1]=base64_decode($data[1]);
        $data[2]=base64_decode($data[2]);
        $data[3]=base64_decode($data[3]);
        $data[6]=base64_decode($data[6]);
        $sj=$data;
    }
}
fclose($file);

//// 删除文件
//function delete_wz($sj)
//{
//    $file =file("data/news.db",FILE_SKIP_EMPTY_LINES);
////    var_dump($file);
//// 循环遍历数组
//    for($i=0,$j=0;$i<count($file);$i++,$j++)
//    {
//        $tmp=explode("||",$file[$i]);
//        if($sj[0]==$tmp[0])
//        {
//            continue;
//        }
//        $xwzhang[$j]=$file[$i];
//    }
//    //var_dump($xwzhang);
//    // 对文库重新写入
//    $fil=fopen("data/news.db","w");
//    if($fil==null)
//    {
//        echo "文件打开失败!";
//        die();
//    }
//    for($i=0;$i<count($xwzhang);$i++)
//    {
//        fwrite($fil,$xwzhang[$i]);
//    }
//    fclose($fil);
//}
?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>
        <?php
        echo $sj[1];
        ?>
    </title>
</head>
<body>
    <div>
        <div align="center">
            <h1>
                <?php echo $sj[1];?>
            </h1>
        </div>
        <div align="center">
            <hr size="10" color="black">
            <p>
                <?php echo $sj[3];?>
            </p>
            <p>
                <?php echo $sj[6];?>
            </p>
        </div>
        <hr>
        <div align="right">
            <p>
                <?php echo $sj[4]?>
            </p>
            <p>
                <?php echo date("Y-m-d",$sj[5]) ;?>
            </p>
            <?php echo <<<EOF
            <a href="houtai/delete_wzhang.php?id=$sj[0]">删除该文章</a>
EOF;
            ?>

        </div>
    </div>

</body>
</html>

效果图

10、文件上传

html代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div align="center">
    <div align="left">
        <a href="../houtai/houtai.php">
            <button >返回</button>
        </a>
    </div>
    <form enctype="multipart/form-data" action="upload.php" method="post">
        <input type="file" name="tuhua" value="">
        <input type="submit">
    </form>
</div>

</body>
</html>

效果图

php代码逻辑

<?php
$file=$_FILES;
//var_dump($file);

// $_FILE["file"]["error"]   file是在上传表单中 定义的字符      <input type="file" name="tuhua" value="">
//if($_FILES["tuhua"]["error"]>0)
////{
////    echo "错误:".$_FILES["tuhua"]["error"]."<br>";
////}else{
////    echo "文件名".$_FILES["tuhua"]["name"]."<br>";
////    echo "文件类型".$_FILES["tuhua"]["name"]."<br>";
////    echo "文件大小".($_FILES["tuhua"]["size"]/1024)."KB<br>";
////    echo "上传位置".$_FILES["tuhua"]["tmp_name"];
////}

// 设置上传限制
$allowfile=array("gif","jpeg","jpg","png");// 只允许常见图片和动图上传

// 获取文件的后缀名
$temp=explode(".",$file["tuhua"]["tmp_name"]);
$hzhui=end($temp);

if(($file["tuhua"]["type"]=="image/gif")||
    ($file["tuhua"]["type"]=="image/jpeg")||
    ($file["tuhua"]["type"]=="image/jpg")||
    ($file["tuhua"]["type"]=="image/pjpeg")||
    ($file["tuhua"]["type"]=="image/x-png")||
    ($file["tuhua"]["type"]=="image/png")&&
    ($file["tuhua"]["size"]<204800)// 小于 200kb 这里是按字节计算
    &&in_array($hzhui,$allowfile)
)
{
    if ($file["tuhua"]["error"]>0)
    {
        echo "错误".$file['tuhua']["error"]."<br>";
    }
    else{
        if($_FILES["tuhua"]["error"]>0)
        {
            echo "错误:".$_FILES["tuhua"]["error"]."<br>";
        }else{
            // 正确的文件格式和限制内的文件大小
            // 显示上文件的相关信息
            echo "文件名".$_FILES["tuhua"]["name"]."<br>";
            echo "文件类型".$_FILES["tuhua"]["name"]."<br>";
            echo "文件大小".($_FILES["tuhua"]["size"]/1024)."KB<br>";
            echo "上传位置".$_FILES["tuhua"]["tmp_name"];

            // 对上传文件进行文件保存

            // 判断目标文件夹下是否存在相同的文件防止重复上传
            // 如果没有相关的文件夹,创建文件夹并修改需要的相应权限
            if(file_exists("files/".$file["tuhua"]["name"]))
            {
                // 文件存在
                echo "<script>alert('文件已存在,请勿重复上传');location.href='upload.html'</script>";
            }
            else{
                // 文件不存在 进行文件保存
                // 原理是对上传得临时文件复制保存到目标位置
                move_uploaded_file($file["tuhua"]["tmp_name"]/*上传的临时文件路径*/,
                "files/".$file["tuhua"]["name"]/*目标文件夹下的文件名*/);
                echo <<<EOF
            <script>alert('文件上传成功');location.href="upload.html"</script>;
EOF;
            }

        }

    }
}else{
    echo "请提交正确的文件格式";
}

11、头像上传

html代码借用上传的头像html

php逻辑代码

<?php
$file=$_FILES;

// 获取文件的后缀名
//$temp=explode(".",$file["txiang"]["type"]);
//$hzhui=end($temp);
//var_dump($hzhui);
//var_dump($temp);

if(($file["txiang"]["type"]=="image/gif")||
    ($file["txiang"]["type"]=="image/jpeg")||
    ($file["txiang"]["type"]=="image/jpg")||
    ($file["txiang"]["type"]=="image/pjpeg")||
    ($file["txiang"]["type"]=="image/x-png")||
    ($file["txiang"]["type"]=="image/png")
    &&in_array($hzhui,$allowfile)
)
{
    if ($file["txiang"]["error"]>0)
    {
        echo "错误".$file['txiang']["error"]."<br>";
    }
    else{
        if($_FILES["txiang"]["error"]>0)
        {
            echo "错误:".$_FILES["txiang"]["error"]."<br>";
        }else{

            $tmp=explode(".",$file["txiang"]["type"]);
            var_dump($tmp);
            $h=end($tmp);
            $hzhui=explode("/",$h);
            var_dump($hzhui);
            $wjhzhui=$hzhui[1];
            var_dump($wjhzhui);
            // 对上传文件进行文件保存

            // 文件不存在 进行文件保存
            // 原理是对上传得临时文件复制保存到目标位置
            move_uploaded_file($file["txiang"]["tmp_name"]/*上传的临时文件路径*/,
                "files/txiang.".$wjhzhui/*目标文件夹下的文件名*/);
            echo <<<EOF
        <script>alert('文件上传成功');location.href="../xianshi.php?hz=$wjhzhui";</script>;
EOF;
        }

    }
}else{
    echo "请提交正确的文件格式";
}

总结

吐嘈

php有很多的功能可以使用已有的函数去实现,节省了很多在实际开发中的时间,但是由于函数功能很多不可能在短时间能完全掌握只能用到就查的方式,整体上手难度不大。
环境方面,现在使用的是phpstrom进行文件编写,如果进行代码验证会间歇性出现502页面,这就有点烦。又因为php和html等一样属于前端语言,动态调试比较麻烦,虽然有很酷的显示是,但是代码调试方面做得不如vs那样方便。有点不爽,这个小型的项目写下来,不过半天的时间,可调试却花掉了大半的时间。真是应了那句话,用20%的时间用来写BUG用80%的时间用来调试。

踩过的坑

1。注意文件占用问题,一个文件如果处于被打开状态是不能被再次打开的
2。注意变量重名问题,在逻辑没有问题的前提下,如果变量不慎重名,那这种在循环中逻辑bug就真的要靠足够的耐心、细致才可以搞定
3。注意php和html等前端语言在一起时运行的逻辑顺序。不然会出现无语法问题的逻辑BUG
4。注意文件组织结构和分类存储,不然在项目达到一定程度后寻找相关的功能代码文件就会是一件令人抓狂的过程。


   转载规则


《PHP小项目》 Evolyutsiya 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录