Php與數據庫-----本地注冊登錄實例

一個人的價值,在于他貢獻了什么,而不在于他獲得了什么。
-------------愛因斯坦

首先我們在上一篇文章了解了數據庫,而Php當然要與數據庫結合起來才能發揮后端的效果。那么Php鏈接數據庫的流程是什么?

答案如下:

1.連接MySql服務器
2.選擇MySql數據庫
3.執行Sql語句
4.關閉結果集
5.關閉MySql服務器

流程和JDBC是一樣的,語言都是相通的。

由于我參考的數據使用了一些廢棄的方法,所以我在這里直接拿我寫的新版本來演示今天的實例。
在演示之前,我們需要做一些準備工作。

準備

1.Pc機(Windows10 64位,Chrome瀏覽器【運行軟件】,PhpStorm IDE【編寫代碼軟件】 ,xampp【LAMP環境】 ,Winscp【ssh管理器,只要能使用ssh的就行,不必要非是這個】)

  1. ubuntu16.04 騰訊云服務器 (如果你打算在本地測試,就不需要準備服務器了。)

安裝與配置

剛才提了幾種軟件大家都一一裝好啟動,今天的重點不是教大家裝軟件來著。

1.關閉lls服務

首先在瀏覽器訪問一下localhost這個地址,如果不是微軟的頁面就不必操作這個步驟,如果是微軟的頁面就需要關閉World Wide Web服務,Windows關閉服務的步驟也很簡單

右擊狀態欄選擇任務管理器,查看詳細信息,然后選擇服務選項卡,找到World Wide Web服務(找不到的話,就打開全部),右擊屬性,選擇禁用,然后應用就Ok

此時再訪問localhost,應該是請求不到的頁面

2.打開Apache服務

安裝xampp后,我們會得到一個xampp_start.exe的執行程序,點擊運行之后,就是一個終端界面,把他放在后臺運行就行。
此時我們的Web服務器已經啟動,再次訪問localhost
這時我們的地址會變成http://localhost/dashboard/
這其實是我們的服務器地址在C:\xampp\htdocs\dashboard(C:\xampps是你的xampp安裝目錄,htdocs這個文件夾會在xampp安裝目錄下找到,如果沒有,請卸載重裝,盡量裝在c盤)

本地.PNG

得到這樣的頁面,說明我們已經成功的啟動了服務器。

可以看到這個頁面右上角還有phpmyadmin的入口,點擊他,進入我們的本地數據庫

3.創建所需數據庫

這里我們在上一篇文章都已經說過怎么創建數據庫和表,添加數據了。
我這里直接創建了一個名叫surine的數據庫,建立了users表,并且添加了幾個數據里頭,當然你可以不添加(這是我運行的時候,注冊的用戶數據)


創建.PNG

新建項目

打開我們的PhpStorm,我直接在dashboard文件夾下新建了一個php文件夾,將項目建立在php中
我們新建兩個php文件,一個叫register.php 另一個叫Login.php

下面我將詳細介紹一下這兩個文件的內容

register.php[用戶注冊]
<!--CSS代碼,主要控制界面樣式,沒啥好說的-->
<style type="text/css">
    form{
    width:300px;
    background-color: #49eebe;
    margin-left:300px;
    margin-top:30px;
    padding:30px;
 }
 button{
    margin-top:20px;
 }
</style>

<!--Html代碼,主要設計了幾個表單,采用post方法-->
<form method="post">
<label>username:<input type="text" name="name"></label>
<br/><br/>
<label>password:<input type="password" name="pw"></label>
<br/><br/>
<label>confirm:<input type="password" name="repw"></label>
<button type="submit" name="submit">register</button>
</form>

<!--Php代碼-->
<?php
//第一步:使用mysqli_connect連接數據庫
//這個方法接受4個參數,第一個是主機名,填寫localhost,
//第二個和第三個是用戶名和密碼(mysql安裝時你都記得的,
//用戶是root,密碼是root的),第四個是我們的數據庫,這里填
//我剛才建立了surine數據庫
//這個方法返回一個boolean值
$link = mysqli_connect('localhost', 'root', '', 'surine');

