Php url问题中的url编码
我使用的服务是,他们的服务器每小时都会与我的服务器联系,如下所示:Php url问题中的url编码,php,apache,urlencode,url-encoding,Php,Apache,Urlencode,Url Encoding,我使用的服务是,他们的服务器每小时都会与我的服务器联系,如下所示: /check.php?id=1&name=anonyme&country=us $id = @$_GET['id']; $name = @$_GET['name']; $country = @$_GET['country']; 所以我收集了如下信息: /check.php?id=1&name=anonyme&country=us $id = @$_GET['id']; $name = @$_
/check.php?id=1&name=anonyme&country=us
$id = @$_GET['id'];
$name = @$_GET['name'];
$country = @$_GET['country'];
所以我收集了如下信息:
/check.php?id=1&name=anonyme&country=us
$id = @$_GET['id'];
$name = @$_GET['name'];
$country = @$_GET['country'];
太好了,一切正常。但是当名称上有空格时,我们可以这样说:
/check.php?id=1&name=MR Anonymous&country=us
然后在php中,我只能提取ID和名称的第一部分,即“MR”。我无法得到其他值(国家,等等),因为这个空间,它们保持为空
我已经联系了发送此信息的公司,我告诉他们这可能是他们的问题,他们说不,我只需要对我的URL进行URL编码
我仍然认为这是他们的问题,不是我的问题,因为当我看到Apache日志时,我看到他们的URL上有一个空格,他们应该修复这个空格。(因为当我在任何浏览器中使用相同的URL时,该空间会变成%20,而该公司的情况并非如此)
是我的问题吗?还是他们的问题?如果它是我的,如何修复它?URI中不允许使用原始空间(即使某些客户端和服务器在被要求处理它们时可能会恢复错误)
您确实需要对数据进行URL编码。URI中不允许使用原始空格(即使某些客户端和服务器在被要求处理它们时可能会恢复错误)
您确实需要对数据进行URL编码。我认为他们(另一台服务器)需要在发送到您的服务器之前对数据进行
urlencode()
,然后您将urldecode()
它。我认为他们(另一台服务器)需要在发送到您的服务器之前对数据进行urlencode()
,然后你将urldecode()
it.如果他们向你的服务器发出这些请求(而你无法控制这些请求),那么肯定不是你的错
URI中的空格是禁止的。Apache确实允许这样做,但PHP会感到困惑,并将空格后的部分作为协议
您可以通过将
$\u服务器['SERVER\u PROTOCOL']
附加到$\u服务器['QUERY\u STRING']
来解决此问题,删除最后一个空格后的所有内容,然后解析此URL(请参阅和)。但是,最好的办法是他们修复他们的请求。如果他们向您的服务器发出这些请求(而您无法控制这些请求),那么肯定不是您的错
URI中的空格是禁止的。Apache确实允许这样做,但PHP会感到困惑,并将空格后的部分作为协议
您可以通过将
$\u服务器['SERVER\u PROTOCOL']
附加到$\u服务器['QUERY\u STRING']
来解决此问题,删除最后一个空格后的所有内容,然后解析此URL(请参阅和)。但是,最好的办法是他们修复他们的请求。你应该询问提出请求的公司为什么需要对他们的URL进行URL编码。你应该询问提出请求的公司为什么需要对他们的URL进行URL编码。你可以到PHP手册中搜索URLENCODE,它将向你展示该函数。编码在哪里?我的变量是空的。。。如果您转到PHP手册并搜索urlencode,它将向您显示函数。在哪里进行编码?我的变量是空的。。。那是行不通的