[PHP基础] 与MySQL的连接、精简树洞网站(注册、登录以及留言功能的实现)

PHP操控MySQL

在php中使用mysqli 与MySQL 建立连接

查看phpinfo.php页面,发现默认是开启mysqli支持的
在这里插入图片描述

登录phpMyAdmin数据库管理页面[root/root]

在这里插入图片描述
在这里插入图片描述
创建数据库unable
在这里插入图片描述
新建数据库表users,存储会员信息
在这里插入图片描述
创建成功
在这里插入图片描述
插入数据
在这里插入图片描述
查看数据
在这里插入图片描述

创建表messages,存储留言信息
在这里插入图片描述

建立连接:mysqli_connect()函数

参数:IP地址、用户名、密码、数据库名
返回一个连接对象

mysqli_connect_error()函数:返回连接失败的错误信息
mysqli_close(conn)函数:关闭数据库连接,conn:连接对象

<meta charset = "utf-8">
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "unable";
 
// 创建连接
$conn = mysqli_connect($servername, $username, $password,$dbname);
 
// 检测连接
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "连接成功";
mysqli_close($conn);//关闭数据库连接
?>

在这里插入图片描述
失败则会返回错误信息并结束程序
在这里插入图片描述

执行sql语句:mysqli_query()函数

参数:连接对象,sql语句,返回一个对象

mysqli_error(conn):sql语句执行的错误信息,conn:连接对象
mysqli_fetch_assoc(results):从对象中获取值,以关联数组的方式返回,一次只能拿一个

查询数据库内容

<meta charset = "utf-8">
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
 
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检测连接
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}
 
// 添加sql语句
$sql = "select * from users";
if ($results = mysqli_query($conn, $sql)) {
 while ($result = mysqli_fetch_assoc($results)){
        //从对象中获取属性,以关联数组的方式返回,一次只能拿一个数据
        var_dump($result);
    } 
} else {
    echo "错误: " . mysqli_error($conn);
} 
mysqli_close($conn);
?>

在这里插入图片描述

精简树洞网站的实现

大概思路:设计两个数据库表,一个users用来存储用户信息,一个messages用来存储留言信息。具体创建参考上面。
设计目的:孤独症患者可以在里面发一些自己的心里话,比如:感情问题。(手动狗头)哈哈哈哈哈哈哈。
在这里插入图片描述

网站首页:index.php

是查看留言的地方,没有登陆时具有注册和登录两个选项,用户不用进行登录就可以查看留言,但是登录之后才可以进行留言,有请留言这个选项,还可以点击用户名返回个人中心

<?php
include "./member/connection.php";
?>
<html>
<head>
 <title>unable树洞首页</title>
 <meta charset="utf-8">
</head>
<body>
<h1>欢迎来到unable树洞</h1>
<?php
if(isset($_COOKIE["name"])) {
 echo "欢迎您!"."<a href='./member/index.php'>".$_COOKIE["name"]."</a>"."    "; 
 echo "<a href='./addmsg.php'>请留言</a>";
}else{
 echo "<a href='./member/login.php'>登录</a>"."     ";
 echo "<a href='./member/register.php'>注册</a>";
}
echo "<hr>";
$sql = "select * from messages";
if ($results = mysqli_query($conn,$sql)) {
 if (mysqli_num_rows($results) > 0){
  echo "<table border=2>";
  echo "<tr><td>ID</td><td>TITLE</td><td>AUTHOR</td></tr>";
  while ($result = mysqli_fetch_assoc($results)) {
   $id = $result['id'];
   echo "<tr><td>{$id}</td><td> <a href='./showmsg.php?id={$id}'>{$result['title']}</a> </td><td>{$result['name']}</td></tr>";
  }
  echo "</table>";
 }else{
  echo "暂无留言内容";
 }
}else{
 echo mysqli_error($conn);
}
?>
</body>
</html>
<?php
mysqli_close($conn);
?>

注册页面:register.php

用户名不能重复,两次密码输入必须一致

<html>
<head>
 <title>unable树洞注册</title>
 <meta charset="utf-8">
</head>
<body>
<h1>欢迎注册unable树洞</h1>
<form action="./addUser.php" method="post">
 用户名:<input type="text" name="userName"><br>
 密码:<input type="password" name="userPass1"><br>
 确认密码:<input type="password" name="userPass2"><br>
 <input type="submit" name="userSubmit" value="注册">
