怎么用PHP+sqlite3验证登录用户名和密码
Posted 咸蛋超哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用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" onSubmit="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="my.php">用户中心</a><br />‘; echo ‘点击此处 <a href="login.php?action=logout">注销</a> 登录!<br />‘; 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="login.html">登录</a>‘; 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="login.php?action=logout">注销</a> 登录<br />‘; ?> 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()); } ?>
以上是关于怎么用PHP+sqlite3验证登录用户名和密码的主要内容,如果未能解决你的问题,请参考以下文章