PHP+sqlite3验证登录用户名和密码

   2016-10-31 0
核心提示:php操作sqlite3数据库相关概念Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一

php操作sqlite3数据库

相关概念

Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。

实例

PHP创建sqlite数据库

创建一个MyDB类并继承SQLite3类,并实例化一个db对象。

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }
?>

PHP创建表

通过db的exec方法执行sql语句。

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }

   $sql =<<<EOF
      CREATE TABLE COMPANY
      (ID INT PRIMARY KEY     NOT NULL,
      NAME           TEXT    NOT NULL,
      AGE            INT     NOT NULL,
      ADDRESS        CHAR(50),
      SALARY         REAL);
EOF;

   $ret = $db->exec($sql);
   if(!$ret){
      echo $db->lastErrorMsg();
   } else {
      echo "Table created successfully\n";
   }
   $db->close();
?>

PHP插入数据

与创建表的方法一样,都是通过db的exec方法执行sql语句。

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }

   $sql =<<<EOF
      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (1, 'Paul', 32, 'California', 20000.00 );

      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 );

      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );

      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );
EOF;

   $ret = $db->exec($sql);
   if(!$ret){
      echo $db->lastErrorMsg();
   } else {
      echo "Records created successfully\n";
   }
   $db->close();
?>

实战

整个登录程序的结构分别为登录页面,用户中心,连接数据库。

由于没添加注册功能,所以使用create.php创建一个用户

