AnimaStone Posted May 17, 2011 Share Posted May 17, 2011 I have an exercise for school that I have to work out. My teacher is letting us figure it out ourselves, but I've ran into some troubles: - We have to make 2 files: sescook1.php and sescook2.php. - We have to make a form for the user to fill out their name and favorite color (in sescook1.php). - We have to check the input (whether there is input or no). If there's isn't any input, we have to echo 'Please fill out __' (in sescook1.php) - We have to store the name in a session variable and the color in a cookievariable (in sescook1.php) - If both fields are filled in, we ave to show a link 'go to the next page' (where 'next page' is an URL to sescook2.php). - All info has to be shown in sescook2.php (Entered name: __, Entered color: ___) - You have a link 'Go back to previous page' (where 'previous page' is an URL to sescook1.php) My code: <?php session_start(); function checkContent() { if($_POST["name"] == "") echo "Please enter your name"; elseif($_POST["favcolor"]) echo "Please enter your favorite color"; else echo "Go to <a href='http://localhost/webadv1011/PHPCookiesSessies/sescook2.php'>next page"; } ?> <form name="color" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" onsubmit="<?php checkContent(); ?>"> <p>Name: <input type="text" name="naam" /></p> <p>Favourite color: <input type="text" name="favcolor" /></p> <p><input type="submit" name="submit" value="send" /></p> </form> This is the code I got so far. My problem is that the page refreshes itself after it does the checkContent function. I'm also not sure how I save my name in a session variable and the color in a cookie variable (and pass them to the next page as well!). We haven't learned anything on cookies and sessions except our own trial and error and things I found on the internet. Unfortunately, I can't really find lots of useful info (most people refer to Ajax, but we can only use php), or I'm looking in the wrong place. Thanks for your help in advance! Quote Link to comment https://forums.phpfreaks.com/topic/236636-php-form-unwanted-refreshingredirecting/ Share on other sites More sharing options...
anupamsaha Posted May 17, 2011 Share Posted May 17, 2011 Try this: <?php session_start(); function checkContent() { if($_POST["name"] == "") echo "Please enter your name"; elseif($_POST["favcolor"]) echo "Please enter your favorite color"; else echo "Go to <a href='http://localhost/webadv1011/PHPCookiesSessies/sescook2.php'>next page"; } ?> <form name="color" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" onsubmit="<?php checkContent(); ?>"> <p>Name: <input type="text" name="naam" value="<?php echo isset($_POST['naam']) ? $_POST['naam'] : '' ?>" /></p> <p>Favourite color: <input type="text" name="favcolor" value="<?php echo isset($_POST['favcolor']) ? $_POST['favcolor'] : '' ?>" /></p> <p><input type="submit" name="submit" value="send" /></p> </form> Quote Link to comment https://forums.phpfreaks.com/topic/236636-php-form-unwanted-refreshingredirecting/#findComment-1216495 Share on other sites More sharing options...
fugix Posted May 17, 2011 Share Posted May 17, 2011 to set your name to a session you can do something like $_SESSION['name'] = $example_name to create a cookie refer to http://us3.php.net/manual/en/function.setcookie.php Also, i advise against using $_SERVER['PHP_SELF']; you can google it to see why.. And I believe you are receiving multiple refreshes etc. because you are trying to incorporate javascript and php in a way that will not give you the results that you want. Quote Link to comment https://forums.phpfreaks.com/topic/236636-php-form-unwanted-refreshingredirecting/#findComment-1216497 Share on other sites More sharing options...
KevinM1 Posted May 17, 2011 Share Posted May 17, 2011 PHP is not like JavaScript. PHP is run on the server, JavaScript in the browser. As such, PHP has no notion of a submit event (or any DOM event). By the time your form is displayed on the screen, your PHP script has finished running. You need something along the lines of: <?php session_start(); function checkContent() { $errors = array(); if (empty($_POST['name'])) { $errors['name'] = "Please enter your name"; } else { $_SESSION['name'] = $_POST['name']; } if (empty($_POST['favcolor'])) { $errors['favcolor'] = "Please enter your favorite color"; } else { // store favcolor in a cookie } if (count($errors) > 0) { foreach($errors as $error) { echo $error . '<br />'; } } else { echo "Go to <a href='http://localhost/webadv1011/PHPCookiesSessies/sescook2.php'>next page</a>"; } } if (isset($_POST['submit')) { checkContent(); } ?> <form name="color" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> <p>Name: <input type="text" name="name" /></p> <p>Favourite color: <input type="text" name="favcolor" /></p> <p><input type="submit" name="submit" value="send" /></p> </form> I left the cookie-setting bit for you to do. Quote Link to comment https://forums.phpfreaks.com/topic/236636-php-form-unwanted-refreshingredirecting/#findComment-1216502 Share on other sites More sharing options...
AnimaStone Posted May 17, 2011 Author Share Posted May 17, 2011 Thanks for all the help already! I didn't really know a lot about the differences between PHP and Javascript, since most of our classes have been self-study... I'll look into the solutions once I get home from class and see if I can solve my problem! Quote Link to comment https://forums.phpfreaks.com/topic/236636-php-form-unwanted-refreshingredirecting/#findComment-1216514 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.