[PHP] Usage of $_GET(), getting a query string

Started by
9 comments, last by ApochPiQ 14 years, 8 months ago
	if (!isset($_GET['storevisitor']))
		echo('No parameter.\n<br />');
	else if (is_null($_GET['storevisitor']))
		echo('storevisitor is null.');
	else if ($_GET['storevisitor']) == '1')	// GIVES ERROR HERE (LINE #6)
		echo('Storing IP.\n<br />');
	else
		echo('IP won\'t be stored.');


I try to access the PHP page with this query string:
http://localhost/?storevisitor=1
And this is the error message given:
Parse error: syntax error, unexpected T_IS_EQUAL in C:\Development\Server\DocumentRoot\index.php on line 6
What do you think the problem is? [Edited by - ApochPiQ on July 26, 2009 12:56:32 PM]
Advertisement
hi,

the parenthesis is the error i think

should be

else if (($_GET['storevisitor']) == '1')	// GIVES ERROR HERE (LINE #6)		echo('Storing IP.\n<br />');


Opps, ok, I feel stupid...

I want to ask one more question which would make more sense:
Why doesn't my code ever print "storevisitor is null." message?

When I send a query string like
http://localhost/?storevisitor
it displays the message "IP won't be stored." instead of "storevisitor is null.".

How can I detect when a query string variable is sent without a value assigned to it?
maybe your should try

if (!isset($_GET['storevisitor']))	echo('No parameter.\n<br />');else if (empty($_GET['storevisitor']))	echo('storevisitor is null.');else if ($_GET['storevisitor']) == '1')	// GIVES ERROR HERE (LINE #6)	echo('Storing IP.\n<br />');else	echo('IP won\'t be stored.');
I tried empty() but this time
http://localhost/?storevisitor
and
http://localhost/?storevisitor=0
are assumed to be same by my code.

But they are different obviously.
How can I detect this difference.
I'm just curious, I won't use it in my code but I want to learn it anyway.

Thanks in advance.
Test for $_GET['storevisitor'] === ''.
Quote:Original post by Konfusius
Test for $_GET['storevisitor'] === ''.

I didn't work.
Your syntax looks like to be incorrect?

Thank you anyway.
theres discussion of this problem if you look at the comments in this page

http://us3.php.net/manual/en/function.empty.php

or you could do

if (!isset($_GET['storevisitor']))	echo('No parameter.\n<br />');else if (empty($_GET['storevisitor']) && $_GET['storevisitor']!=0)	echo('storevisitor is null.');else if ($_GET['storevisitor']) == '1')		echo('Storing IP.\n<br />');else	echo('IP won\'t be stored.');
Final form of my code, and it works:
	if (!isset($_GET['storevisitor']))		echo('No parameter.\n<br />');	else if (strlen($_GET['storevisitor']) == 0)		echo('storevisitor is empty.\n<br />');	else if ($_GET['storevisitor'] == '0')		echo('IP won\'t be stored.\n<br />');	else		echo('Storing IP.\n<br />');


It works now but, I don't think that using strlen() is a professional approach to the problem.
Is there any alternative you guys can suggest?


EDIT: Thank you biggy, your last code is also a good alternative.
Quote:Original post by Battousai
Quote:Original post by Konfusius
Test for $_GET['storevisitor'] === ''.

I didn't work.
Your syntax looks like to be incorrect?

Thank you anyway.
This is a bug in the GDNet forum software; two quote charactes ('') are displayed as one. His code should have read $_GET['storevisitor'] === '' (hit "Edit" on his post to see). [smile]

[Website] [+++ Divide By Cucumber Error. Please Reinstall Universe And Reboot +++]

This topic is closed to new replies.

Advertisement