Re: Re: setting cookie doesn't work

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2009-08-03 at 20:44 +0200, Grega Leskovsek wrote:
> I made two files now of the program: (the main one and the one where I
> set the cookie and open pdf)and I noticed that it doesn't work setting
> the cookie the first time I call the file where I set the cookie but
> only after the second header  redirection.
> How do I refresh the page in php?
> 
> Thanks in advance, Grega from Slovenia
> 
> 2009/8/3 Grega Leskovsek <mavricek@xxxxxxxxx>:
> > And here is the objective:
> > Alter your Acme, Inc. download interface from the previous lesson(I
> > had to not to allow users on computers straing IP with 202 and allow
> > only IE for Win and FF for Mac to download file) so that each user
> > must register her email address in order to download the file. Use
> > cookies to detect whether the user has already registered, and to
> > ensure that the user downloads the file only once within 7 days of
> > registering.
> >
> > As always, validate the forms, comment your code, and explain your results!
> >
> >
> > 2009/8/3 Grega Leskovsek <mavricek@xxxxxxxxx>:
> >> Here is one of my final objectives at PHP introductory course ot
> >> O'Reilly. The strange thing that setting a cookie in that program
> >> les13uadownload.php doesn't work. I don't have a clue - sometimes in
> >> other programs when I run them they set cookies and sometimes not. To
> >> see the full functionality of this "program" I had to set cookie
> >> sevendays in another program. Please check where is my bug. Thanks in
> >> advance, Grega from Slovenia
> >>
> >> <?php
> >> if (!empty($_GET['delete_cookie'])) {
> >>   setcookie("sevendays", "", time()-3600); //delete the cookie to
> >> allow to download the file more than 1x in 7days as another user
> >> }
> >>
> >> if (isset($_POST['check'])AND(isset($_POST['email']))AND(empty($_COOKIE["sevendays"])))
> >> {#user clicked form download button
> >>  $email = $_POST['email'];
> >>  setcookie("sevendays", "email", time()+60*60*24*7);
> >>  $filepath = $_SERVER['DOCUMENT_ROOT']."/.php_files/acme_brochure.pdf";
> >>  if (file_exists($filepath)) {
> >>     header("Content-Type: application/force-download");
> >>     header("Content-Disposition:filename=\"brochure.pdf\"");
> >>     $fd = fopen($filepath,'rb');
> >>     fpassthru($fd);
> >>     fclose($fd);
> >>  }
> >> }#isset(check)
> >> ?>
> >> <script type="text/javascript">
> >>        function setcolor(backgcolor,color) {
> >>                document.getElementById("file").style.color=color;
> >>                document.getElementById("file").style.background=backgcolor;
> >>        }
> >>
> >>  function setStyle(x) {
> >>        document.getElementById(x).style.background="yellow";
> >>  }
> >>  function unSetStyle(x) {
> >>        document.getElementById(x).style.background="white";
> >>  }
> >>
> >>            function isFormValid (formToCheck) {
> >>                retVal = true;
> >>
> >>                if (
> >> (formToCheck.email.value).search(/^[\w!#$%&\'*+\/=?^`{|}~.-]+@(?:[a-z\d][a-z\d-]*(?:\.[a-z\d][a-z\d-]*)?)+\.(?:[a-z][a-z\d-]+)$/i)
> >> == -1 )
> >>                {
> >>                    element = document.getElementById ("new1Label");
> >>                    element.style.color = "red";
> >>                    element.style.fontWeight = "bold";
> >>                    retVal = false;
> >>                    retEmVal = false;
> >>                }
> >>                else
> >>                {
> >>                    element = document.getElementById ("new1Label");
> >>                    element.style.color = "black";
> >>                    element.style.fontWeight = "normal";
> >>                    retEmVal = true;
> >>
> >>                }
> >>
> >>                if (formToCheck.downloaded.value=='no') {
> >>                    ret7daysVal = true;
> >>                }else {
> >>                    ret7daysVal = false;
> >>                }
> >>
> >>                if (!retEmVal)
> >>                {
> >>                    alert ("Please enter a valid e-mail address!");
> >>                    retVal = false;
> >>                }else if (!ret7daysVal)
> >>                {
> >>                    alert ("You can download the file only once in
> >> seven days!");
> >>                    retVal = false;
> >>                }
> >>
> >>                return retVal;
> >>
> >>            }
> >> </script>
> >> <?php
> > //You dont need this line>
> > require($_SERVER['DOCUMENT_ROOT']."/template_top.inc");
> >> $ua = $_SERVER['HTTP_USER_AGENT']."<br />";
> >> if (preg_match("/Macintosh/",$ua)) {
> >>  if (!preg_match("/Firefox/",$ua)) {
> >>    echo "For Macintosh You need to use Firefox! <a
> >> href=\"http://www.apple.com/downloads/macosx/internet_utilities/mozillafirefox.html\";>Download
> >> here ...</a>";
> >>    exit();
> >>  }
> >> }
> >> if (preg_match("/Windows/",$ua)) {
> >>  if (!preg_match("/MSIE/",$ua)) {
> >>    echo "For Windows You need to use Internet Explorer!";
> >>    exit();
> >>  }
> >> }
> >> $ip = $_SERVER['REMOTE_ADDR'];
> >> $ipCheck = substr($ip,0,3);
> >> if ($ipCheck == "202") {echo "I don't trust You."; exit();}
> >> ?>
> >> <?php
> >> if (!empty($_COOKIE["sevendays"])) echo "IN SEVEN
> >> ".$_COOKIE["sevendays"]." DAYS!!!";
> >> if ($_COOKIE["sevendays"]) {
> >>  echo $_COOKIE["sevendays"];
> >>  ?>
> >>  <a href="les13uadownload.php?delete_cookie=1">Not my email: <? echo
> >> $_COOKIE["sevendays"]; ?>?</a>
> >>  <?php
> >> }else {
> >>  ?>
> >>  <form method="post" name="vnosnaForma" action="les12uadownload.php">
> >>  <span id="new1Label">Enter Your e-mail: </span><input type="text"
> >> size="25" name="email" value="<? echo $_COOKIE["sevendays"]; ?>">
> >>  <input type="button" name="button" value="Download now!" onClick="if
> >> (isFormValid(document.vnosnaForma)) {document.vnosnaForma.submit();}"
> >> />
> >>  <input type="hidden" name="check" value="1" />
> >>  <input type="text" name="downloaded" value="<?php if
> >> (!empty($_COOKIE["sevendays"])) echo $_COOKIE["sevendays"]; else echo
> >> "no"; ?>"/>
> >>  </form>
> >>  <?php
> >> }
> > //You dont need this line>
> > require($_SERVER['DOCUMENT_ROOT']."/template_bottom.inc");
> >> print_r($_COOKIE);
> >> echo "XX".$_COOKIE["sevendays"]."XX";
> >> ?>
> >>
> >>
> >> --
> >> When the sun rises I receive and when it sets I forgive ->
> >> http://users.skavt.net/~gleskovs/
> >> All the Love, Grega Leskov'sek
> >>
> >
> >
> >
> > --
> > When the sun rises I receive and when it sets I forgive ->
> > http://users.skavt.net/~gleskovs/
> > All the Love, Grega Leskov'sek
> >
> 
> 
> 
> -- 
> When the sun rises I receive and when it sets I forgive ->
> http://users.skavt.net/~gleskovs/
> All the Love, Grega Leskov'sek
> 
You could send a header() refresh, write some javascript to the page, or
use a meta tag to refresh. Or, you could set the variable in the session
as well, and then you can use code to determine whichever one exists and
use that.


Thanks,
Ash
http://www.ashleysheridan.co.uk


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux