Session:在計算機中,尤爲是在網絡應用中,稱爲「會話控制」。Session 對象存儲特定用戶會話所需的屬性及配置信息。這樣,當用戶在應用程序的 Web 頁之間跳轉時,存儲在 Session 對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。當用戶請求來自應用程序的 Web 頁時,若是該用戶尚未會話,則 Web 服務器將自動建立一個 Session 對象。當會話過時或被放棄後,服務器將終止該會話。javascript
實例 PHP建立sqlite數據庫php
建立一個MyDB類並繼承SQLite3類,並實例化一個db對象。html
<?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"; } ?>java
PHP建立表sql
經過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語句。session
<?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(); ?>post
實戰
整個登陸程序的結構分別爲登陸頁面,用戶中心,鏈接數據庫。
因爲沒添加註冊功能,因此使用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()); } ?>