</form>
</body>
</html>

个人中心页面:index.php

登录成功之后可以跳转到个人中心页面,可以查看自己的基本信息,修改头像,注销登录,返回首页

<html>
<head>
 <title>unable树洞---个人中心</title>
 <meta charset="utf-8">
</head>
<body>
 <h1><a href='../index.php'>unable树洞---个人中心</a></h1>
<?php
include "./connection.php";
if (isset($_COOKIE["name"])) {
 $userName = $_COOKIE["name"];
 $sql = "select * from users where name ='". $userName."'";
 if ($results = mysqli_query($conn,$sql)) {
  if (mysqli_num_rows($results) > 0) {
   $result = mysqli_fetch_assoc($results);
   echo "<hr>"."欢迎您,".$result['name']."<a href='./logout.php'>注销登录</a>";
   echo "<hr>";
   echo "您的头像"."<img src='".$result['photo']."'>";
   echo "<a href='./update.php'>修改头像</a>"."<br>";
   echo "帐户余额:".$result["money"]."<span style='color:red'>请联系管理员</span>";
  }else{
   echo "该用户不存在";
  }
 }
}else{
 echo "<a href='./login.php'>请登录</a>";
}
?>
<hr>
</body>
</html>
<?php
mysqli_close($conn);
?> 

连接数据库功能:connection.php

将连接数据库的代码进行封装,方便利用

<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "unable";
if (!$conn = mysqli_connect($servername,$username,$password,$dbname)) {
 die(mysql_connect_error());
}
mysqli_set_charset($conn,'utf-8');//设置编码
?>

注册功能:addUser.php

注册功能的具体实现,注册成功后会设置cookie信息

<meta charset="utf-8">
<?php
include "./connection.php";
$userName = $_POST['userName'];
$userPass = $_POST["userPass1"];
 if (isset($_POST["userSubmit"])) {
  if($_POST["userPass1"] === $_POST["userPass2"] && isset($_POST["userPass1"]) && isset($_POST["userPass2"]) && isset($_POST["userName"])) {
    $sql = "insert into users(name,password) values('".$userName."','".md5($userPass)."')";
   if (!mysqli_query($conn,$sql)) {
    echo "用户名重复:"."<a href='./register.php'>返回注册页面</a>"; 
   }else{
    echo "注册成功,<a href='./index.php'>返回个人中心</a>";
    setcookie("name","$userName",time()+3600,"/");
   }
  }else{
   echo "信息错误,请重新输入:"."<a href='./register.php'>返回注册页面</a>";
  }
 }else{
  header('Location:./register.php');//重定向
 }
?>
<?php
mysqli_close($conn);
?> 

更新头像功能:update.php

更新头像的具体实现,上传图片

<meta charset="utf-8">
<?php
include "./connection.php";
if (isset($_POST['userSubmit'])) {//如果是在表单提交的
 $userName = $_COOKIE['name'];
 $file_path = $_FILES["userFileUp"]["tmp_name"];//获取缓存路径
 $path = ".\\images\\".$_FILES["userFileUp"]["name"];//设置文件的保存路径
 if (move_uploaded_file($file_path, $path)) {
  $path = mysqli_real_escape_string($conn,$path);
  $sql = "update users set photo='".$path."'where name='".$userName."'";
  if (mysqli_query($conn,$sql)) {
   echo "图片上传成功,<a href='./index.php'>返回个人中心</a>";
  }else{
   die(mysqli_error($conn));
  }
 }else{
  echo "图片上传失败";
 }
}else{
 $html = <<<HTML
<meta charset="utf-8">
<form action="" method="post" enctype="multipart/form-data">
  上传文件:<input type="file" name="userFileUp">
  <input type="submit" name="userSubmit" value="提交">
</form>
HTML;
echo $html;
}
?>
<?php
mysqli_close($conn);
?> 

登录页面:login.php

登录功能的具体实现

