2012-05-28 136 views
0

我从来没有明白这一点,在我自己的项目中我从来不需要它。但我一直在为WordPress做出贡献,并且他们大量使用它。

不知何故,他们能够将用户重定向到不同的页面,并在URL中使用某种GET变量(这正是我所了解的使用GET over POST的优势)。他们如何做到这一点?是否像制作像header('site.com/page.php?foo=true');这样的标题很简单?这不能用,因为你必须对所有内容进行硬编码(除非你想创建一个基于其他变量的字符串,这有点令人讨厌,甚至仍然)。我认为会有一个内置的功能,如send_get('page.php', $foo);

我知道如何通过使用$foo = $_GET['foo'];来使用信息,但我不知道如何使用PHP发送它。

解释将不胜感激 - 谢谢!

+4

请给出一个具体的例子或参考你想要的解释 – AD7six

+0

你在问使用$ _GET的好处吗?或者一般情况如何? – dockeryZ

+0

通过PHP使用GET发送变量的习惯方式是什么?我知道如何设置一个以这种方式发送变量的HTML表单,但我怎样才能用PHP做同样的事情?我在问如何使用它以及它的一般概述。 – ICoffeeConsumer

回答

2

使用它并不完全是“习惯”的方式。它是九个超大全球之一。您使用它们的方式由您自行决定。正如Greg P已经提到的那样,它们通过URL传递。

我知道如何设置一个以这种方式发送变量的HTML表单,但我怎样才能用PHP做同样的事情?

如果你正在讨论只用PHP发送GET变量,答案是否定的。您甚至不需要PHP发送GET变量。这就像添加一个问号,后跟一个变量名称= something一样简单。使用&符号分隔几个(&)

设置GET变量与创建锚链接一样简单。 <a href='somepage.php?getVar1=foo&anotherVariable=2&thirdVar=3

您可以使用PHP动态地将某些信息放在那里,而不是手动写入,这是开始使用该语言的全部目的。这是一个预处理器

所以,这样的事情应该让你开始

<?php 
$someID = // An id pulled from a mysql_query 
echo "<a href='somepage.php?someID=" . $someID . "'>GET LINK</a>"; 

我以为会有像send_get(页面内置功能。php',$ foo);

同样,PHP是一个预处理器。它不发送信息,只输出信息。你在说什么是Javascript ..而且,AJAX。 AJAX是唯一可以让你在“幕后”发送GET变量的方法。而且,就像在另一篇文章中提到的那样,jQuery为此提供了一个很棒的代码库。

+0

完美 - 这正是我一直在寻找的东西。但是,我可以不用任何HTML来做类似的事情吗?通过使用PHP头? – ICoffeeConsumer

+0

你也可以这样做,但它和我在文章中提到的概念是一样的。 – dockeryZ

+0

标题只会重定向你,而使用AJAX会在后台执行,就像你描述的一样 – dockeryZ

0

我认为你错过了树木的森林...... $ _GET/$ _ POST只是传递给页面处理它们的变量 - 完成它们以及它是如何完成的,取决于应用程序的设计。例如,Joomla总是将component_id和item_id放在$ _GET数组中,并且在设计时考虑到了这一点,因此期望它们在那里,并构建页面或重定向,或者考虑到这一点。

在你的例子中,一个send_get()函数可能是是一个好主意(我没有设计它),但是架构师并没有以这种或那种方式看到它。 Joomla碰巧有一个重定向函数,它对$ _GET中传递的内容有一定的依赖性,但这只是由应用程序作者设计的。

+0

我只是完全组成了这个功能,因为我认为PHP可能有类似内置的东西。我想知道如何使用GET实际发送信息。 – ICoffeeConsumer

+0

通过URL。接收的PHP脚本可以访问并处理它。 – Ross

+0

在我的日常使用中,数据通过PHP生成的HTML通过GET或POST发送。如果你需要这样做,当你在PHP中生成表单时,cURL可能是答案。或者从客户端浏览器获取.get或.post等AJAX请求。 – GDP

0

也许重定向URL保存在session的一些变量中。正确$_GET变量,为wordpress指出:“检查重定向URL的会话变量”。

0

PHP.net说:

的通过URL参数传递给当前脚本变量的数组。

URL参数:通常是通过URL传递给脚本的变量,例如您的示例site.com/page.php?foo=true?之后的所有内容都被视为参数。

StackOverflow question:

引述的HTTP协议定义GET类型的请求为幂等的,而POST可能有副作用。在英语痛苦中,这意味着GET用于查看某些内容,而不用更改它,而POST用于更改某些内容。例如,搜索页面应使用GET,而更改密码的表单应使用POST。