PHP 和 MySQL 基礎教程(三)

2022-10-06 15:09:20 字數 3653 閱讀 6269

用 cookies 來跟蹤識別使用者

讓我們來看看儲存在瀏覽器中的內容。如果你用的是 ie5 ,eokqiivjv在 windows 目錄下有乙個 cookies 的目錄,裡面有很多文字檔案,檔名都是類似於 wudong@15seconds[1].txt 這樣的,這就是瀏覽器用來儲存值的 cookies 了。在以前的 ie 版本中, cookies 的內容是可以察看的,但現在內容已經被編碼了。在瀏覽器得到乙個 web 頁面之前,它會先看這個頁面的網域名稱,是否在 cookie 中存在,如果有相比配的,瀏覽器會先把匹配的 cookie 傳送到伺服器,然後才接受處理伺服器傳送過來的頁面。

先舉個 cookies 應用的例子:當我連線到 amazon.com 時,瀏覽器在接受第乙個頁面之前會把它以前設定的 cookies 的內容傳送給 amazon 。然後 amazon.com 對傳送過來的內容加以檢查,看看在資料庫中有沒有相關資料,在匹配之後,在為我建立乙個定製的頁面傳送到過來。

為 cookies 賦值

作 者 : 揚眉 編譯 本文點選次數:127

必須在伺服器傳送任何內容給客戶瀏覽器之前為 cookies 賦值。要做到這一點, cookies 的設定就必須放在 < head> 標籤內:

< ?php

setcookie("cookieid", $userid);

?>

< html>

< body>

< /body>

< /html>

setcookie 函式一共有六個引數,用逗號來分隔:

cookie 的名稱,是乙個字串,例如: "cookieid" 。其間不允許有冒號,逗號和空格。這個引數是必須的,而其它的所有引數都是可選的。如果只有這乙個引數被給出,那麼這個 cookie 將被刪除。

cookie 的值,通常是乙個字串變數,例如: $userid 。也可以為它賦乙個 ?? 來略過值的設定。

cookie 失效的時間。如果被省略(或者被賦值為零), cookie 將在這個對話期( session )結束後失效。這個引數可以是乙個絕對的時間,用 dd-mon-yy hh:mm:ss 來表示,比如: "24-nov-99 08:26:00" 。而更常用的是設定乙個相對時間。這是通過 time() 函式或者 mktime 函式來實現的。比如 time()+3600 將使得 cookie 在乙個小時後失效。

乙個路徑,用來匹配 cookie 的。當在乙個伺服器上有多個同名的 cookie 的設定,為避免混淆,就要用到這個引數了。使用 &q程式設計客棧uot;/" 路徑的和省略這個引數的效果是一樣的。要注意的是 netscape 的 cookie 定義是把網域名稱放在路徑的前面的,而 php 則與之相反。

伺服器的網域名稱,也是用來匹配 cookie 的。要注意的是:在伺服器的網域名稱前必須放上乙個點( . )。例如: ".friendshipcenter.com" 。因為除非有兩個以上的點存在,否者這個引數是不能被接受的。

cookie 的安全級,是乙個整數。 1 表示這個 cookie 只能通過「安全」的網路來傳送。 0 或者省略則表示任何型別的網路都可以。

cookies 和變數

作 者 : 揚眉 編譯 本文點選次數:127

當 php 指令碼從客戶瀏覽器提取了乙個 cookie 後,它將自動的把它轉換成乙個變數。例如:乙個名為 cookieid 的 cookie 將變成變數 $cookieid.

cookies 的內容被報存在 http_cookie_vars 陣列中,你還可以通過這個陣列和 cookie 的名稱來訪問指定的 cookie 值:

記住每乙個使用者

作 者 : 揚眉 編譯 本文點選次數:127