create.php

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('sqlite3.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }

   $sql =<<<EOF
      CREATE TABLE COMPANY
      (userid INT PRIMARY KEY     NOT NULL,
      username           TEXT    NOT NULL,
      password           TEXT     NOT NULL);
EOF;

   $ret = $db->exec($sql);
   if(!$ret){
      echo $db->lastErrorMsg();
   } else {
      echo "Table created successfully\n";
   }
   
   
   $sql2 =<<<EOF
      INSERT INTO COMPANY (userid,username,password)
      VALUES (1, 'popy32', $(MD5("popy32")));
EOF;

$ret = $db->exec($sql2);
   if(!$ret){
      echo $db->lastErrorMsg();
   } else {
      echo "Insert data successfully\n";
   }  
   $db->close();
?>

login.php(登录处理)

负责生成登录页面和验证登录的信息

<html>  
<head>用户登录</head>  
<form name="LoginForm" method="post" action="login.php" on
Submit="return InputCheck(this)">  
<p>  
<label for="username" class="label">用户名:</label>  
<input id="username" name="username" type="text" class="input" />  
<p/>  
<p>  
<label for="password" class="label">密 码:</label>  
<input id="password" name="password" type="password" class="input" />  
<p/>  
<p>  
<input type="submit" name="submit" value=" 登录 " class="left" />  
</p>  
</form>  
</html>

<?php  
header("Content-Type: text/html; charset=utf-8");
//登录  
if(!isset($_POST['submit'])){  
    exit('非法访问!');  
}  
$username = htmlspecialchars($_POST['username']);  
$password = MD5($_POST['password']);  
  
//包含数据库连接文件  
include('conn.php');  

$sql =<<<EOF
      SELECT * from COMPANY;
EOF;
 
$ret = $db->exec($sql);

//检测用户名及密码是否正确 
if(($row['username']==$username)&&($row['password']==$password)){  
 //登录成功 
		
    session_start();  
    $_SESSION['username'] = $username;  
    $_SESSION['userid'] = $row['userid'];  
    echo $username,' 欢迎你!进入 <a href=http://www.tuicool.com/articles/"my.php">用户中心
'; echo '点击此处 <a href=http://www.tuicool.com/articles/"login.php?action=logout">注销 登录!
'; exit; $db->close(); } else { exit('登录失败!点击此处 <a href="javascript:history.back(-1);">返回</a> 重试'); $db->close(); } //注销登录 if($_GET['action'] == "logout"){ unset($_SESSION['userid']); unset($_SESSION['username']); echo '注销登录成功!点击此处 <a href=http://www.tuicool.com/articles/"login.html">登录'; exit; } ?>

my.php(用户中心)

<?php
header("Content-Type: text/html; charset=utf-8");  
session_start();  
  
//检测是否登录,若没登录则转向登录界面  
if(!isset($_SESSION['userid'])){  
    header("Location:login.php");  
    exit();  
}  
//包含数据库连接文件  
include('conn.php');  
$userid = $_SESSION['userid'];  
$username = $_SESSION['username'];  
 
echo '用户信息:<br />';  
echo '用户ID:',$userid,'<br />';  
echo '用户名:',$username,'<br />';  
echo '<a href=http://www.tuicool.com/articles/"login.php?action=logout">注销 登录
'; ?>

conn.php(连接数据库)

<?php

header("Content-Type: text/html; charset=utf-8");
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('sqlite3.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      die("数据库访问错误".$db->lastErrorMsg());   
   } 

?>
 
标签: SQLite PHP
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • Rust 连接 SQLite 数据库
    Rust 连接 SQLite 数据库
    使用 Rust 语言连接操作 SQLite 数据库,我使用 rusqlite 这个 crate。看例子:首先,使用 cargo 创建一个 Rust 项目,然后添加依赖 rusqlite: 来到 main.rs,其余所有的代码都写在这里。首先引入 rusqlite 相关的类型,并建立一个 Person struct:Person
    02-09
  • delphi操作sqlite3
    Delphi SQLite 简明无废话上手指南SQLite下载http://www.sqlite.org/download.htmlSQLite FAQhttp://www.sqlitecn.org/faq.htmlSQLite中文论坛http://sqlite.com.cn/bbs/index.aspSQLite入门与分析http://www.cnblogs.com/hustcat/archive/2009/02/12/1389
    02-09
  • cocos2d-x 添加sqlite3 时 报 lua_Number 错误
    1 f:\cocos2d-x\cocos2d-x\external\lua\lua\lua.h(99) : 参见“lua_Number”的声明1f:\cocos2d-x\cocos2d-x\external\sqlite3-ext\lsqlite3.c(1272): error C2146: 语法错误: 缺少“;”(在标识符“n”的前面)1f:\cocos2d-x\cocos2d-x\external\sqlite3-ext\l
    02-09
  • 纯 Swift 封装的 SQLite 框架:SQLite.swift
    纯 Swift 封装的 SQLite 框架:SQLite.swift
    SQLite.swift 是一个使用纯 Swift 语言封装 SQLite3 的操作框架。特性:简单的查询和参数绑定接口安全、自动类型数据访问隐式提交和回滚接口开发者友好的错误处理和调试文档完善通过广泛测试示例代码:?1234567891011121314151617181920212223242526272829303
    02-09
  • DISQLite3 - A self-contained, embeddable, z
    DISQLite3 implements a self-contained, embeddable, zero-configuration SQL database engine for Delphi (Embarcadero / CodeGear / Borland).Features include:ACID transactions, even after system crashes and power failures.Zero-configuration
    02-09
  • 第十二篇、Swift_Sqlite的使用
     import UIKitclass SQLiteManager: NSObject {private static let manager: SQLiteManager = SQLiteManager()/// 单粒class func shareManager() -SQLiteManager {return manager}// 数据库对象private var db:COpaquePointer = nil// 创建一个串行队列priv
    02-08
  • electron + go 如何从sqlite获取数据
    electron + go 如何从sqlite获取数据
    electron + go 如何从sqlite获取数据2023-01-04 14:51 轩脉刃 阅读(0) 评论(0) 编辑 收藏 举报我现在的数据在sqlite中,保存在mac本地的一个文件中。用了electron+vue搭建了一个客户端。我大概希望是这样的逻辑,先加载本地db文件,然后再获取数据。这
    02-08
  • busybox filesystem httpd php-5.5.31 sqlite3 webserver
    busybox filesystem httpd php-5.5.31 sqlite3
    /******************************************************************** *busybox filesystem httpd php-5.5.31 sqlite3 webserver * 声明: * 本文主要是记录使用httpd、php5、sqlite3搭建php web服务器。 * * 2016-1-24 深圳 南山平山村 曾剑锋 *********
    02-08
  • cocos2dx lua bug之module 'lsqlite3'
    05-27 15:41:01.360: D/cocos2d-x debug info(7261): [LUA-print] ----------------------------------------05-27 15:41:01.360: D/cocos2d-x debug info(7261): [LUA-print] LUA ERROR: [string "src/bqsframework/GameUpdate.lua"]:41: module 'lsqlite3&#
    02-07
  • php使用pdo连接sqlite3的配置示例
    这篇文章主要介绍了php使用pdo连接sqlite3的配置方法,结合实例形式较为详细的分析了php基于pdo操作sqlite3的相关注意事项,需要的朋友可以参考下
点击排行