0

现在已经在谷歌上搜索了近一个星期,试图找到这个问题的答案,到目前为止我运气不太好。也许我没有问正确的问题。

我想要做的是获取一个 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 每个键执行单独的功能

4

3 回答 3

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
    }
}
于 2012-10-28T10:11:12.350 回答
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
}

设置两个键的条件永远不会被触发,因为它会匹配第一个条件。

于 2012-10-28T09:51:18.747 回答
0

您可以使用此功能:

extract( $_REQUEST, EXTR_PREFIX_ALL, 'f' );

http://fr2.php.net/manual/en/function.extract.php

于 2012-10-28T09:54:26.593 回答