回過頭在來看看上面的 submitform.php3 檔案,它的作用是把客戶的姓名新增到資料庫中,現在我想為它新增一些東西。我想為每個使用者都分配乙個唯一的使用者標誌,然後把這個標誌放在 cookies 中,這樣每當使用者訪問我的**的時候,通過 cookie 和其中的使用者標誌,我就能夠知道他是誰了。

mysql 能夠被設定成為每乙個新的紀錄自動的分配乙個數字,這個數字從 1 開始,以後每次自動加 1 。用一行 sql 語句,你就可以輕鬆的為資料表新增這樣的乙個字段,我把它叫做 userid:

alter table dbname

add column

userid int(11) not null

primary key auto_increment;

對這個字段我們作了一些特別的設定。首先,通過「 int(11) 」定義它的型別為 11 位的整數;然後用「 not neokqiivjvull 」關鍵字讓這個欄位的值不能為 null ;再用「 primary key 」把它設定為索引字段,這樣搜尋起來就會更快;最後,「 auto程式設計客棧_increment 」定義它為自動增一的字段。

當把使用者的姓名插入到資料庫後,就應該在他們的瀏覽器上設定 cookie 了。這時利用的就是剛才我們談到的 userid 欄位的值 :

< ?php

mysql_connect (localhost, username, password);

mysql_select_db (dbname);

mysql_query ("insert into tablename (first_name, last_name)

values ('$first_name', '$last_name')

");

setcookieokqiivjve("cookieid",

mysql_insert_id(),

time()+94608000,

"/"); /* 三年後 cookie 才會失效 */

?>

php 函式 mysql_insert_id() 返回在最後一次執行了 insert 查詢後,由 auto_increment 定義的字段的值。這樣,只要你不清除掉瀏覽器的 cookies ,**就會永遠「記住」你了

讀取 cookie

作 者 : 揚眉 編譯 本文點選次數:127

我們來寫乙個像 amazon.com 所作的那樣的指令碼。首先, php 指令碼會先檢查客戶瀏覽器是否傳送了 cookie 過來,如果是那樣的話,使用者的姓名就會被顯示出來。如果沒找到 cookie 的話,就顯示乙個表單,讓客戶登記他們的姓名,然後把他新增到資料庫中,並在客戶瀏覽其中設定好 cookie 。

首先,先來顯示 cookie 的內容:

< ?php

print $cookieid;

?>

然後,就可以把名字顯示出來了:

< ?php

mysql_connect (localhost, username, password);

mysql_select_db (dbname);

$selectresult = mysql_query ("select * from tablename

where userid = '$cookieid'

");

$row = mysql_fetch_array($selectresult);

echo " 歡迎你的光臨 ", $row[first_name], "!";

?>

就是這樣的了。我在其中沒有作判斷,交給你自己來完成好了

本文標題: php 和 mysql 基礎教程(三)

本文位址:

PHP和MySQL基礎教程(三)

用 cookies 來跟蹤識別使用者 讓我們來看看儲存在瀏覽器中的內容。如果你用的是 ie5 在 windows 目錄下有乙個 cookies 的目錄,裡面有很多文字檔案,檔名都是類似於 wudong 15seconds 1 txt 這樣的,這就是瀏覽器用來儲存值的 cookies 了。在以前的 i...

php基礎教程(三)

上述 中絕大多數都是建立表單所必需的html 在此,我們僅對所涉及到的php知識做一下簡單介紹。首先,我們來看一下 開始處的變數 php self。變數 php self是php中乙個很方便的指標,其變數值就是當前頁面的url位址。這樣,我們就可以通過在隨後的form標籤中將target的值設定為 ...

PHP 和 MySQL 基礎教程(四)

對於 mysql 第一件你必須牢記的是它的每一行命令都是用分號 作為結束的,但 沒有完全絕對的事,在這兒也是一樣。前面我曾經講到,當一行 mysql 被插入在 php 中時,最好把後面的分號省略掉,例如 mysql query insert into tablename first name,las...