Как установить переменную, которую функция $_GET
сможет использовать, без отправки формы с action = GET
?
Вы можете создать ссылку, получив переменную в href.
<a href="www.site.com/hello?getVar=value" >...</a>
$_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-адреса, запрошенного клиентом.
Вы можете использовать переменные GET в параметре действия вашего элемента form
. Пример:
<form method="post" action="script.php?foo=bar"> <input name="quu" ... /> ... </form>
Это даст вам foo
как переменную GET и quu
как переменную POST.
Переменная $_GET
заполняется из параметров, заданных в URL-адресе. Из URL http://example.com/test.php?foo=bar&baz=buzz
вы можете получить $_GET['foo']
и $_GET['baz']
. Поэтому, чтобы установить эти переменные, вам нужно только сделать ссылку на этот URL.
Для формы используйте:
<form name="form1" action="<?=$_SERVER['PHP_SELF'];?>" method="get">
и для получения значения используйте метод get следующим образом:
$value = $_GET['name_to_send_using_get'];
Вы можете использовать следующий код для перенаправления своего клиента на скрипт с включенными переменными _GET.
header("Location: examplepage.php?var1=value&var2=value"); die();
Это вызовет перенаправление сценария, убедитесь, что die();
хранится там, или они не могут перенаправляться.
Если вы хотите подделать $ _GET (или $ _POST) при включении файла, вы можете использовать его, как если бы вы использовали любой другой var, например:
$_GET['key'] = 'any get value you want'; include('your_other_file.php');
Один из способов установить переменную $_GET
– это проанализировать URL-адрес с помощью parse_url()
а затем проанализировать строку $query
с помощью parse_str()
, которая устанавливает переменные в глобальный $_GET
.
Этот подход полезен,
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) )
Я знаю, что это старая нить, но я хотел опубликовать свои 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!"; } ?>