Simple (hopefully) PHP problem

6 replies
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
#php #problem #simple
  • Profile picture of the author imarketstuff
    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
    Signature
    I MARKET STUFF

    {{ DiscussionBoard.errors[4654719].message }}
  • Profile picture of the author SteveJohnson
    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.
    Signature

    The 2nd Amendment, 1789 - The Original Homeland Security.

    Gun control means never having to say, "I missed you."

    {{ DiscussionBoard.errors[4661435].message }}
    • Profile picture of the author Harvey Segal
      Originally Posted by SteveJohnson View Post

      It will work the way you have it, at least this time. But it's good practice to do it correctly.
      Thanks Steve

      Much appreciated

      Harvey
      {{ DiscussionBoard.errors[4661759].message }}
  • Profile picture of the author Oliot
    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.
    {{ DiscussionBoard.errors[4680944].message }}

Trending Topics