dave
dave

Reputation: 15499

How to set $_GET variable

How do i set the variable that the $_GET function will be able to use, w/o submitting a form with action = GET?

Upvotes: 17

Views: 129461

Answers (11)

simply write basic code to set get method value in php

Syntax :- $_GET['< get method variable name>']='';

Ex :- $_GET['send']='invoice';

Upvotes: 0

orthose
orthose

Reputation: 11

As @Gaurav and @Sander Marechal said, it's possible to add directly at the end of the URL the GET parameters to send to the web page. It works in the majority of cases. But unfortunately, there is an issue with that because an URL cannot accept any character. Some special characters have to be properly encoded to get a valid URL.

Suppose you have an index.php and you want to set a with the value &b= which contains special characters. When I submit the form of the following code, the URL sent is index.php?a=&b= and PHP prints Array ( [a] => [b] => ). So, PHP believes there is two parameters but I only want the parameter a.

You may also notice that the form method is set to POST because if you set it to GET the parameters at the end of the action URL will be ignored. For more details about that see this @Arjan's answer.

<form action="index.php?a=&b=" method="post">
    <input type="submit">
</form>
<?php print_r($_GET); ?>

One solution could be to use the PHP function urlencode. But, as you can see in the following code it's not really convenient to use, especially if you have many parameters to encode. When, I submit this form the URL sent is index.php?a=%26b%3D and PHP prints Array ( [a] => &b= ) as expected.

<form action="index.php?a=<?=urlencode("&b=")?>" method="post">
    <input type="submit">
</form>
<?php print_r($_GET); ?>

But, instead of urlencode function I recommend using hidden input. Thanks to this tag you can send GET parameters dynamically set by PHP. Besides, these parameters are automatically encoded with the URL standard. And you don't need to use & to separate several parameters: use one input to set one parameter. When, I submit this form the URL sent is index.php?a=%26b%3D and PHP prints Array ( [a] => &b= ) as expected.

<form action="" method="get">
    <input type="hidden" name="a" value="<?php echo "&b="; ?>">
    <input type="submit">
</form>
<?php print_r($_GET); ?>

Upvotes: -1

oriadam
oriadam

Reputation: 8649

If you want to fake a $_GET (or a $_POST) when including a file, you can use it like you would use any other var, like that:

$_GET['key'] = 'any get value you want';
include('your_other_file.php');

note: i must add that while this is ok for dev/test/debug, it is considered bad programming and i wouldn't recommend using this method in prod. it would be better to pass the processed values to the function/class instead of having it read the $_GET directly.

Upvotes: 2

sreekanth
sreekanth

Reputation: 1371

For the form, use:

<form name="form1" action="" method="get">

and for getting the value, use the get method as follows:

$value = $_GET['name_to_send_using_get'];

Upvotes: -1

Jens A. Koch
Jens A. Koch

Reputation: 41796

One way to set the $_GET variable is to parse the URL using parse_url() and then parse the $query string using parse_str(), which sets the variables into the $_GET global.

This approach is useful,

  • if you want to test GET parameter handling without making actual queries, e.g. for testing the incoming parameters for existence and input filtering and sanitizing of incoming vars.
  • and when you don't want to construct the array manually each time, but use the normal 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);

Result: $_GET contains

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

Upvotes: 1

SkriptZor
SkriptZor

Reputation: 25

I know this is an old thread, but I wanted to post my 2 cents...

Using Javascript you can achieve this without using $_POST, and thus avoid reloading the page..

<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!";
    }
 ?>

Upvotes: -2

Joseph Orlando
Joseph Orlando

Reputation: 183

You could use the following code to redirect your client to a script with the _GET variables attached.

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

This will cause the script to redirect, make sure the die(); is kept in there, or they may not redirect.

Upvotes: -1

Pascal MARTIN
Pascal MARTIN

Reputation: 401182

$_GET contains the keys / values that are passed to your script in the URL.

If you have the following URL :

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

Then $_GET will contain :

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


Of course, as $_GET is not read-only, you could also set some values from your PHP code, if needed :

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

But this doesn't seem like good practice, as $_GET is supposed to contain data from the URL requested by the client.

Upvotes: 43

Theo
Theo

Reputation: 132972

The $_GET variable is populated from the parameters set in the URL. From the URL http://example.com/test.php?foo=bar&baz=buzz you can get $_GET['foo'] and $_GET['baz']. So to set these variables, you only have to make a link to that URL.

Upvotes: 0

Sander Marechal
Sander Marechal

Reputation: 23216

You can use GET variables in the action parameter of your form element. Example:

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

This will give you foo as a GET variable and quu as a POST variable.

Upvotes: 3

Gaurav
Gaurav

Reputation: 28775

You can create a link , having get variable in href.

<a href="www.site.com/hello?getVar=value" >...</a>

Upvotes: 12

Related Questions