Как установить переменную $ _GET - PullRequest
15 голосов
/ 24 марта 2011

Как установить переменную, которую сможет использовать функция $_GET, не отправляя форму с помощью action = GET?

Ответы [ 9 ]

37 голосов
/ 24 марта 2011

$_GET содержит ключи / значения, которые передаются вашему сценарию в URL.

Если у вас есть следующий URL:

http://www.example.com/test.php?a=10&b=plop

, тогда $_GET будет содержать:

array
  'a' => string '10' (length=2)
  'b' => string 'plop' (length=4)


Конечно, поскольку $_GET не только для чтения, вы также можете установить некоторые значения из своего PHP-кода, если это необходимо:

$_GET['my_value'] = 'test';

Но этоне похоже на хорошую практику, так как $_GET должен содержать данные из URL, запрошенного клиентом.

12 голосов
/ 24 марта 2011

Вы можете создать ссылку, получив переменную в href.

<a href="www.site.com/hello?getVar=value" >...</a>
3 голосов
/ 24 марта 2011

Вы можете использовать переменные GET в параметре action вашего элемента form.Пример:

<form method="post" action="script.php?foo=bar">
    <input name="quu" ... />
    ...
</form>

Это даст вам foo как переменную GET и quu как переменную POST.

2 голосов
/ 24 марта 2016

Если вы хотите подделать $ _GET (или $ _POST) при включении файла, вы можете использовать его так же, как и любой другой var, например:

$_GET['key'] = 'any get value you want';
include('your_other_file.php');
1 голос
/ 10 декабря 2016

Один из способов установить переменную $_GET - это проанализировать URL с помощью parse_url() и затем анализируйте строку $query, используя parse_str(), которая устанавливает переменные в глобальный $_GET.

Этот подход полезен,

  • если вы хотите проверить обработку параметров GET без выполнения реальных запросов, например, для проверки входящих параметров на наличие и входную фильтрацию и дезинфекцию входящих переменных.
  • и когда вы не хотите каждый раз создавать массив вручную, а используете обычный URL

function setGetRequest($url)
{
    $query = parse_url($url, PHP_URL_QUERY);
    parse_str($query, $_GET);
}

$url = 'http://www.example.com/test.php?a=10&b=plop';

setGetRequest($url);   

var_dump($_GET);

Результат: $_GET содержит

array (
  'a' => string '10' (length=2)
  'b' => string 'plop' (length=4)
)
0 голосов
/ 02 октября 2013

Я знаю, что это старая тема, но я хотел опубликовать свои 2 цента ...

Используя Javascript, вы можете добиться этого без использования $ _POST и, таким образом, избежать перезагрузки страницы.

<script>
function ButtonPressed()
{
window.location='index.php?view=next'; //this will set $_GET['view']='next'
}
</script>

<button type='button' onClick='ButtonPressed()'>Click me!</button>

<?PHP
 if(isset($_GET['next']))
    {
          echo "This will display after pressing the 'Click Me' button!";
    }
 ?>
0 голосов
/ 02 июня 2013

Вы можете использовать следующий код для перенаправления вашего клиента в скрипт с присоединенными переменными _GET.

header("Location: examplepage.php?var1=value&var2=value");
die();

Это приведет к перенаправлению скрипта, убедитесь, что там хранится die();, иначе они могут не перенаправить.

0 голосов
/ 24 марта 2011

Для формы используйте:

<form name="form1" action="<?=$_SERVER['PHP_SELF'];?>" method="get">

, а для получения значения используйте метод get следующим образом:

$value = $_GET['name_to_send_using_get'];
0 голосов
/ 24 марта 2011

Переменная $_GET заполняется из параметров, установленных в URL. С URL http://example.com/test.php?foo=bar&baz=buzz вы можете получить $_GET['foo'] и $_GET['baz']. Таким образом, чтобы установить эти переменные, вам нужно всего лишь сделать ссылку на этот URL.

...