ps:纯自然h5,毫不添加任何添加剂(css)以及化学成分(js)(<( ̄ ﹌  ̄)我就是喜欢纯自然,不接受任何反驳)
php
用原生的php和html作了一个登录注册,大概是能够窥见通常php开发的样子了。不过,low的地方区别提早说一下:css
emmmm,首先用nginx或者Apache建立一个站点指向本地代码的目录,而后在host里配置127.0.0.1指向该站点。(这个就不教了啊,以前讲过),而后是一个user库的sql,和登录和注册的前端代码页面(很差意思说这是代码):html
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;
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <form action="login.php" method="post"> 帐 号 <input type="text" name="username"> <br> 密 码 <input type="password" name="password"> <br> <button type="submit">提交</button> </form> <a href="register.html">没有帐号?注册</a> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Register</title> </head> <body> <form action="register.php" method="post"> 帐 号 <input type="text" name="username"> <br> 密 码 <input type="password" name="password"> <br> 昵 称 <input type="text" name="nickname"> <br> <button type="submit">注册</button> </form> </body> </html>
<?php session_start(); if (!$_SESSION['nickname']) { header("location:login.html"); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> Hello <?php echo $_SESSION['nickname'] ?> </body> </html>
- 这行session_start() 是开启session,必须在最开始写,保证咱们可使用session相关的功能
- 若是当前session里没有存用户的昵称,那咱们就认为该用户没有登录,跳转到登录界面
- 跳转是经过header的方式,参数重location后边是目标地址
- <?php echo $_SESSION['nickname'] ?>这段代码能够镶嵌在.php文件的html代码的任何一个地方,echo出来的字符在html中具备等同的功能
- 这样的就是先后端代码混杂,若是项目庞大以后很是难于维护
<?php session_start(); $username = $_POST['username']; $password = $_POST['password']; $password_md5 = md5('study'.$password); //链接mysql $db = new MySQLi("localhost","root","root","allcanadmin",'8889'); $sql = "select * from `user` where `username`= '{$username}'"; $res = $db->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') 获取环境变量,这里是取到上一个页面地址,用来作返回,若是用户登录失败,返回到登录界面。
<?php $username = $_POST['username']; $password = $_POST['password']; $password_md5 = md5('study'.$password); $nickname = $_POST['nickname']; $db = new MySQLi("localhost","root","root","allcanadmin",'8889'); $sql_select = "select * from `user` where `username`= '{$username}'"; $res_select = $db->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算是写完了,大体的流程是这样mysql
ps:既然都看到这里了,不如顺便论述一下php的意义。我我的见解,抛去公司接手的是祖传代码这个状况以外,php做为一个快速迭代的语言选择是绝对没有问题的,用在项目初期或者创业型项目是最佳选择,更不用说若是作一些cms或者内容展现的项目,php根本就是为之而生的。不管是php是世界上最好的语言仍是php已死,都是站在一个角度上的偏见,在不是很小的一个范围里,php仍是一个很优的选择。
学一手php,怎么看都是不亏的。nginx