<meta charset="utf-8">
<?php
include "./connection.php";
if (isset($_POST["userSubmit"])) {
 $userName = $_POST["userName"];
 $userPass = $_POST["userPass"];
 $sql = "select * from users where name = '".$userName."'and password = '".md5($userPass)."'";
 if ($results = mysqli_query($conn,$sql)) {
  if (mysqli_num_rows($results) > 0) {
   setcookie("name","$userName",time()+3600,"/");
   echo "登录成功,<a href='./index.php'>进入个人中心</a>";
  }else{
   echo "用户名或密码错误,<a href='./login.php'>请重新登录</a>";
  }
 }else{
  die(mysqli_error($conn));
 }
}else{
 $html = <<<HTML
<meta charset="utf-8"> 
<form action="" method="post">
 用户名:<input type="text" name="userName"><br>
 密码:<input type="password" name="userPass"><br>
 <input type="submit" name="userSubmit" value="登录">
</form>
HTML;
echo $html;
}
?>
<?php
mysqli_close($conn);
?> 

注销登录功能:logout.php

注销登录的具体实现

<?php
if (setcookie('name',$_COOKIE["name"],time()-3600,"/")) {
 header("Location:../index.php");//直接重定向到首页
}
?>

留言功能:addmsg.php

留言功能的具体实现,点击请留言之后会跳转到这个页面,输入之后点击提交即可成功,返回首页进行查看

<html>
<head>
 <title>unable论坛</title>
 <meta charset="utf-8">
</head>
<body>
<h1><a href="./index.php">unable论坛</a></h1>
</body>
</html>
<?php
include "./member/connection.php";
if ($_COOKIE['name']) {
 $html = <<<HTML
 <form method="post">
  标题:<input type="text" name="title">
  <br><br>
  内容:<textarea name="content"></textarea>
  <input type="submit" name="submit" value="提交">
 </form>
HTML;
echo $html;
if (isset($_POST['submit']) && isset($_POST['title'])) {
 $username = $_COOKIE['name'];
 $title = $_POST['title'];
 $content = $_POST['content'];
 $sql = "insert into messages(`name`,`title`,`content`) values('".$username."','".$title."','".$content."')";
 if ($results = mysqli_query($conn,$sql)) {
  echo "留言成功,<a href='./'>返回首页</a>";
 }else{
  echo mysqli_error($conn);
 }
}
}else{
 echo "<a href = './index.php'>请登录</a>";
}
?>
<?php
mysqli_close($conn);
?>

查看留言内容页面:showmsg.php

在首页只是显示title信息,点击title信息可以查看里面的内容,就是这个页面

<html>
<head>
 <title>unable树洞</title>
 <meta charset="utf-8">
</head>
<body>
<h1><a href="./index.php">unable树洞</a></h1>
</body>
</html>
<?php
include "./member/connection.php";
if (isset($_GET["id"])) {
 $id = $_GET["id"];
 $sql = "select * from messages where id=".$id;
 if ($results = mysqli_query($conn,$sql)) {
  $result = mysqli_fetch_assoc($results);
  echo $result['name'].":".$result['title']."<hr>";
  echo $result['content'];
 }else{
  echo mysqli_error($conn);
 }
}
?>
<?php
mysqli_close($conn);
?>
进行功能测试:
  • 注册:
    进入首页,会显示已有的留言内容
    在这里插入图片描述
    点击注册
    在这里插入图片描述
    点击注册
    在这里插入图片描述
    注册成功之后点击返回个人中心
    在这里插入图片描述
    点击标题可以返回首页(注意首页变化)
    在这里插入图片描述
    点击用户名可以返回个人中心
    在这里插入图片描述
    点击修改头像可以上传头像
    在这里插入图片描述
    选择文件后提交
    在这里插入图片描述
    返回个人中心
    在这里插入图片描述
    选择注销登录,会直接跳转到首页
    在这里插入图片描述
  • 登录
    点击登录
    在这里插入图片描述
    使用刚才注册好的用户名和密码,登录
    在这里插入图片描述
    进入个人中心,发现没啥变化
    在这里插入图片描述
  • 留言
    点击标题,进入首页
    在这里插入图片描述
    点击请留言,进入留言页面(打广告小心直接被叉出去哦~)
    在这里插入图片描述
    提交留言信息
    在这里插入图片描述
    返回首页查看
    在这里插入图片描述
    点击title查看内容
    在这里插入图片描述
    点击标题可以返回首页
    在这里插入图片描述
    PS:还可以查看他人留言哦,不登陆也能查看~
    ok,大概的逻辑就是这样,当然还是有不足的地方,欢迎各位小伙伴一起讨论交流~
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值