首頁 >後端開發 >php教程 >php學習正式啟航(5)

php學習正式啟航(5)

黄舟
黄舟原創
2016-12-28 09:19:071021瀏覽

現在開始php與html的混編之路
php檔案可以嵌入html程式碼,但html檔案不可嵌入php程式碼,因為html是靜態檔案嘛

說說PHP 表單和使用者輸入

PHP 的$_GET 和$ _POST 用來取得表單提交的值

下面新建一個php檔案index.php

<html>
<body>
<form action="index.php" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>

現在還是純html程式碼表單提交給自身,提交方式為post

現在加入php程式碼

<html>
<body> <form action="index.php" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form> </body>
</html>
rrrerereee在文件的任何地方,不需要在html標籤裡面

最後打印的就是你文本框輸入的結果

如果action為空,也是默認提交給文件自身

$_POST['name']; 可以用雙引號可以單引號,不加引號也能(但會提醒注意)
post提交方式不能用$_GET取得

下面用$_GET取得表單的值

<?php
echo "Name:".$_POST[&#39;name&#39;];
echo "Age:".$_POST[&#39;age&#39;];
?>
<html>
<body> <form action="" method="get">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form> </body>
</html>

為什麼要用$_GET?

在使用 $_GET 變數時,所有的變數名稱和值都會顯示在 URL 中。所以在發送密碼或其他敏感資訊時,不應該使用這個方法。不過,正因為變數顯示在 URL 中,因此可以在收藏夾中收藏該頁面。在某些情況下,這是很有用的。

HTTP GET 方法不適合大型的變數值;值是不能超過 100 個字元的。
一般用分頁,詳細資料顯示等
POST則一般是提交資料專用

另外還有一種$_REQUEST 請求的意思,表示客戶端的請求

PHP 的$_REQUEST 變數包含了$_GET, $_POST 以及$_CIE的內容。 
PHP 的 $_REQUEST 變數可用於取得透過 GET 和 POST 方法傳送的表單資料的結果。


<?php
echo "Name:".$_GET["name"];
echo "Age:".$_GET["age"];
?>
<html>
<body> <form action="" method="get">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form> </body>
</html>

這種無論是get還是post提交方式都能獲取,但盡量少用。因為有時候你得確認對方是什麼方式提交的,還是分清楚比較好

下面說說 PHP Session 變數
當運行一個應用程式時,你會打開它,做些更改,然後關閉它。這很像會話。計算機清楚你是誰。它知道你何時啟動應用程序,並在何時終止。但在網際網路上,有一個問題:伺服器不知道你是誰以及你做什麼,這是由於 HTTP 位址無法維持狀態。透過在伺服器上儲存使用者資訊以便隨後使用,PHP session 解決了這個問題(例如使用者名稱、購買商品等)。不過,會話資訊是臨時的,在使用者離開網站後將被刪除。如果您需要永久儲存訊息,可以把資料儲存在資料庫中。 Session 的工作機制是:為每個訪客建立一個唯一的 id (UID),並基於這個 UID 來儲存變數。 UID 儲存在 cookie 中,也或透過 URL 進行傳導。

在用session 中之前,首先必須啟動會話,這跟其他語言不同

<?php
echo "Name:".$_REQUEST["name"];
echo "Age:".$_REQUEST["age"];
?>
<?php session_start(); ?>

session_start() 函數必須位於 標籤之前

index.php頁面

<html>
<body>
</body>
</html>

index頁面存入的seesion值就能在test頁面顯示出來

無論是存入還是輸出,每個頁面都要session_start();一下

$_SESSION['name']; 同樣可以單雙引號或不加,似乎php裡都是這樣,以後不再重複了哈

如果希望刪除某些session 數據,可以使用unset() 或session_destroy() 函數。

<?php session_start(); ?> 

 
Name:
test.php

然後在到test.php 就無法輸出了

<?php
session_start();
echo $_SESSION[&#39;name&#39;];
?>

isset函數是檢查某個值是否被設定(賦值),就是判斷一個值是否為空

下面說
PHP Cookies

Cookie? cookie 常用於識別使用者。 cookie 是伺服器留在使用者電腦中的小檔案。每當相同的電腦透過瀏覽器請求頁面時,它同時會發送 cookie。透過 PHP,您能夠建立並取回 cookie 的值。


如何建立 cookie? setcookie() 函數用於設定 cookie。 
setcookie() 函數必須位於 標籤之前。


<?php session_start(); ?>


Name:
test.php

我們將創建名為 "user" 的 cookie,把為它賦值 "Hello world"。規定了此 cookie 在一小時後過期:

cookie一般保存在電腦哪裡?
以IE瀏覽器來說,保存在
C:Documents and SettingsAdministratorLocal SettingsTemporary Internet Files

Temporary Internet Files資料夾裡
你會發現以你php專案命名的txt文件,打開它
就可以看到內容啦,不過有些內容是加密的,但前半段
user
Hello+world
localhost/MyPHP/ 還是能看到的

取得cookie值

<?php
session_start();
if(isset( $_SESSION[&#39;name&#39;]))
echo $_SESSION[&#39;name&#39;];
else
echo "null";
?>

$_COOKIE是取得cookie值的

<?php 
setcookie("user", "Hello world", time()+3600);
?>

$_COOKIE是取得cookie值的

,取得get,post,cookie都是用物件的,php顯然簡單的多,雖然是面向過程形式的





下面說php對檔案的處理

首先在專案根目錄建立一個檔案1.txt內容hello world

開啟檔案fopen() 函數用於在PHP 中開啟檔案。此函數的第一個參數含有要開啟的檔案的名稱,第二個參數規定了使用哪種模式來開啟檔案


<?php
$file=fopen("1.txt","r");
?>

$file这个变量是个资源变量,表示文件打开的状态
关于资源变量以后还会接触

文件可能通过下列模式来打开: 模式描述
r 只读。在文件的开头开始。 
r+ 读/写。在文件的开头开始。 
w 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。 
w+ 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。 
a 追加。打开并向文件文件的末端进行写操作,如果文件不存在,则创建新文件。 
a+ 读/追加。通过向文件末端写内容,来保持文件内容。 
x 只写。创建新文件。如果文件已存在,则返回 FALSE。 
x+ 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。

如果 fopen() 无法打开指定文件,则返回 0 (false)。 


打开文件还不够,接着打印

<?php
$file=fopen("1.txt","r");
$data="";
while(!feof($file)) 
{ 
$data.=fgets($file); 
} fclose($file); echo $data; 
?>

feof() 函数检测是否已达到文件的末端 (EOF)。在循环遍历未知长度的数据时,feof() 函数很有用。
fgets() 函数用于从文件中逐行读取文件。 
在调用该函数之后,文件指针会移动到下一行。
fclose 关闭文件

另外fread函数也可以读取文件

<?php
$file=fopen("1.txt","r");
$data="";
while(!feof($file)) 
{ 
$data.=fread($file,4096); 
} fclose($file); echo $data; 
?>


fread() 从文件指针 handle 读取最多 length 个字节。该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件,视乎先碰到哪种情况。 

fread与fgets的区别 
fread :以字节位计算长度,按照指定的长度和次数读取数据,遇到结尾或完成指定长度读取后停止. 
fgets :整行读取,遇到回车换行或结尾停止.在文本方式时使用. 


其实还有文件写入,文件上传下载这些
暂时先简要介绍在这里,以后我接触的时候再说

以上就是php学习正式起航(5)的内容,更多相关内容请关注PHP中文网(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn