Google Answers Logo
View Question
 
Q: Javascript - Checking for Cookies Enabled Problem ( No Answer,   6 Comments )
Question  
Subject: Javascript - Checking for Cookies Enabled Problem
Category: Computers > Programming
Asked by: catullus13-ga
List Price: $10.00
Posted: 18 Oct 2004 05:16 PDT
Expires: 17 Nov 2004 04:16 PST
Question ID: 416334
I have a problem with a form that is using javascript to check to see
if the user's browser has cookies disabled. This is an online poll,
and I'm trying to check to see if the user already has a cookie set
from previously having taken the form or if the user is blocking
cookies on their browser. If either applies, then their response isn't
recorded and they are sent to a page that tells them they have already
taken the poll or have their cookies disabled. The function that
checks for a cookie is working fine, but the function that checks to
see if cookies are disabled has a problem. The "onSubmit" in the
<form> tag already is set to the validation function, so I can't set
that also to check for the cookies disabled. So, I'm trying to set the
cookies disabled function to 1 in the validation function, but it
doesn't want to pass that value to the conditions processing that
page. Here's the code:

In the Header include file, here is the function checking to see if
cookies disabled:

<!-- # CHECK TO SEE IF COOKIES ENABLED FOR POLL # -->
<SCRIPT LANGUAGE="Javascript">
<!--
 var cookieEnabled = false;
 if (typeof document.cookie == "string")
 {
   if (document.cookie.length == 0)
   {
     document.cookie = "test";
     cookieEnabled = (document.cookie == "test");
     document.cookie = "";
   }
   else
   {
     cookieEnabled = true;
   }
 }
//-->
</SCRIPT>

This is working fine.

Then, on the form page, here is the form tag and the cookies value I'm
passing as a hidden:

<FORM ACTION="/tbpoll/vote.html" NAME="tbpoll" METHOD="POST"
onsubmit="return validateForm(this)">
<INPUT TYPE="HIDDEN" NAME="cookies" VALUE="0">

Then, on the form page, here is the javascript validation code that is
checking to see if at least one of the radio buttons on the form has
been checked. In this code, I'm trying to set the value of cookies
disabled to 1, but it doesn't seem to be working:

<SCRIPT language="javascript">
<!-- HIDE
function validateForm(form) {
    if (isValidRadio(form.choice)) {
      return true;
    }
  if(cookieEnabled){form.cookies.value=1;}
  return false;
}

// validate that the user has checked one of the radio buttons
function isValidRadio(radio) {
    var valid = false;
    for (var i = 0; i < radio.length; i++) {
        if (radio[i].checked) {
            return true;
        }
    }
    alert("Make a choice from the radio buttons.");
    return false;
}
//-->
</SCRIPT>

Then, on the processing page, I have checking to see if cookies
disabled equal 1, or that a cookie has already been set (they've
voted):


 INCLUDE "poll_config.inc";

 if (!$quesid) { header("Location: ../index.html"); exit; }

 $voteyet = 0;
 $now = time();
 
 // See if this registered user has voted
 if ($tbvote == $quesid) { $voteyet = 1; }

 // If cookies are disabled they cannot vote
 if (!$cookies) { $voteyet = 1; }
 
if ($voteyet)
 {
    $tb_title = "Business Poll";
    INCLUDE "$DOCUMENT_ROOT/inc/tb_header.inc";

    echo ("<TABLE WIDTH=\"500\" CELLPADDING=\"0\" CELLSPACING=\"0\"
BORDER=\"0\">");
    echo ("<TR><TD><FONT FACE=\"Arial\" SIZE=\"-1\"><BR>");
    echo ("Our records indicate that you've already voted in this
poll, or that your computer does not accept cookies. In order to
preserve the integrity of the poll results, we don't allow visitors to
vote more than once. ");
    echo ("</FONT></TD></TR></TABLE><P>");
 
    INCLUDE "$DOCUMENT_ROOT/inc/tb_footer.inc";
    exit;
 }

 if (!$voteyet)
 {
   // if ($other) { $choice = "Other"; }
   if($other){$display=="";}
   $fields = "(quesid, choice, timestamp, wn, ipaddress, writein,
comments, display)";
   $vals = "($quesid, '$choice', $now, '$wn', '$REMOTE_ADDR',
'$other', '$comments', '$display')";
   $query = "INSERT INTO pollresp $fields VALUES $vals";
   $result = mysql($mysqldb, $query);

   // Set a cookie to prevent multiple voting.
   $expire = time() + 1209600;   // one week
   $expire = date("l, d-M-Y H:i:s", $expire);
   header("Set-Cookie: tbvote=$quesid; path=/; expires=$expire;
domain=.somecompany.com");
 }

I've tried again and again, but I can't get that variable value of
cookies to get set to 1. Can someone please help me with this one?
Thanks.
Answer  
There is no answer at this time.

Comments  
Subject: Re: Javascript - Checking for Cookies Enabled Problem
From: phptiger-ga on 18 Oct 2004 11:47 PDT
 
I think I can do a cookie check for you in PHP. Why do you try to do
that in JavaScript?
So, if you want a solution in PHP, let me know.
Subject: Re: Javascript - Checking for Cookies Enabled Problem
From: catullus13-ga on 18 Oct 2004 12:26 PDT
 
That's fine. I usually use Javascript for checking to see if cookies
are enabled, but with the onSubmit in the <FORM> tag already handling
the validation, I wasn't sure how to go about doing it.
Subject: Re: Javascript - Checking for Cookies Enabled Problem
From: phptiger-ga on 23 Oct 2004 15:05 PDT
 
I'd do it like that:

// set the cookie like that after vote has been counted
 if ($voteyet>0) // this line has changed too - because we change the
value of $voteyet - only if there's a cookie value à la "tbvote_xx"
 {
   // if ($other) { $choice = "Other"; }
   if($other){$display=="";}
   $fields = "(quesid, choice, timestamp, wn, ipaddress, writein,
comments, display)";
   $vals = "($quesid, '$choice', $now, '$wn', '$REMOTE_ADDR',
'$other', '$comments', '$display')";
   $query = "INSERT INTO pollresp $fields VALUES $vals";
   $result = mysql($mysqldb, $query);



   /* Different code here: */
   // Set a cookie to prevent multiple voting.
   setcookie("tbvote_" . $quesid, $quesid, time()+1209600);
 }


and to check if there's already a cookie you just say:
$voteyet = ($_COOKIE['tbvote_'.$quesid]!="" ? $_COOKIE['tbvote_'.$quesid] : 0 );
and then check if($voteyet==0) you know that there's no cookie set


I hope you understand what I mean, otherwise just ask again ;)
Hopefully this is the answer to your problem.


PS: I'm using this system for a community + a CMS therefore it should work well
Subject: Re: Javascript - Checking for Cookies Enabled Problem
From: catullus13-ga on 24 Oct 2004 16:24 PDT
 
That isn't exactly what I was looking for. Right now, the code as it
is does the checking to see if a cookie has been set just fine. My
problem is checking to see if the user's computer is blocking cookies
because the poll wants to treat these folks just the same as if they
had no cookie. The javascript I usually use to do (see my code above
in my question) isn't passing that value of 1 to the processing page,
and I can't figure out why.
Subject: Re: Javascript - Checking for Cookies Enabled Problem
From: phptiger-ga on 27 Oct 2004 10:54 PDT
 
So, you want everybody who has cookies disabled not to vote, right?
Well, then I'd go away from JavaScript (because what if JS is
disabled) and still only work with PHP:

The idea: Set a random cookie, check immediately afterwards if it's
available - if not, you'll know that you can't use cookies here,
therefore don't allow this user to vote

The code:

setcookie("cookie_check", "2004", time()+10); // set cookie with value
2004 (just for fun ;)) + let it expire after 10 secs
if($_COOKIE['cookie_check']!="2004") $voteyet = 1; // check if the
value of this cookie equals your value (2004, e.g.) - if not, you know
that this computer doesn't support cookies


The cookie will expire after 10 secs the script was created

Well, and this code should be replace your line:
if (!$cookies) { $voteyet = 1; }


I'm pretty sure that works but I haven't checked it yet (but I'll do
so as soon as possible).

I hope that's the solution for your problem.

Have a nice day!
Subject: Re: Javascript - Checking for Cookies Enabled Problem
From: phptiger-ga on 11 Nov 2004 11:20 PST
 
Well, I'd like to know if I helped you or not.
Otherwise we still can try to figure that out - if you want to
(doesn't seem like that?!)

But mostly I'd like to know if my coding skills helped ;)

Important Disclaimer: Answers and comments provided on Google Answers are general information, and are not intended to substitute for informed professional medical, psychiatric, psychological, tax, legal, investment, accounting, or other professional advice. Google does not endorse, and expressly disclaims liability for any product, manufacturer, distributor, service or service provider mentioned or any opinion expressed in answers or comments. Please read carefully the Google Answers Terms of Service.

If you feel that you have found inappropriate content, please let us know by emailing us at answers-support@google.com with the question ID listed above. Thank you.
Search Google Answers for
Google Answers  


Google Home - Answers FAQ - Terms of Service - Privacy Policy