tags:

views:

168

answers:

5

Hello!

I use a query string, for example test.php?var=1.

How can i check if user type anything after that, like another string...

I try to redirect to index.php if any other string (querystring) follow "var" query string.

POssible to check this?

For example:

test.php?var=12134 (This is a good link..) test.php?a=23&var=123 (this is a bad link, redirect to index..) test.php?var=123132&a=23 (this is a bad link, redirect to index..)

+5  A: 

Look in $_SERVER['QUERY_STRING'].

Ollie Saunders
+10  A: 

I'm not sure I fully understand what you want, but if you're not interested in the positioning of the parameters this should work:

if ( isset($_GET['var']) && count($_GET) > 1 ) {
    //do something if var and another parameter is given
}
Tom Haigh
I have only one query parameter, so this solution is good for me..Thank you very much.
Holian
A: 

test.php?a=23?var=123 (this is a bad link, redirect to index..)

In this case, you only have one variable sent, named "a" containing the value "a?var=123", therefore it shouldn't be a problem for you.

test.php?var=123132&a=23 (this is a bad link, redirect to index..)

In this case you have two variables sent, ("a" and "var").

In general you can check the $_GET array to see how many variables have been sent and act accordingly, by using count($_GET).

Anax
I edited my question, but your solution is same as Tom. Thank you!
Holian
A: 

Similar to Tom Haigh’s answer, you could also get the difference of the arguments you expect and those you actually get:

$argKeys = array_keys($_GET);
$additionalArgKeys = array_diff($argKeys, array('var'));
var_dump($additionalArgKeys);
Gumbo
really elegant! thank you!
Holian
A: 

I think you are trying to get rid of unwanted parameters. This is usually done for security reasons.

There won't be a problem, however, if you preinitalize every variable you use and only use variables with $_GET['var'], $_POST['var'] or $_REQUEST['var'].

Martin Hohenberg