zoukankan      html  css  js  c++  java
  • php数据访问之注册登陆

    数据访问中的登陆和注册原理就是利用php来操作数据库中的数据表内容,进行增添和查询。

    1.注册

    这页面在HTML页面实现

    <body>

    <h1>注册</h1>

    <form action="chuli.php" method="post">       //action表示表单提交的路径, method表示提交方式,get方式会在地址栏显示提交内容,并且有长度限制,post方式则不
    <div>用户名:<input type="text" name="uid" /></div>       //注意这里的name,在提交后的php代码中会以name来辨识和获取数据
    <div>密码:<input type="text" name="pwd" /></div>
    <div>姓名:<input type="text" name="name" /></div>
    <div>性别:
    男<input type="radio" name="sex" value="1" />             //单选框的name值相同才能互斥实现单选,     
    女<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

    1.取提交的数据
    $uid = $_POST["uid"];                  //如果是get方式提交的表单,这里就是$_GET[];获取数据的关键就是靠标签的name值
    $pwd = $_POST["pwd"];
    $name = $_POST["name"];
    $sex = $_POST["sex"];
    $birthday = $_POST["birthday"];

    2.向数据库写入
    $db = new MySQLi("localhost","root","123","mydb");                   //链接数据库
    $sql = "insert into users values('{$uid}','{$pwd}','{$name}',{$sex},'{$birthday}',0,'')";   //写入SQL语句

    if($db->query($sql))                   //判断是否写入成功
    {
    echo "success";
    }
    else
    {
    echo "fail";
    }

    2.登陆

    首先也是要在HTML提交数据

    <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>

    现在就是在创建的denglu.php文件里来处理和查询数据

    <?php
    $uid = $_POST["uid"];                           //获取到HTML中的提交的数据
    $pwd = $_POST["pwd"];

    $db = new MySQLi("localhost","root","123","mydb");       //链接数据库

    这里会有两种方法,第一种方法会出现一点问题 ,先看代码
    $sql = "select count(*) from users where uid='{$uid}' and pwd='{$pwd}'";   //写入sql语句  

    $reslut = $db->query($sql);   
    $arr = $reslut->fetch_row();   

    if($arr[0])             //判断是否存在(count不为0就存在)
    {
    echo "登录成功";
    }
    else
    {
    echo "登录失败";
    }

    这里会出现问题,可能会出现SQL注入攻击的危险,因为当登陆时用户名填写 'a' or 1=1 #这样的恒等式时,会截取到数据库中的用户数据,造成数据库被盗取或攻击

    防止SQL注入攻击的方法有

    1.过滤用户的输入
    2.使用预处理语句
    3.写代码的时候尽量避免

    第二种方式

    $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 "登录失败";
    }

  • 相关阅读:
    Node buffer模块缓冲区
    Node url模块
    Node querystring
    Node fs模块同步读取写入追加
    Linux Shell 量的自增
    Compare, sort, and delete duplicate lines in Notepad ++
    PL SQL 基础
    Oracle alter table modify column Syntax example
    Oracle to_char格式化函数
    oracle to_char FM099999
  • 原文地址:https://www.cnblogs.com/du892294464/p/6769357.html
Copyright © 2011-2022 走看看