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 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php