PHP - “?”之后的数据在URL中显示不同的信息

时间:2009-08-29 09:09:45

标签: php

我知道标题不是很清楚。我是PHP的新手,所以可能有这个名字的名字,我会尽力解释。有时在URL中,当使用PHP时,会有一个问号,后面跟着数据。对不起,我知道这很无聊,但我不确定是什么叫做教程或其他任何东西。这就是我的意思:

http://www.website.com/error_messages.php?error_id=0

如何将其配置为根据数字显示不同的文本(在此示例中为数字)

有人可以告诉我这叫做什么以及我该怎么做?我已经和PHP一起工作了几天而且我迷路了。非常感谢你理解我是新人。

7 个答案:

答案 0 :(得分:6)

“data”是URL querystring ,它对该HTTP请求的 GET变量进行编码。

以下是有关查询字符串的更多信息:http://en.wikipedia.org/wiki/Query_string

在PHP中,您可以使用$_GET“超全局”变量

来访问它们
// http://www.website.com/error%5Fmessages.php?error%5Fid=0
// %5F is a urlencoded '_' character, which your webserver will most likely
// decode before it gets to PHP.
// So ?error%5Fid=0 reaches PHP as the 'error_id' GET variable
$error_id = $_GET['error_id'];
echo $error_id; // this will be 0

查询字符串可以通过用 & 字符分隔它们来编码多个GET变量。例如:

  

?error_id=0&error_message=Something%20bad%20happened

  • error_id => "0"
  • error_message => "Something bad happened"

在该示例中,您还可以看到空格被编码为%20

以下是有关“百分比编码”的更多信息:http://en.wikipedia.org/wiki/Percent-encoding

答案 1 :(得分:2)

问号后的数据称为“查询字符串”。它通常包含以下格式的数据:

param1=value1&param2=value2

即,它是键值对的列表,每对用“&”符号(&)分隔。为了在值中传递特殊字符,必须使用URL编码格式对它们进行编码:使用百分号(%),后跟两个代表字符代码的十六进制字符。

在PHP中,通过查询字符串传递的参数将使用超全局变量$_GET自动传播到您的脚本:

echo $_GET['param1']; // will produce "value1" for the example above.

QUERY_STRING服务器变量可以检索原始的,未处理的查询字符串:

echo $_SERVER['QUERY_STRING'];

答案 2 :(得分:1)

它被称为查询字符串。

在PHP中,您可以通过superglobal $_GET

访问其数据

例如:

http://www.example.com/?hello=world

<?php

// Use htmlspecialchars to prevent cross-site scripting attacks (XSS)
echo htmlspecialchars($_GET['hello']);

?>

如果您想创建一个追加到网址的查询字符串,可以使用http_build_query()

$str = http_build_query(array('hello' => 'world'));

答案 3 :(得分:1)

如前所述,?之后的数据是查询字符串(或GET数据),并使用$_GET变量进行访问。 $_GET变量是一个包含查询字符串中的name = value对的数组。

以下是$_GET的简明描述及其用法示例:

http://www.w3schools.com/php/php_get.asp

数据也可以作为POST数据(在$_POST变量中找到)提交给PHP脚本,用于密码等,并且不存储在URL中。 $_REQUEST变量包含POST和GET数据。 POST和GET数据通常源于用户输入Web表单(但GET数据也可以直接来自指向地址的链接,如您的示例所示)。有关在PHP中使用Web表单的更多信息,请访问:

http://www.w3schools.com/php/php_forms.asp

答案 4 :(得分:0)

其名为“查询字符串”

您可以通过$ _SERVER [“QUERY_STRING”]

检索它

或者你可以遍历$ _GET

在这种情况下是error_id,你可以用这样的东西来检查它

echo $_GET['error_id'];

答案 5 :(得分:0)

您正在寻找的术语是GET。所以在php中你需要访问$ _GET ['variable_name']中的GET变量,例如在你给出的示例中,$ _GET ['error_id']将包含值0.然后,您可以在逻辑中使用它来回显不同的信息。

答案 6 :(得分:0)

问号后面的位称为Query String。格式通常(尽管不一定总是)键值对,其中对由&符号(&amp;)分隔,并且值与名称通过等号(=)分隔:?var1=value1&var2=value2&...。大多数Web编程环境提供了一种以这种格式访问名称 - 值对的简便方法。例如,在PHP中,有一个superglobal,它是这些键值对的关联数组。在您的示例中,可以通过以下方式访问error_id:

$_GET['error_id']

名称“GET”的原因是查询字符串变量通常与HTTP GET请求相关联。 POST请求也可以包含GET变量,而GET请求不能包含POST变量。

至于你提出的其余问题,你可以通过多种方式处理文本问题,最简单的方法是切换错误ID:

$error_id = isset($_GET['error_id']) ? $_GET['error_id'] : 0;
switch($error_id) {
    case 1:
        echo "Error 1";
        break;
    default: 
        echo "Unknown Error";
        break;
}

更复杂的方法是从文件,数据库或者你有什么来查找错误消息。