登录注册的学习

Mysql中经常用来存储日期的数据类型有三种:Date、Datetime、Timestamp。Date数据类型:用来存储没有时间的日期。Mysql获取和显示这个类型的格式为“YYYY-MM-DD”。支持的时间范围为“1000-00-00”到“9999-12-31”。Datetime类型:存储既有日期又有时间的数据。存储和显示的格式为 “YYYY-MM-DD HH:MM:SS”。支持的时间范围是“1000-00-00 00:00:00”到“9999-12-31 23:59:5Timestamp类型:也是存储既有日期又有时间的数据。存储和显示的格式跟Datetime一样。支持的时间范围是“1970-01-01 00:00:01”到“2038-01-19 03:14:07”。


//第一个页面:注册页面。
//进行注册和登录
<body>
<form action="chuli.php" method="post"> //一般使用post方法安全 点击注册按钮后页面会跳转到chuli.php这个页面 get方法有字数限制。
  <div>用户名:<input type="text" name="uid"/></div>
  <div>密码:<input type="text" name="pwd"/></div>
  <div>姓名:<input type="text" name="name"/></div>
  <div>性别:
  男<input type="radio" name="sex" value="1"/>
  女<input type="radio" name="sex" value="0"/>
</div>
  <div>生日:<input type="text" name="birthday "/></div>
  <div><input type="submit" value="注册"/></div>
</form>
</body>






//所以再建一个点击注册后要跳转的chuli.php这个页面,因为这个页面是把用户提交的五个数据拿过来然后再往数据库里送就可以了。
//所以这个页面不需要用户看到,这个页面只是个后台操作。所以这个页面就只有php代码


//第二个页面:注册页面的处理页面。
<?php

//1.取提交的数据

$uid =$_POST["uid"];        //这个$_POST[];方法在存的时候是以表单的name为索引,以表单的值为值来做成一个数组。
$pwd =$_POST["pwd"];       //想取什么值就去找原来的登录界面的name是什么。根据原name来取值
$name =$_POST["name"];
$sex =$_POST["sex"];
$birthday =$_POST["birthday"];

//2.向数据库里面写入
$db =new MYSQLi("localhost","root","123","t_90052");
$sql ="insert into users values ('{$uid}' , '{$pwd}' , '{$name}' , {$sex} , '{$birthday}' )";
//往数据库里面添加数据的sql语句的括号中的时候,字符串外层是要加引号的,要是日期时间也要在外层加引号的。
//如果添加的整数啊,小数啊或者布尔型数据的话就不用在外层加引号,直接写就行了。
if( $db->query($sql) )
{
  echo "success";
}
else
{
  echo "fail";
}



//第三个页面:登录页面。
<body>
  <h1>登录页面</h1>
  <form action="denglu.php" method="post">
    <div>用户名:<input type="text" name="uid"/></div>
    <div>密码:<input type ="password" name="pwd"/></div>
    <input type="submit" value="登录"/>
  </form>
</body>



//第四个页面:登录的后台处理页面。
//先用$_POST[""];方法来取登录页面的数据

<?php
$uid =$_POST["uid"];             
$pwd = $_POST["pwd"];


$db= new MYSQLi("localhost","root","123","t_90052");
$sql = "select count(*) from users where uid='{$uid}' and pwd='{$pwd}' ";
$result =$db->query($sql);
$arr = $result->fetch_row();  //无论查什么东西,只要用fetch_all();就是返回二维的数组。只要用fetch_row();就返回一维的数组。
//无论查什么数据,数据都会在这个$arr数组里面存着,以数组的方式输出。
//所以我们知道了,这个$arr数组取索引0就能取到要查的count(*)数据。

if($arr[0])
{
  echo "登录成功";
}
else
{
  echo "登录失败";
}
// # 井号在sql语句中表示的是注释的意思
//可以在login.php页面的用户名文本框内输入 a' or 1=1# 也可以登录成功。因为1=1是恒成立的
//所以会登录成功 从而显示所有数据。叫SQL注入攻击。


//另外一种方式
$db = new MYSQLi("localhost","root","123","t_90052");
$sql ="select pwd from users where uid='{$uid}' ";
$result =$db->query($sql);
$arr = $result->fetch_row();
if($arr[0] ==$pwd && !empty($pwd) ) //如果输入一个数据库里没有的用户名而密码又是空也会登录成功
{
  echo "登录成功";      //因为库里面没有的用户名它的值就是为空,所以符合条件,就登录成功。
}
else
{
  echo "登录失败";      //用这种方式可以防止SQL代码注入攻击。
}



//嵌入的这些php代码,只要是你在这个当前页面上嵌入的。无论你是在哪个位置嵌入的,都相当于在同
//一个页面上,就是一句一句话顺下来的。上面定义了变量了如果在同一个页面的话就可以不用再定义了。













































































































 
posted @ 2017-06-05 11:06  mengqiaini  阅读(142)  评论(0编辑  收藏  举报