2012-10-28 41 views
1

已經在谷歌上搜索了近一個禮拜,現在試試&找到這個的答案&到目前爲止我沒有太多的運氣。也許我不是在問正確的問題。多個GET鍵值&

我想要做的是獲得一個PHP腳本來測試多個鍵&從輸入的URL中提供的值&提供所需的內容/功能。無需使用多個文件來完成工作。

我最初的想法是使用$ _GET來處理信息,當腳本只能用第一個鍵時,

<?php 
if(isset($_GET['key1'])){ 
    $key1 = $_GET['key1']; 
    echo "Key 1 is - " .$key1. " - There is no other data."; 
} 
elseif(isset($_GET['key2'])){ 
    $key2 = $_GET['key2']; 
    echo "Key 2 is - " .$key2. " - There is no other data."; 
} 
else { 
    echo "No data provided"; 
} 
?> 

希望這上面是正確的,因爲我不得不寫出來我記得在一處,因爲它不會在第二個關鍵工作。

然後我嘗試了不同的方法。

<?php 
if(isset($_GET['key1'],$_GET['key2'])){ 
    if($_GET['key1']){ 
     $key1 = $_GET['key1']; 
     echo "Key 1 is - " .$key1. " - There is no other data."; 
    } 
    elseif($_GET['key2']){ 
     $key2 = $_GET['key2']; 
     echo "Key 2 is - " .$key2. " - There is no other data."; 
    } 
    else { 
     echo "No data provided"; 
    } 
} 
?> 

所有這一切所做的就是給我一個內部服務器錯誤&現在我卡住了。

所以我的問題是,我怎樣才能處理同一個腳本中的多個鍵&個人&值,而不需要包含其他鍵? 我也瞄準純PHP,使代碼將運行在兩個Linux的& Windows服務器,這意味着使用.htaccess做一個URL重寫不是一個選項。

注意!以上只是一個簡單示例,實際代碼將鏈接到執行任務&輸出內容的函數。

目的是允許的URL,如 example.com/?key1=value1 example.com/?key2=value1 與每個鍵執行單獨的功能

+2

我不明白你想在這裏實現什麼。這是什麼意思? –

+0

你錯過了} last else以及 – GBD

+0

如果兩者都存在,你的意思是它應該同時回顯'key1'和'key2'嗎?然後使用'if($ _ GET ['key2'])'而不是'elseif($ _ GET ['key2'])''。 – air4x

回答

0

如果我正確理解你想要的東西是:

if(isset($_GET['key1']) && isset($_GET['key2'])){ 
    //both keys are set 
} elseif(isset($_GET['key1'])) { 
    //only key1 is set 
} elseif(isset($_GET['key2'])){ 
    //only key2 is set 
} else { 
    //no valid combinations found 
} 

記下發言的順序,降特異性,因爲如果你有:

if(isset($_GET['key1'])) { 
    //only key1 is set 
} elseif(isset($_GET['key2'])){ 
    //only key2 is set 
} elseif(isset($_GET['key1']) && isset($_GET['key2'])){ 
    //both keys are set 
} else { 
    //no valid combinations found 
} 

兩個鍵被設置的條件永遠不會被觸發,因爲它會匹配第一個條件。

+2

'isset($ _GET ['key1'])&& isset($ _GET ['key2'])'=='isset($ _GET ['key1'],$ _GET ['key2'])' – BeRocket

+0

你是對的,我認爲它只接受一個參數,編輯了答案。 – Hailwood

1

我不知道如果我理解你,但這個怎麼樣?

foreach($_GET as $key => $value) { 
    if(!empty($value)) { 
     switch($key) { 
      case 'key1': 
       // do stuff for key1 
       break; 
      case 'key2': 
       // do stuff for key1 
       break; 
     } 
    } else { 
     // handle if key is not set 
    } 
}