php原生开发新闻站之后台登录功能

我们之前的课程给大家介绍了做登录功能之前的所有准备,导入模板,创建数据库,之前的课程都不把这些的准备都已经完成了,那么接下来就是我们要开始做登录功能了!

首先我们要创建一个login.php文件,这个文件可以用来写登录页面的判断和验证,也可以把登录的html部分和登录验证判断的php文件写在一起,因为我们都知道php文件里面可以写html代码!但是我们还是推荐分开来写!

创建好login.php文件以后,首先要做的就是连接数据库,因为后面的验证都是需要和数据做对比!

在这里要声明一下,如果你的登录页面有验证码的话,那么在每个页面的一开始必须开启 session_start();不然验证码验证不了,我们这里有验证码所以我开启了session_start();

代码如下:

<?php
session_start();
// 连接mysql数据库
$link = mysqli_connect('localhost', 'root', 'root');
if (!$link) {
    echo "connect mysql error!";
    exit();
}
// 选中数据库 news为数据库的名字
$db_selected = mysqli_select_db($link, 'news');
if (!$db_selected) {
    echo "<br>selected db error!";
    exit();
}
// 设置mysql字符集 为 utf8
$link->query("set names utf8");

接下来就是要获取表单传过来的数据了,因为我们要把用户输入在表单的用户名以及密码获取到,然后在进行跟数据库做对比,看看是否完全一致!

<?php
$username = $_POST['username'];//获取用户名
$password = $_POST['password'];//获取密码
$code = $_POST['code'];

至于是post传输数据还是get传输数据,这个要根据你form表单里面的method的属性了。我们这里是post!

数据已经获取到了 ,那么接着就是需要验证了,看看用户输入的数据是否跟数据库的数据完全一致,这样才能判断能不能让用户登录 使用SQL语句进行查询,代码如下:

<?php
if(!empty($_POST)){
    // 查询数据库中是否存在用户信息
    $sql = "select * from user where username = '{$username}' and password = '{$password}'";
    $result = mysqli_query($link,$sql);
    $user = mysqli_fetch_array($result,MYSQL_ASSOC);}

查询到数据以后,进行对两组数据进行对比:

if($user){
    header("Location: index.php");
}else{
    echo "<script>alert('账户或者密码错误!重新填写')</script>";
}

到这里我们都是验证了用户名以及密码,那么我们这样有验证码,所以我们还要对验证码进行验证,这里我用了一验证码类

1738.png

code.zip

这里也分享给大家!

然后我们要对验证码进行验证,代码如下:

if(($_SESSION['authcode']) !== ($code)){               //验证码作对比,验证码页面跟输入的验证码对比
    echo "<script>alert('验证码错误!重新填写')</script>";

说明一下:这里的$_SESSION['authcode'] 是code验证码类中的保存的验证码,我们要通过用户输入与保存的验证,结果一致就通过!

OK! 到这里我们的登录功能就完成了!

继续学习
||
<?php session_start(); // 连接mysql数据库 $link = mysqli_connect('localhost', 'root', 'root'); if (!$link) { echo "connect mysql error!"; exit(); } // 选中数据库 news为数据库的名字 $db_selected = mysqli_select_db($link, 'news'); if (!$db_selected) { echo "<br>selected db error!"; exit(); } // 设置mysql字符集 为 utf8 $link->query("set names utf8"); if(!empty($_POST)){ $username = $_POST['username'];//获取用户名 $password = $_POST['password'];//获取密码 $code = $_POST['code']; // 查询数据库中是否存在用户信息 $sql = "select * from user where username = '{$username}' and password = '{$password}'"; $result = mysqli_query($link,$sql); $user = mysqli_fetch_array($result,MYSQL_ASSOC); if(($_SESSION['authcode']) !== ($code)){ //验证码作对比,验证码页面跟输入的验证码对比 echo "<script>alert('验证码错误!重新填写')</script>"; }elseif($user){ header("Location: index.php"); }else{ echo "<script>alert('账户或者密码错误!重新填写')</script>"; }
提交重置代码
高并发千万级数据库系统解决方案
  • 推荐课程
  • 评论
  • 问答
  • 笔记
  • 课件下载

开头就bug

为什么照着复制都错了

2年前    添加回复 0

非你不可

连接数据库的php名是什么也不说,一节一节的代码贴出来,看的人都懵逼,你们确定这样写 的教程新人看得懂??

2年前    添加回复 0

t_mac

验证码怎么搞

6年前    添加回复 0

关于验证码

[最新 逆旅行人 的回答] $_SESSION["Session名称"]=变量或字符串信息;

时间:2年前

登录问题

[最新 灭绝师太 的回答] 看login控制器对用户信息的验证,是否严谨正确

时间:3年前

后台登入文件结构

[最新 全彬 的回答] 不是呀 这几个文件怎么组织 放在一个文件里嘛? 还是几个文件?几个文件的话 文件名是什么?

时间:5年前

这个获取的是啥

[最新 行者小司 的回答] 这个时候你可以打印  输出 $_POST 的所有值,这个时候就能看到了,当然你也可以打印出 $_REQUEST 的值,$_REQUEST包括了 $_POST 和 $_GET的这两种状态下的所有值

时间:6年前

课件暂不提供下载,工作人员正在整理中,后期请多关注该课程~