2012-12-26 57 views
1

我在PHP 5.4.10下運行的頁面中有下面的代碼片段(請注意比較===)。

$list_all_pages = False; 
$reqs_per_page = 50; 
$start_page = 0; 

if (isset($_GET["p"])) { 
    echo("Debug: " . $_GET["p"] . "\n"); 
    if ($_GET["p"] === "all") { 
     $list_all_pages = True; 
    } else { 
     $start_page = intval($_GET["p"]); 
     if ($start_page < 1) 
      $start_page = 0; 
    } 
} 

參數「p」打算成爲將顯示的結果頁數(從零開始)或「全部」來顯示所有頁面。由於我不明白的原因,PHP自動將我的參數轉換爲一個整數,結果,我無法顯示我希望的所有頁面。

例如,調用與「mypage.php?p=all」引起調試回聲打印「調試:0」的頁面

發生了什麼事?我認爲這種自動轉換有點危險......以前有人有這個問題嗎?

+0

你通過WordPress的運行呢? –

+0

@SamuelCook你是說WP改變超全球的值? :(如果是這樣的話,它會比我想象的更加複雜:P – PeeHaa

+0

@SamuelCook不,但我將WP安裝在同一臺服務器上並啓用了APC。此組合是否可以更改某些由所有共享的全局PHP狀態Apache進程? – Astolfo

回答

3

$ _GET變量p(即P =)在WordPress被保留,作爲默認方式服務器最多職位的ID。雖然大多數人喜歡轉換他們的URL,但默認是www.domain.com/?p=123。

WordPress的專門查找此參數(它也擔任了wp_shortlink),如果不是數字是會自動將該值設置爲0。

+0

這裏是一個鏈接到保留字(術語)在WordPress - http://codex.wordpress.org/Function_Reference/register_taxonomy#Reserved_Terms – Sean

+0

謝謝!我剛剛取代了「p」和「pg」,它的工作原理問題是:這個特殊的腳本沒有調用任何WP函數(甚至沒有從同一個目錄運行)我認爲在我的Apache配置中存在一些全局重寫規則 – Astolfo

+0

@Sean Ahh,我正在尋找這個,謝謝。 –

0

這就夠了,沒必要強制類型轉換

if ($_GET["p"] == "all") { 
     $list_all_pages = True; 
    } else { 
     $start_page = (int)$_GET["p"]; 
     if ($start_page < 1) 
      $start_page = 0; 
    } 
+0

y是這個 - 這不會工作? –