Simple (hopefully) PHP problem

by 6 replies
7
I wonder if some kind PHP programmer
can point out the error here.

I want to pass data (like an affiliate code) to a script
and display it but not let it overwrite any previous code

So
http://www.supertips.com/ztest.php?x=1
shows ==> 1

Followed by
http://www.supertips.com/ztest.php?x=2
shows ==> 2 but it should be 1


Here is the script

<?php
$cookie_name = "ztest";

if(!isset($_COOKIE['$cookie_name'])) {
$x = $_GET[x];
$cookie_value=$x;
$domain = ".supertips.com";
$expire = time()+60*60*24*30;
setcookie("$cookie_name","$cookie_value","$expire" ,"/","$domain",0);
}
echo "value= $cookie_value ";
?>


Thanks
Harvey
#programming #php #problem #simple
  • hey there Harvey,

    you have two options:

    1. remove the single quotes surrounding ($cookie_name) in the isset conditional
    2. use double quotes surrounding ($cookie_name) in the isset conditional

    basically, php parses strings within double quotes and doesn't parse strings when using single quotes.

    peace
    • [1] reply
    • Hi marketstuff

      Thanks - that worked


      Harvey
  • Not related to your issue, but this line:
    $x = $_GET[x];

    should have single quotes around the x:
    $x = $_GET['x'];

    PHP tries to evaluate the unquoted x as a constant, then assumes it to be an index. It will work the way you have it, at least this time. But it's good practice to do it correctly.
    • [1] reply
  • It's no so important, but I would write:
    setcookie($cookie_name,$cookie_value,$expire ,'/',$domain,0);
    It's no need to use double quotes here.
    • [1] reply

Next Topics on Trending Feed