2009-08-29 62 views
0

我知道标题不是很清楚。我是PHP的新手,所以可能会有这样的名字,我会尽我所能地尽力解释。有时在URL中使用PHP时,会出现一个问号,然后是数据。我很抱歉,我知道这很不明显,但我不确定它是如何寻找教程或任何东西的。这里是我的意思是:PHP - “?”后的数据在URL中显示不同的信息

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

你如何配置它取决于数字是多少(在这个例子中它是一个数字)

可能有人请告诉我这是什么来显示不同的文本叫,我怎么能做到这一点?我已经和PHP一起工作了两天,而且我迷路了。非常感谢您的理解,我对此非常感兴趣。

回答

6

即“数据“是URL 查询字符串,它编码该HTTP请求的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变量:http://en.wikipedia.org/wiki/Query_string

在PHP中,你与$_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

+0

谢谢你,我寻找到有关查询字符串的更多信息。再次感谢。 – user 2009-08-29 09:22:30

0

其所谓的 “查询字符串”

,你可以通过$ _ SERVER检索[ “QUERY_STRING”]

或者可以遍历$ _GET

在这种情况下,ERROR_ID,你可以检查它是这样的

echo $_GET['error_id']; 
1

它被称为查询字符串。

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

访问其数据例如:

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

<?php 

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

?> 

如果你想创建一个查询字符串添加到URL,您可以使用http_build_query()

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

你正在寻找的期限为GET。因此,在PHP中,您需要访问$ _GET ['variable_name']中的GET变量,例如在你给$ _GET ['error_id']的例子中将包含值0.然后,你可以在你的逻辑中使用它来回显不同的信息。

2

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

param1=value1&param2=value2 

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

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

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

在PHP中,通过查询字符串传递的参数都采用了超全局变量$_GET自动传播到你的脚本

echo $_SERVER['QUERY_STRING']; 
0

问号后,该位被称为Query String。该格式通常(尽管不一定总是)键值对,其中对之间用&符分开(&),值通过等号(=)与名称分开:?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; 
} 

和更复杂的方式涉及查找错误信息从文件,数据库或你有什么。

1

如前所述,?之后的数据是查询字符串(或GET数据),并使用$_GET变量访问。 $_GET变量是在查询字符串中包含名称=值对的数组。

这里是$_GET一个简单说明和示例的它的用法:

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

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

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