2012-05-28 134 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。