首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是"?“在php中使用的URL中的符号?

问什么是"?“在php中使用的URL中的符号?
EN

Stack Overflow用户
提问于 2009-02-22 07:00:33
回答 7查看 10.2K关注 0票数 10

我是PHP新手。在学习PHP语言的过程中,我注意到,有些网站会使用这样的URL:

Www.website.com/profile.php?user=roa3 3&.

我的问题:

  1. 什么是"?“符号是用来?
  2. 如果我正在开发一个php网站,我必须在我的URL中使用它吗?例如,在用户(Roa3)成功登录后,我将重定向到“www.website.com/profile.php?user=roa3 3”,而不是"www.website.com/profile.php“。
  3. 使用它的优点和缺点是什么?
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-02-22 07:10:47

好问题,简单地说,

  1. "?“表示查询字符串的开始,该字符串包含要传递给服务器的数据。在本例中,您将user=roa3传递给profile.php页面。您可以在profile.php中使用$_ get‘’user‘来获取数据。querystring是从客户端代理向服务器发送数据的方法之一。另一种是将数据放在HTTP中并将其发送到服务器,您不会直接从浏览器中看到HTTP数据。
  2. 查询字符串可以由用户编辑,并且对公众是可见的。如果www.website.com/profile.php?user=roa3 3是公共的,那么它是可以的,否则您可能需要使用会话来获取当前用户的上下文。
  3. 它是一种向服务器传递数据的灵活方法,但对于用户来说,它是可见的和可编辑的,对于某些敏感数据,至少在将数据附加到查询字符串之前会产生某种哈希,这会阻止用户编辑它或理解它的含义。然而,这并不能阻止一个像样的黑客对你的网站做错事。不同的浏览器支持不同的最大URL长度,冗长的URL由这些查询字符串参数组成。如果要发送大量数据,请将数据放在HTTP正文中并发送到服务器。
票数 22
EN

Stack Overflow用户

发布于 2009-02-22 08:28:22

到目前为止,我看到的大多数答案都是用PHP来回答的,而实际上这并不是特定于语言的。到目前为止,给出的答案都是从PHP的角度出发的,您将使用不同的语言来访问这些信息,但是数据在URL中的格式(称为查询字符串)将保持不变(Ex: page.ext?key1=value&key2=value&.)。

我不知道你的技术背景或知识,所以请原谅我.

网页有两种不同的方法来向web服务器提供数据。这些方法被称为POST或GET方法。也有一些其他的,但这些都不应用于任何类型的网页设计时,处理一个正常的用户。POST方法以不可见的方式发送到服务器,用于“上载”数据,而GET方法作为URL中的查询字符串对用户是可见的,并且仅用于字面意思上的“获取”信息。

并不是所有的网站都遵循这条经验法则,但有理由说明原因。例如,站点可以使用POST来绕过代理服务器或浏览器的缓存,或者因为它们使用双字节语言,并且在试图执行get时会因为编码转换而引起问题。

关于这两种方法的一些资源以及何时使用它们..。

http://www.cs.tut.fi/~jkorpela/forms/methods.html http://weblogs.asp.net/mschwarz/archive/2006/12/04/post-vs-get.aspx 字符串

现在,从一个严格的PHP位置,现在有3个不同的数组,您可以使用它来获取网页发送回服务器的信息。你必须处理好..。

  • $_ POST‘’keyname‘,只获取POST方法中的信息
  • $_ GET‘’keyname‘,只获取GET方法中的信息
  • $_请求‘’keyname‘,允许您获取可能已提交的帖子、GET和任何COOKIE信息。某种程度上是一种集线器,特别是在不知道页面可能使用哪种方法来提交数据的情况下。

不要因为直接使用$_REQUEST方法而草率行事。除非您有我前面提到的$_REQUEST变量的情况,否则不要使用它。您希望尝试使用‘拒绝所有,并只允许x,y,z’的方法,当涉及到安全性。只需查找您知道您自己的站点将发送的数据,只需查找您所期望的组合,并在使用它之前清除所有信息。例如..。

  • 永远不要对通过上述方法传递的任何内容执行eval()。我从来没见过这样的事情,但这并不意味着人们没有尝试过,也没有尝试过。
  • 不要在不清理数据库的情况下直接使用数据库中的信息(如果您不熟悉SQL注入攻击,请研究它们)

到目前为止,这并不是PHP安全的最终目标,但我们并不是为了这个而来的。如果你想了解更多,那么这是另一个问题。

希望这会有所帮助,并随时提出任何问题。

票数 6
EN

Stack Overflow用户

发布于 2009-02-22 07:20:13

1)如果用户登录到您的站点,您将使用会话存储用户名,而不是将其传递到url (例如profile.php?username=roa3 )中。

2)在urls中使用?符号的通常被认为不利于Search Engine Optimization。另外,urls看起来有点难看。使用重写,您可以使用profile.php?user=roa3或products.php?id=123&category=toys对site.com/profile/roa3或products/toys/123执行相同的操作。

使用CodeIgniter框架将在默认情况下为您提供友好的urls,并消除URLs中对?的需求。有关示例,请参见此页。

3) ?符号也在php页面的代码中使用。例如,一个if else块,如:

代码语言:javascript
复制
if ($x==1)
   $y=2;
else
   $y=3;

也可以写成:

代码语言:javascript
复制
$y=($x==1) ? 2 : 3;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/574493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档