我終究還是低估了“妹子”兩個字對程序猿們的殺傷力,在無圖說個傑寶的今天,竟然還能在沒有爆照的情況下點擊量一天不到就到達了四位數,並且還成為當天評論最多的帖子!雖然評論都歪樓歪得不行了,但是妹子還是非常貼心地對我說了一句——妹子在此表示很關注內容。看到這句話,我頓時生出一種拋卻此身為君死的知遇之情,不知道我以身相許妹子能樂意不?
這麼多人看到這一系列,我還是應該秉承技術博客的宗旨,盡量以講技術為主,跟廣大入門者一起探討PHP開發的知識。不過呢,為了照顧廣大因為標題點擊近來的程序猿們,我會在博客中增加一些妹子在學習過程中表現的敘述,並且傳授大家如何跟妹子培養感情,哦,不,是進行學術交流。
既然是教妹子web開發,尤其是在幾乎零基礎的情況下,就必須要從非常基本的東西講起,有足夠的耐心。但是也要有嚴格的教學思路,不能想到什麼就說什麼,這樣妹子聽了不但會覺得煩,而且學習效率也不高。你想想,妹子煩了,學習的勁頭上不去,後面還能有你的什麼事呢?你還沒來得及展示你的知識深度和豐富開發經驗呢,妹子就已經把電腦一關棄你而去了,然後,還能有什麼然後呢?!總結一句:沒方法沒思路沒耐心,注定孤獨一生。
在前一篇,已經基本介紹了一些東西,可以概括為以下幾點:1)php代碼要用<?php ?>標簽進行標識2)如何使用echo語句進行輸出html代碼,另外關於要用對""中的"(雙引號)用\轉義符)進行轉義。3)php代碼是如何跟html代碼進行混合的。那麼,在這個基礎上,下一步就是如何提交表單以及所提交表單的處理。
第三步:提交表單
在html語法中,我們會用<form>標簽進行表單的標識,在百度百科中,我們可以知道——表單在網頁中主要負責數據采集功能。也就是說,表單為系統提供了提交數據的功能。那麼,我們再來重溫一下之前寫的那幾行代碼,重點關注表單部分的內容。
- <?php //php代碼部分開始
- echo "<html>";
- echo "<head>";
- echo "<meta charset=\"gbk\">";
- echo "<title>用戶登錄界面</title>";
- ?><!-- php代碼部分結束-->
- </head>
- <body>
- <form name="login" action="Controller.php" method="post" >
- <!-- 上一行代碼的意思是 -->
- <!-- name="login"表單的名稱為login,提交的動作為“Controller.php”,請求方式為“post” -->
- <td class="tbl">用戶名:</td><td><input type="text" name="user_id"></td>
- <!-- name="user_id"的意思是所填寫的用戶名標識為user_id -->
- <td class="tbl">密碼:</td><td><input type="text" name="user_password"></td>
- <!-- name="user_password"的意思是所填寫的密碼標識為user_password -->
- <?php
- echo "<td><input type=\"submit\" value=\"登入系統\"></td>"
- //submit表示的是表單的提交按鈕,按鈕顯示為“登入系統”
- ?>
- </form>
- </body>
- </html>
看到上面這幾行代碼跟注釋,有人可能會覺得:這也太簡單了吧。在一開始我就說過了,教妹子學技術的關鍵在於要有耐心,如果妹子什麼都會了,還要你干嘛?在這裡,重點要給妹子解釋一下的就是action="Controller.php",意思就是點擊submit提交按鈕後,頁面會跳轉到Controller.php這個文件,換句話來說——妹子,表單提交,就是把數據提交到Conroller.php上,由它來處理數據嘛。這樣的解釋可能有失偏頗,但是為了讓妹子更好的理解,這也是權宜之計,效果不錯的喲)
第四步:獲取和處理所提交表單的數據
既然提交了表單,那麼下一步肯定是如何獲取和處理表單中裡的數據。如果你這個時候給妹子講POST請求和HTTP協議,妹子除了暈頭轉向並且給你兩個白眼,估計你啥效果都得不到。你可能會說,樓主你這樣的教學方式很不科學很不全面啊。是不是科學是不是全面我暫且不跟你爭論,有的時候講的細講的多不代表對學的人就好,能把教學過程進行下去才是最重要的。
廢話少說,我們直接看Controller.php的代碼,在注釋的幫助給妹子解釋,PHP是如何獲取HTML表單數據的。
- <?php
- session_start();//使用session前必須調用該函數
- $user_id =$_POST['user_id'];//聲明變量$user_id,把POST請求中的user_id的值賦給它
- $user_password= $_POST['user_password'];
- //聲明變量$user_password,把POST請求中的user_password的值賦給它
- //.操作符連接兩個字符串變量,以下兩條語句顯示所提交表單的用戶名和密碼
- echo "所提交表單的用戶名是:".$user_id;
- echo " 密碼是".$user_password;
- ?>
看到開頭的第一句:session_start();和緊接著的注釋,妹子肯定會問——什麼是session啊?session,通俗的來講,就是用戶從進入網站開始到關閉浏覽器結束的這個過程。而在PHP中使用session,就是通過注冊若干session全局變量,在不同的頁面或php文件中使用這些變量。妹子肯定沒有辦法一下子就明白session到底是怎麼回事,當前只要讓她暫時知道有這麼一回事就行了,在往後的學習當中會逐漸加深對其的理解。
繼續看到代碼,對照第三步的代碼我們會知道,提交表單的方式是POST,所以我們用$_POST變量來獲取表單中的數據。而中括號[' ']內的索引為表單中的name,通過索引來獲取數組$_POST中的值,最後顯示在頁面上。
把數據顯示到頁面上,固然是一種“處理”的方式。可是既然是登錄功能,那所輸入的用戶名和密碼一般來說都必須與系統中的設定吻合。例如系統中只有一個用戶名是admin,密碼是123456,那麼在輸入除admin之外的用戶名都應該是被拒絕登錄的,而密碼也應該與admin所對應,必須是123456。判斷代碼如下:
- <?php
- session_start();//使用session前必須調用該函數
- $user_id =$_POST['user_id'];//聲明變量$user_id,把POST請求中的user_id的值賦給它
- $user_password= $_POST['user_password'];
- //聲明變量$user_password,把POST請求中的user_password的值賦給它
- //.操作符連接兩個字符串變量,以下兩條語句顯示所提交表單的用戶名和密碼
- if($user_id=='admin'&&$user_password=='123456')//判斷語句,&&為且運算符,必須兩條件均符合才為真
- {
- echo "通過驗證,登錄成功";
- }
- else
- echo "未通過驗證,登錄失敗";
- ?>
妹子很努力,上午我問她對數據庫的基本操作是不是熟悉,晚上我問她在干什麼的時候,她說:在惡補數據庫呢。這時候,我的心裡不知道多感動,本來上了一天班挺累的頓時疲勞盡消趕緊坐到電腦前碼字。
為什麼我要讓她復習數據庫呢?因為我們的系統不大可能只有一個賬號,更不可能把所有的賬號和密碼都寫進PHP文件中。我們要做的是,把這些信息存進數據庫裡,到需要用的時候就拿出來。什麼時候需要用呢?當然是登錄需要驗證的時候,也就是現在。
第五步:連接MySQL數據庫
PHP提供了完成的操作MySQL數據庫的函數,這些函數提供了從連接數據庫、執行SQL語句、處理數據結果集到關閉數據庫等方方面面的功能。妹子可以用通過這些函數使得基於MySQL數據庫的Web開發變得高效而且簡單。
那麼,我們就從最基本的連接數據庫開始。請看代碼:
- <?php
- $host ='localhost';//定義數據庫服務器,為本地主機
- $user_name='root'; //定義數據庫的用戶名
- $password =''; //定義數據庫的密碼
- $conn = mysql_connect($host,$user_name,$password);//連接MySQL,獲取鏈接
- if(!$conn){//判斷鏈接是否為空
- die('數據庫連接失敗:'.mysql_error());
- //使用了語言結構die(),它的功能類似於exit,輸出一段信息不能並立即中斷程序的執行
- }
- else{
- echo "數據庫連接成功";
- }
在這裡,我假定妹子知道什麼是服務器、用戶名和密碼心理活動:妹子說惡補了一個晚上,該不會連這個都不知道吧,心驚膽戰ing)。關鍵的語句其實就只有一句,
$conn = mysql_connect($host,$user_name,$password);$host(服務器)、$user_name用戶名)和$password密碼)作為參數,通過mysql_connect函數獲取mysql數據庫的鏈接,並賦給變量$conn。
那麼,如何利用數據庫鏈接$conn對mysql數據庫進行操作呢?我們明天在下一篇再繼續說。