删除了一些不必要的东西,三个界面的后端简化为一个(感觉简化之后的代码看着好难受)

    数据库名:mydb
    三个表:
    用户信息表:
    member(

    username varchar(20) not null,

    password varchar(40) not null //之前采用的为vchar(20)因使用了SHA-1加密故需40位或以上

    );
    管理员信息表:
    admin(
    username varchar(20) not null,
    userpass varchar(40) not null
    );
    留言信息表:
    message(
    id int(4) not null auto_increment primary key,//id这个很重要,不只是为了显示该信息为第几条,会让编写 author varchar(20) not null, del.php时方便很多。
    addtime datetime not null,
    content varchar(1000) not null
    )”;

    主界面前端,登陆后进入用户界面,区别:可发信息。管理界面大同小异,区别:加了个超链接可删除留言








    网线插嘴,法力无边



    <?php if(isset($_SESSION[‘username’])||isset($_SESSION[‘guanli’]))
    {echo”[退出登录]“;
    echo”

    留言内容








    “;}else{
    echo” [登录]
    [注册]
    [苟管理]“;
    }
    ?>





    后端

    <?php
    header(“Content-Type: text/html;charset=utf-8”);
    session_start();
    $link = mysqli_connect(“127.0.0.1”,”root”,”root”);
    mysqli_select_db($link,”mydb”);
    $query = “select * from message”;
    $result = mysqli_query($link,$query);
    if( mysqli_num_rows($result) < 1){
    echo “ 目前数据表中还没有任何留言!”;
    }else{
    $result = mysqli_query($link,$query);
    $datanum = mysqli_num_rows($result);
    for( $i = 1; $i <= $datanum; $i++)
    {
    $info = mysqli_fetch_array($result);
    echo “->[“.$info[‘author’].”]于”.$info[‘addtime’].”说:
    “;
    if(isset($_SESSION[‘guanli’]))
    {
    echo”[删除]“;
    }
    echo “ “.$info[‘content’].”
    “;
    echo “


    “;
    }
    echo ““;
    }
    mysqli_close($link)
    ?>

    登陆界面前端

















    用户登录
    用户姓名:
    用户密码:



    注册

    后端

    <?php
    include ‘conn.php’;
    session_start();
    if(isset($_POST[‘submit’]))
    {
    $username=$_POST[‘username’];
    $password=addslashes($_POST[‘password’]);//addslashes函数会在返回在预定义字符(’ “ \ NULL)之前添加反斜杠的字符串。
    $ahh=sha1($password.”smi1e”);//sha1加密,加了点盐
    var_dump($ahh);
    $sql=(“select username,password from member where username=’$username’ and password=’$ahh’”) or die(“sql语句执行失败”);
    $ar=$conn->query($sql);
    if($ar)
    {
    if($row=mysqli_fetch_array($ar))
    {
    $_SESSION[“username”]=$username;
    header(“location:index.php”);
    }
    else
    {
    echo “用户名或密码错误”;
    }
    }
    }
    ?>

    注册界面前端






















    会员注册 [返回登录页]
    会员ID
    密码
    确认密码



    后端

    <?php
    header(“Content-Type: text/html;charset=utf-8”);
    include ‘conn.php’;
    if(isset($_POST[‘submit’])&&$_POST[‘submit’]) {
    if($_POST[‘username’]==’’)
    {
    echo “用户名不能为空”;
    exit();
    }
    if($_POST[‘password’]==’’)
    {
    echo “密码不能为空”;
    exit();
    }
    if($_POST[‘realpass’]!=$_POST[‘password’])
    {
    echo “两次密码输入不一致”;
    exit();
    }
    $password = addslashes($_POST[‘password’]);
    $ahh=sha1($password.”smi1e”);
    $sql=”insert into member(username,password) values(‘$_POST[username]’,’$ahh’)”;
    $ar=$conn->query($sql);
    if($ar)
    {
    header(“location:login.php”);
    }
    else
    {
    echo mysql_error();
    }
    }
    ?>

    管理员登录前端


















    管理员登录
    姓名:
    密码:




    后端

    <?php
    include ‘conn.php’;
    if(isset($_POST[‘submit’]))
    {
    $username=$_POST[‘username’];
    $password=addslashes($_POST[‘password’]);
    $ahh=sha1($password.”smi1e”);
    $sql=(“select username,userpass from admin where username=’$username’ and userpass=’$ahh’”) or die(“sql语句执行失败”);
    $ar=$conn->query($sql);
    if($ar)
    {
    if($row=mysqli_fetch_array($ar))
    {
    session_start();
    $_SESSION[‘guanli’]=$username;
    header(“location:index.php”);
    }
    else
    {
    echo “用户名或密码错误”;
    }
    }
    }
    ?>
    管理员账号只可手动添加不可注册

    实现留言发送功能

    <?php
    header(“Content-Type: text/html;charset=utf-8”);
    session_start();
    if(isset($_SESSION[‘guanli’]))
    {
    $name=$_SESSION[‘guanli’];
    }else{
    $name=$_SESSION[“username”];
    }
    $content = strip_tags($_POST[‘content’]);
    date_DEFAULT_timezone_set(‘PRC’);
    $addtime = date(“Y-m-d h:i:s”);
    $link = mysqli_connect(“127.0.0.1”,”root”,”root”);
    if($link)
    echo “ok!
    “;
    else {
    echo “bad!
    “;
    }
    mysqli_select_db($link,”mydb”);
    if($name==’’){
    echo ““;
    exit();
    }else{
    $insert = “insert into message(author,addtime,content) values(‘$name’,’$addtime’,’$content’)”;
    mysqli_query($link,$insert);
    mysqli_close($link);
    echo ““;
    }
    ?>

    实现删除功能

    <?php
    header(“Content-Type: text/html;charset=utf-8”);
    session_start();
    include ‘conn.php’;
    if(!isset($_SESSION[‘guanli’]))
    {
    echo “ERROR”;
    exit();
    }else{
    $id=$_GET[id];
    $query=”delete from message where id=$id”;
    $conn->query($query);
    mysqli_close($link);
    echo ““;
    }
    ?>
    //我™真是个傻逼明明用isset判断$_session[‘guanli’]是否为空就行了,硬是没想到,整了什么判断session内存的是不是管理表里的,还想着把id传过来的时候加密然后再解密。⑧说了猪都比我聪明。
    实现退出登录功能

    <?php
    session_start();
    session_unset();
    session_destroy();
    header(“location:index.php”);
    ?>
    //在一篇文章里作者表示:session_destroy();销毁session但是存入session的数据还在,session_unset();释放数据,但是session还在,建议先释放后销毁。不清楚其可靠性如何不过加上没什么影响就加了个session_unset();
    Somethingelse
    conn.php
    <?php
    $servername = “localhost”;
    $username = “root”;
    $password = “root”;
    $dbname = “mydb”;
    $conn = new mysqli($servername, $username, $password, $dbname);
    ?>

    意义不明的另一个send.php(我也忘了我为啥整了个这个)//想起来了,这个是实现管理员的发送,除了没过滤以外没什么特殊之处,当时想的是苟管理可以为所欲为。已成废案。
    <?php
    header(“Content-Type: text/html;charset=utf-8”);
    session_start();
    $name=$_SESSION[“guanli”];
    $content = $_POST[“content”];
    date_DEFAULT_timezone_set(‘PRC’);
    $addtime = date(“Y-m-d h:i:s”);
    $link = mysqli_connect(“127.0.0.1”,”root”,”root”);
    if( $link)
    echo “ok!
    “;
    else {
    echo “bad!
    “;
    }
    mysqli_select_db($link,”mydb”);
    $insert = “insert into message(author,addtime,content) values(‘$name’,’$addtime’,’$content’)”;
    mysqli_query($link,$insert);
    mysqli_close($link);
    echo ““;
    ?>

    简单加了一些防御(有个锤子用)学了这么多天才弄成这个吊样,我太菜了。我身边有smi1e和12end这样的人,每天活着都感觉自卑。
    鸣谢12end的指点与帮助,东哥牛逼