標籤:ted values sqlite turn insert action primary not form
Session:在電腦中,尤其是在網路應用中,稱為“會話控制”。Session Object Storage Service特定使用者會話所需的屬性及配置資訊。這樣,當使用者在應用程式的 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驗證登入使用者名稱和密碼