//通過返回的值來判斷是否鏈接成功數據庫
if (!$link) {
    //數據庫鏈接失敗,還打印了mysql返回的日志
    die('數據庫連接失敗 ' . mysql_error());
}else {
   //使用isset(判斷變量已經配置)函數來判斷submit是否完成提交
    if (isset($_POST['submit'])){
      //如果完成提交,開始判斷提交的密碼和確認的密碼是否一致
        if ($_POST['pw'] == $_POST['repw']){
            //如果一致,說明這個用戶可以注冊
            //向users表中添加值
            $query = "insert into users (user,pswd) values('{$_POST['name']}','{$_POST['pw']}')";
            //執行數據庫操作,嚴格按照這篇文章一開始的流程來走
            $result = mysqli_query($link, $query);
           //如果插入成功,則返回true 
            if($query){
               //跳轉到登陸頁面
                header("Location:Login.php");
            }else{
                echo "注冊失敗";
            }
        }else {
           //js彈窗提醒
            echo "<script>alert('兩次輸入密碼不一致!')</script>";
        }
    }
}
   //關閉數據庫,防止浪費資源
   mysqli_close($link);

?>

可以看到,我在上面寫了很多的注釋,這個流程就是按照開篇的流程走的,比較容易理解,如果不懂的話,可以留言。

Login.php[用戶登陸]
<!--還是CSS代碼,主要控制界面樣式,沒啥好說的-->
<style type="text/css">
    form{
        width:300px;
        background-color:#EEE0E5;
        margin-left:300px;
        margin-top:30px;
        padding:30px;
    }
</style>

<!--還是Html代碼,主要設計了幾個表單,采用post方法-->
<form method="post">
    <label>username:<input type="text" name="name"></label>
    <br/><br/>
    <label>password:<input type="password" name="pw"></label>
    <br/><br/>
    <button type="submit" name="submit">login</button>
</form>

<!--php代碼-->
<?php
//鏈接數據庫,參數含義在上面已經提到過
$link = mysqli_connect('localhost', 'root', '', 'surine');
if (!$link){
    echo"<script>alert('數據庫連接失敗!')</script>";
}else {
    //如果點擊登陸按鈕
    if (isset($_POST['submit'])){
        //從數據庫查詢是否有注冊,這個語句和上面的添加語句一樣,相對固定,使用where子句在users表查詢,user = ??? pswd = ???的用戶,還是很容易理解
        $query = "select * from users where user = '{$_POST['name']}' and pswd = '{$_POST['pw']}'";
        //傳入查詢參數,鏈接參數
        $result = mysqli_query($link, $query);
        //如果有這么一列數據匹配,那么就登陸成功
        //這個mysqli_num_rows是什么意思呢,他是返回查詢結果集 
        //中行的數量,也就是說,如果我們沒有這個用戶注冊,肯定是沒 
        //有一行匹配的,也就是返回0,假如說我們有一個注冊了,肯定返 
        //回1,假如說我們有兩個注冊信息一樣,那么就返回2,在實際  生 
        //產中肯定是不允許兩個賬號密碼一樣的,那時候只要加判斷就可 
        //以了,所以我們現在判斷這個返回值等于1,就說明有這個用戶
        if (mysqli_num_rows($result) == 1){
            echo "登陸成功!";
        }else{
            echo "登陸失敗";
        }
    }
}
?>

好了,很簡單的兩個文件,我們可以在我們本地服務器運行測試一下。

瀏覽器訪問這個地址

http://localhost/dashboard/php/register.php
注冊.PNG

輸入信息點擊按鈕(這里我輸入用戶名是root,密碼是1)

登陸.PNG

點擊按鈕之后顯示

登陸成功.PNG

然后我們去我們的數據庫查看一下
這時候,已經看到我們數據的值了,你可以操作一下數據庫不存在的值,會出現登陸失敗的提示


數據庫.PNG

發送至服務器

我們剛才僅僅是在本地測試,所以我們打算發送到服務器試試效果,不過按照你的服務器情況,改部分參數,比如說我服務器的mysql密碼,服務器的數據庫名稱,表名稱,等等。

我們使用Winscp軟件把文件傳送到服務器的apache目錄,然后瀏覽器輸入訪問鏈接,比如我的鏈接是下面的

http://surine.cn/php/rigister.php

然后就可以達成和本地測試一樣的效果。

總結

這篇文章,我們主要設計了一個小實例來認識使用php與mysql數據庫鏈接的相關函數
在下面的文章中,我們將豐富一下這個功能,實現Android與Php交互。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容