怎麼用PHP+sqlite3驗證登入使用者名稱和密碼

來源:互聯網
上載者:User

標籤: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驗證登入使用者名稱和密碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.