日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

使用php,使用 PHP

發布時間:2025/3/12 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用php,使用 PHP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用 PHP推薦查看本文HTML版本

本節匯集了你在寫 PHP 腳本時可能碰到的大多數普通錯誤。

1. 我想寫一個可以處理任何表單來的數據的通用 PHP 腳本。我怎么知道哪個 POST 方法變量可用呢?

2. 我需要在所有的單引號(')前加一個反斜線(\),使它們變成(\'),我如何能夠通過正則表達式來實現?我同樣希望能夠將(")轉換成(\"),將(\)轉換成(\\)。

3. 我所有的(")和(')都被變成了(\")和(\'),我如何才能去掉這些不必要的反斜線?它們為什么及如何出現?

4. 當我這樣做時,輸出顯示的次序是錯的: <?php

function myfunc($argument)

{

6. 我得到消息“Warning: Cannot send session cookie - headers already sent...”或者“Cannot add header information - headers already sent...”。

7. 我需要直接訪問請求報頭中的信息,怎么能辦到?

8. 當我用 IIS 進行 HTTP 認證時得到“No Input file specified”消息。

9. 我的 PHP 腳本在 IE 和 Lynx 下能工作,但是在 Netscape 中有的輸出丟失了。當我用“查看源文件”時可以在 IE 中看到內容,但是 Netscape 中不能。

10. 我怎樣混合使用 XML 和 PHP?它不認我的 <?xml 標記!

11. 怎樣用 FrontPage 或者其它非要把我的代碼移來移去的 HTML 編輯器來編輯 PHP?

12. 哪里可以找到所有可用的 PHP 預定義變量的完整列表?

13. 我試著在用戶自定義函數中訪問一個標準的 CGI 變量(例如 $DOCUMENT_ROOT 或 $HTTP_REFERER),但是找不到,哪里出了錯?

1. 我想寫一個可以處理任何表單來的數據的通用 PHP 腳本。我怎么知道哪個 POST 方法變量可用呢?

PHP 提供很多“預定義變量”,例如超級全局變量 $_POST。您可以遍歷 $_POST 變量,因為它是一個和所有通過 POST 方法傳遞數據相聯系的數組。例如,我們可以用 foreach 簡單的遍歷它,檢查 empty() 值,以及將它們輸出。 <?php

$empty = $post = array();

foreach ($_POST as $varname => $varvalue) {

if (empty($varvalue)) {

$empty[$varname] = $varvalue;

} else {

$post[$varname] = $varvalue;

}

}

print "

";

if (empty($empty)) {

print "None of the POSTed values are empty, posted:\n";

var_dump($post);

} else {

print "We have " . count($empty) . " empty values\n";

print "Posted:\n"; var_dump($post);

print "Empty:\n";? var_dump($empty);

exit;

}

?>

Superglobals:可用性說明: 自 PHP 4.1.0 開始,可以使用超級全局數組例如 $_GET,$_POST 和 $_SERVER 等等。更多信息請閱讀手冊中的 superglobals

2. 我需要在所有的單引號(')前加一個反斜線(\),使它們變成(\'),我如何能夠通過正則表達式來實現?我同樣希望能夠將(")轉換成(\"),將(\)轉換成(\\)。

函數 addslashes() 能夠實現這種操作。請參閱函數 mysql_escape_string()。另外,您還可以用函數 stripslashes() 來去掉反斜線。

設置選項注意:magic_quotes_gpc: PHP 的設置選項 magic_quotes_gpc 的默認值為 on。這相當于自動對所有的 GET、POST、COOKIE 數據使用 addslashes() 函數。您可以使用 stripslashes() 函數來去掉它們。

3. 我所有的(")和(')都被變成了(\")和(\'),我如何才能去掉這些不必要的反斜線?它們為什么及如何出現?

PHP 函數 stripslashes() 能夠從字符串中去掉所有的反斜線。這些反斜線出現最有可能的原因是 PHP 設置項 magic_quotes_gpc 被開啟。

設置選項注意:magic_quotes_gpc: PHP 的設置選項 magic_quotes_gpc 的默認值為 on。這相當于自動對所有的 GET、POST、COOKIE 數據使用 addslashes() 函數。您可以使用 stripslashes() 函數來去掉它們。

4. 當我這樣做時,輸出顯示的次序是錯的: <?php

function myfunc($argument)

{

echo $argument + 10;

}

$variable = 10;

echo "myfunc($variable) = " . myfunc($variable);

?>

這是怎么回事?

要在一個表達式中(例如在上面的例子中和其它字符串連接)使用函數的結果,你需要 return() 這個值,而不是 echo() 它。

5. 下面代碼怎么沒有分成兩行顯示?

在 PHP 中,一段代碼的結束標記要么是“?>”要么是“?>\n”(\n 表示換行)。因此在上面的例子中,輸出的句子將顯示在同一行中,因為 PHP 忽略了代碼結束標記后面的換行。這意味著如果要輸出一個換行符,你需要在每段 PHP 代碼的結束標記后面多加一個換行。

PHP 為什么這么做呢?因為在格式化正常的 HTML 時,這樣通常會更容易。假如輸出了換行而你不需要這個換行時,你就不得不用一個非常長的行來達到這樣的效果,或者讓產生的 HTML 頁面的源文件的格式很難讀。

6. 我得到消息“Warning: Cannot send session cookie - headers already sent...”或者“Cannot add header information - headers already sent...”。

函數 header(),setcookie() 和 session 函數需要在輸出流中增加頭信息。但是頭信息只能在其它任何輸出內容之前發送。在使用這些函數前不能有任何(如 HTML)的輸出。函數 headers_sent() 能夠檢查您的腳本是否已經發送了頭信息。請參閱“輸出控制函數”。

7. 我需要直接訪問請求報頭中的信息,怎么能辦到?

如果你以 Apache 的模塊方式運行 PHP,那么函數 getallheaders() 可以做這件事。因此下面的代碼可以顯示所有的請求報頭: <?php

$headers = getallheaders();

foreach ($headers as $name => $content) {

echo "headers[$name] = $content
\n";

}

?>

請參閱函數 apache_lookup_uri()、apache_response_headers() 和 fsockopen()。

8. 當我用 IIS 進行 HTTP 認證時得到“No Input file specified”消息。

IIS 的安全模型這里有毛病。這是所有 IIS 下運行的 CGI 程序所共有的問題。一個解決辦法是建立一個純 HTML 文件(不經過 PHP 解析)作為要進入認證目錄的登錄頁面,然后用 META 標記來重定向到 PHP 頁面,或者用一個連接到 PHP 頁面。然后 PHP 就可以正確識別認證信息了。如果是用 ISAPI 模塊,那沒有這個問題。其它 NT 下的 web 服務器不受此影響。更多信息見:http://support.microsoft.com/support/kb/articles/q160/4/22.asp及“HTTP 認證”的有關章節。

9. 我的 PHP 腳本在 IE 和 Lynx 下能工作,但是在 Netscape 中有的輸出丟失了。當我用“查看源文件”時可以在 IE 中看到內容,但是 Netscape 中不能。

Netscape 在關于 html 標記(例如 table)上比 IE 更嚴格。用一個 html 驗證器,例如 validator.w3.org 來驗證你的 html 輸出可能會有幫助。例如漏了 可能會導致這樣的結果。

同樣,IE 和 Lynx 都忽略了 HTML 流中的任何 NULs(\0),Netscape 就不。最好的檢查方法是編譯 PHP 的命令行模式版本(也稱為 CGI 版本)并從命令行運行你的腳本。在 *nix 中,用管道傳遞到 od -c 并查看任何 \0 字符。如果在 Windows 下你需要能夠查看二進制文件格式的編輯器或程序。當 Netscape 碰到 NUL 時就不會輸出之后該行的任何內容而 IE 和 Lynx 都會。

10. 我怎樣混合使用 XML 和 PHP?它不認我的 <?xml 標記!

要能夠在 PHP 代碼中直接嵌入 <?xml ,您需要將將 PHP 設置項 short_open_tags 設置為 0 以關閉短標記格式。您無法通過函數 ini_set() 來更改這項設置。不管 short_open_tags 是開或者關,您都可以用類似于 <?php echo '<?xml'; ?> 的方法達到目的。該項設置的默認值為開。

11. 怎樣用 FrontPage 或者其它非要把我的代碼移來移去的 HTML 編輯器來編輯 PHP?

最簡單的方法是讓 PHP 代碼也能使用 ASP 標記。這可以讓你用 ASP 風格的 代碼定界符。一些流行的 HTML 編輯器在處理此格式上更加智能化一些(目前如此)。要使用 ASP 風格的標記,你需要在 php.ini 中打開 asp_tags,或者用相應的 Apache 配置選項。

12. 哪里可以找到所有可用的 PHP 預定義變量的完整列表?

請閱讀手冊“預定義變量”的有關章節,該部分的文檔已經包含了一部分可以用于你的腳本的預定義變量的列表。可用變量的完整列表(及更多信息)可以通過調用 phpinfo() 函數來查閱。請務必閱讀手冊“PHP 外部變量”一節,這部分文檔描述了外部變量的概要,如從來自 HTML 表單、Cookie 和 URL 的變量。

13. 我試著在用戶自定義函數中訪問一個標準的 CGI 變量(例如 $DOCUMENT_ROOT 或 $HTTP_REFERER),但是找不到,哪里出了錯?

首先非常重要的一點是 PHP 設置項 register_globals 同樣會對服務器端和環境變量產生影響。當 register_globals = off (從 PHP 4.2.0 開始其默認值為 off),變量 $DOCUMENT_ROOT 將不會存在,而只有 $_SERVER['DOCUMENT_ROOT']。如果 register_globals = on 則變量 $DOCUMENT_ROOT 和 $GLOBALS['DOCUMENT_ROOT'] 將同時存在。

如果您確認 register_globals = on 但不知道為什么 $DOCUMENT_ROOT 在函數內部不可用,這是因為它和其它的變量一樣需要在函數中執行 global $DOCUMENT_ROOT。請參閱手冊中“變量范圍”的有關章節。我們建議您在 register_globals = off 的情況下進行編碼。

Superglobals:可用性說明: 自 PHP 4.1.0 開始,可以使用超級全局數組例如 $_GET,$_POST 和 $_SERVER 等等。更多信息請閱讀手冊中的 superglobals

總結

以上是生活随笔為你收集整理的使用php,使用 PHP的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。