资讯专栏INFORMATION COLUMN

三篇文章带你极速入门php(三)之php原生实现登陆注册

Hancock_Xu / 1750人阅读

摘要:看下成果纯天然,绝不添加任何添加剂以及化学成分我就是喜欢纯天然,不接受任何反驳关于本文用原生的和做了一个登陆注册,大概是可以窥见一般开发的样子了。

看下成果

ps:纯天然h5,绝不添加任何添加剂(css)以及化学成分(js)(<( ̄ ﹌  ̄)我就是喜欢纯天然,不接受任何反驳)

关于本文

用原生的php和html做了一个登陆注册,大概是可以窥见一般php开发的样子了。不过,low的地方区别提前说一下:

这个是多入口,一般程序都是单入口,单入口就是统一通过index.php进入,然后再引入其他文件,调用其代码,多入口就是每次通过不同文件进入(比如一会展示的login.php和register.php)

保留登陆信息用的是session,现在普遍是前后端分离,一般用cookie或者redis实现session的功能,很少直接使用session的

连接mysql使用的是mysqli,没有做封装,也没有使用pdo,除了能用没有其他优点了

这种样子的代码大概是上世纪的风格了,MVC都没用,看一看好了,真的开发再不济也要MVC分一下层

性能杠杆的,不要信任何框架的吹嘘,就性能而言,没有任何框架快得过原生。

准备工作

emmmm,首先用nginx或者Apache创建一个站点指向本地代码的目录,然后在host里配置127.0.0.1指向该站点。(这个就不教了啊,之前讲过),然后是一个user库的sql,和登陆和注册的前端代码页面(不好意思说这是代码):

sql

CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT "id",
  `username` varchar(64) NOT NULL DEFAULT "" COMMENT "账号",
  `password` varchar(64) NOT NULL DEFAULT "" COMMENT "密码",
  `nickname` varchar(64) NOT NULL DEFAULT "" COMMENT "昵称",
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

login.html




    
    Login


账 号
密 码
没有账号?注册

register.html




    
    Register


账 号
密 码
昵 称
正文

首页index.php

假设我们的网站有个首页,需要判断用户是否登陆,登陆就欢迎他,没有登陆就让他去登陆,这个思路我们这么写





    
    index


Hello 

这行session_start() 是开启session,必须在最开始写,保证我们可以使用session相关的功能

如果当前session里没有存用户的昵称,那我们就认为该用户没有登陆,跳转到登陆界面

跳转是通过header的方式,参数重location后边是目标地址

这段代码可以镶嵌在.php文件的html代码的任何一个地方,echo出来的字符在html中具有等同的功能

这样的就是前后端代码混杂,如果项目庞大之后非常难于维护

登陆部分login.php

这部分处理登陆请求,假设用户输入了账号密码这样的数据(前端和后端都应该对数据进行校验和处理,本文略去),然后拿到用户信息,判断用户密码是否正确,让用户成功登陆或者重新输入。

query($sql);
$user = $res->fetch_array();
if ($password_md5 == $user["password"]){
    $_SESSION["nickname"] = $user["nickname"];
    header("location:index.php");
}else{
    header("location:".getenv("HTTP_REFERER"));
}  

首先也是启用了session,因为登陆登陆成功之后要通过session保存用户信息这样才能在其他页面确认用户是已经登陆的状态了。

$_POST和$_GET是php自带的两个全局数组,保存了当前请求的post和get参数,比如这次登陆请求的from表单的传递用户名的input标签的name=username,并且请求方式是post,该参数就会在$_POST数组中,key是input标签的name,value是input标签的value。

业界通用的一个操作,服务器不要存用户的明文密码。本文通过用一个字符串拼接然后计算md5之后再保存(这只是一个比较简单的方式)

new MySQLi(地址,用户名,密码,库名,端口) 创建一个mysqli对象(mysqli是一个更安全更好用的替代原来mysql的扩展,mysql扩展已被弃用),这个对象可以操作mysql库。

$res = $db->query($sql); mysqli的对象$db运行query方法,执行参数的sql语句,这里的sql是查询用户名为用户输入用户名的数据,保存在结果对象$res里,再通过结果对象的fetch_array()方法,获取到结果保存为一个数组。

getenv("HTTP_REFERER") 获取环境变量,这里是取到上一个页面地址,用来做返回,如果用户登陆失败,返回到登陆界面。

注册部分register.php

这部分处理注册业务,注册理论上要控制用户名不能重复,可以通过mysql唯一索引或者代码处查询的方式保证唯一,本文采用查询的方式。

query($sql);
if ($res_select){
    header("location:".getenv("HTTP_REFERER"));
}
$sql = "insert into `user` (`username`,`password`,`nickname`) VALUES ("{$username}","{$password_md5}","{$nickname}")";
$res = $db->query($sql);
if ($res){
    header("location:login.html");
}else{
    header("location:".getenv("HTTP_REFERER"));
}  
看懂登陆,注册实现就很容易了,查找不到这个账号则表明该账号是可以注册的,新增一条数据就好了。
写在最后

三篇文章极速php算是写完了,大致的流程是这样

学一些简单的php语法(真心觉得php语法不用专门学,用到什么查什么 http://php.net/manual/zh/inde... 无所不能),能看懂就行了

装一下环境,开发环境用集成的就行,生产环境咱也碰不到啊

做个小demo,登陆注册真是不能再简单了,搬砖的工作大多也就是这样了,拿参数,走业务,跑sql,反结果。

ps:既然都看到这里了,不如顺便论述一下php的意义。我个人看法,抛去公司接手的是祖传代码这个情况之外,php作为一个快速迭代的语言选择是绝对没有问题的,用在项目初期或者创业型项目是最佳选择,更不用说如果做一些cms或者内容展示的项目,php根本就是为之而生的。不论是php是世界上最好的语言还是php已死,都是站在一个角度上的偏见,在不是很小的一个范围里,php还是一个很优的选择。
学一手php,怎么看都是不亏的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30021.html

相关文章

  • 文章带你极速入门php(二)迅速搭建php环境

    摘要:另本文目标是迅速建立集成环境用来开发,如果想要分开一点点搭建,自行百度就好了。本文不赘述,自行百度就完事了下载地址,选中或者版即可,下载完后安装上就好。 前言 今天讲一下php在windows,mac,linux上的集成环境搭建,环境这个事得对号入座,windows用phpstudy,mac用mamp,linux用lnmp一键安装,直接跳转对应的地方看就好了。 另:本文目标是迅速建立...

    Jackwoo 评论0 收藏0
  • 文章带你极速入门php(一)语法

    摘要:本文适合阅读用户有其他语言基础的童鞋看完语法教程来回顾一下的童鞋传送门,想全面看一下语法推荐这里毫无基础然而天资聪慧颇有慧根不要左顾右看说的就是你,老夫这里有一本从入门到放弃,观你根骨清奇两银子卖给你如何看完本文后你会收获到什么的变量的定义 本文适合阅读用户 有其他语言基础的童鞋 看完w3cschool语法教程来回顾一下的童鞋(传送门,想全面看一下php语法推荐这里) 毫无基础然而天...

    loostudy 评论0 收藏0
  • (快)开学了,各大编程语言在群里吵翻了天!

    摘要:我是由贝尔实验室的在年年间发明创造的,瞧,就他你们眼中的语言之父。与此同时,由于库函数的缺失,导致新手在开发任何一块小程序的时候都必须得亲力亲为。对了,我爸是微软,由和派生出来的面向对象的编程语言。对,我曾是世界上最好的编程语言。 ...

    bang590 评论0 收藏0
  • SegmentFault 技术周刊 Vol.40 - 2018,来学习一门新的编程语言吧!

    摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...

    caspar 评论0 收藏0
  • SegmentFault 技术周刊 Vol.40 - 2018,来学习一门新的编程语言吧!

    摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...

    nihao 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<