John
John

Reputation:

PHP - POST and GET method on the same page

I would like to make a variable $find equal to $_POST['find'] if the user is landing on the page after using the POST method, but on the same page make $find equal to $_GET['find'] if the user is landing on the page after using the GET method.

How do I do that?

Thanks in advance,

John

$find = $_GET['find'];

$find = $_POST['find'];

Upvotes: 3

Views: 3607

Answers (6)

Wil
Wil

Reputation: 892

Use $_REQUEST['find'] to get the combined information from $_GET, $_POST and $_COOKIE.

$_REQUEST returns an associative array that by default contains the contents of $_GET, $_POST and $_COOKIE (You can change the default contents with the php.ini "request_order" directive)

Upvotes: 0

Karim
Karim

Reputation: 18597

If you don't care which method was used then just use the $_REQUEST super global.

If it matter which method was used:

$find = isset($_GET['find']) ? $_GET['find'] : false;
if ($find === false) {
   $find = isset($_POST['find']) ? $_POST['find'] : '';
   // do a POST-specific thing
}
else {
    // do a GET-specific thing
}

Upvotes: 0

grahamparks
grahamparks

Reputation: 16296

Literally what you're asking for is:

if ($_SERVER['REQUEST_METHOD']=='POST') {
   $find = $_POST['find'];
} else {
   $find = $_GET['find'];
}

Alternatively, you can use:

   $find = $_REQUEST['find'];

$_REQUEST is a combination of $_GET, $_POST and $_COOKIE.

Upvotes: 2

Gumbo
Gumbo

Reputation: 655209

The $_REQUEST variable contains the contents of $_GET, $_POST and $_COOKIE where the variables_order option defines the order in which the variables are read and overwrite already existing contents.

So you can either use $_REQUEST['find'] (considering that a cookie value for find will override both POST and GET). Or you implement it on your own:

if (isset($_GET['find'])) {
    $find = $_GET['find'];
}
if (isset($_POST['find'])) {
    $find = $_POST['find'];
}

With that code $find will be $_GET['find'] if it exists unless there is a $_POST['find'] that will override the value from $_GET['find'].

Upvotes: 5

brettkelly
brettkelly

Reputation: 28205

if(isset($_GET['find'])){
    $find = $_GET['find'];
}elseif(isset($_POST['find'])){
    $find = $_POST['find'];
}else{
    $find = null;
}
// do stuff with $find;

Upvotes: 0

Chris Thompson
Chris Thompson

Reputation: 16841

You should use the $_REQUEST global variable. It contains all the data from both $_GET and $_POST.

Alternatively, you could check the request method.

$find = ($_SERVER['REQUEST_METHOD'] == 'GET') ? $_GET['find'] : $_POST['find'];

Upvotes: 12

Related Questions