> $cimg   = (isset($_REQUEST['cimg']) ? $_REQUEST['cimg'] : 'true');

$_R  is not good practice. But that's prob'ly not the problem here, as
long  as  you  are using either GET or POST consistently when testing.

For  one thing, if the var is not passed, you are setting the value to
the  string  'true', not boolean true. While the two will often end up
being interchangeable thanks to automatic type coercion, if you really
want booleans, use booleans from the start.

define("INVALID_BOOL_DEFAULT",true);
$cimg = isset($_GET['cimg'])
? ( $_GET['cimg'] !== "false" and $_GET['cimg'] != false or $_GET['cimg'] === 
"" ) and ( $_GET['cimg'] === "true" or $_GET['cimg'] == (int)true or 
INVALID_BOOL_DEFAULT )
: INVALID_BOOL_DEFAULT;

Set  INVALID_BOOL_DEFAULT  to  the  default  boolean value you want to
assign if

- no matching varname is passed
- the var is passed but is empty
- the var is set to any value other than 0, 1, "false", or "true"

It  is  a  better  idea  to coerce the JS booleans to integers 0 and 1
before sending them, but this approach allows you to pass JS bools (as
strings,  of  course) and convert back into PHP bools on the server. I
don't know what exact problem you were having, however.

-- Sandy

Reply via email to