用 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...