silverglade Posted June 19, 2011 Share Posted June 19, 2011 Hi, I used the following script to make new users register to my site, it is just in the beginning. The registration confirmation email works great, the info gets updated into the database fine, and it outputs "congratulations" message after that. But the problems is, the congratulations X is now the owner of ....an account" keeps showing up on the page even when I leave the page and refresh the page the congratulations message is still there. Any help greatly appreciated. thank you. <?php $host = "host"; $database = "db"; $username = "user"; $password = "pass"; mysql_connect($host, $username, $password) or die("Could not connect: " . mysql_error()); mysql_select_db($database); if ($_POST['form_submitted'] == '1') { ##User is registering, insert data until we can activate it $activationKey = mt_rand() . mt_rand() . mt_rand() . mt_rand() . mt_rand(); $username = mysql_real_escape_string($_POST[username]); $password = mysql_real_escape_string($_POST[password]); $email = mysql_real_escape_string($_POST[email]); $sql="INSERT INTO users (username, password, email, activationkey, status) VALUES ('$username', '$password', '$email', '$activationKey', 'verify')"; if (!mysql_query($sql)) { die('Error: ' . mysql_error()); } echo "An email has been sent to $_POST[email] with an activation key. Please check your mail to complete registration."; ##Send activation Email $to = $_POST[email]; $subject = " YOURWEBSITE.COM Registration"; $message = "Welcome to our website!\r\rYou, or someone using your email address, has completed registration at YOURWEBSITE.com. You can complete registration by clicking the following link:\rhttp://www.derekvanderven.com/PHOTO_SITE/verify_artist.php?$activationKey\r\rIf this is an error, ignore this email and you will be removed from our mailing list.\r\rRegards,\ YOURWEBSITE.com Team"; $headers = 'From: noreply@ YOURWEBSITE.com' . "\r\n" . 'Reply-To: noreply@ YOURWEBSITE.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); } else { ##User isn't registering, check verify code and change activation code to null, status to activated on success $queryString = $_SERVER['QUERY_STRING']; $query = "SELECT * FROM users"; $result = mysql_query($query) or die(mysql_error()); while($row = mysql_fetch_array($result)){ if ($queryString == $row["activationkey"]){ echo "Congratulations!" . $row["username"] . " is now the proud new owner of an YOURWEBSITE.com account."; $sql="UPDATE users SET activationkey = '', status='activated' WHERE (id = $row[id])"; if (!mysql_query($sql)) { die('Error: ' . mysql_error()); } } } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <style type="text/css"> <!-- </style> </head> <body> <p align="center"> <br /><form action="verify_artist.php" method="post" name="register"> Username: <input type="text" name="username" /><br/> Password: <input type="password" name="password" /><br /> Email: <input type="text" name="email" /><br /> <input type="hidden" name="form_submitted" value="1"/> <input type="submit" /> </form> </body> </html> Link to comment https://forums.phpfreaks.com/topic/239830-registration-script-problem/ Share on other sites More sharing options...
rdkd1970 Posted June 20, 2011 Share Posted June 20, 2011 try making this line and if instead of a while statement see how that works. while statements keep going. while($row = mysql_fetch_array($result)){ Link to comment https://forums.phpfreaks.com/topic/239830-registration-script-problem/#findComment-1231978 Share on other sites More sharing options...
silverglade Posted June 20, 2011 Author Share Posted June 20, 2011 Thank you for replying rdkd1970, After much headache, searching, pulling my strained eyes out, and cursing, I have managed to get a working version of the code that some guy posted who knew about as much php as I do. It is very pathetic to find these tutorials that I desperately need, only to find up they are all screwed up, and it takes me almost 10 times longer to fix someone elses crap code than if I were to just try to code it myself completely with no tutorial (I doubt it). For anyone that wants a spaghetti coded registration script that your grandma wouldn't use, after I fixed it. here it is below. I have tested it. SQL FILE. import this to your databse. CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL auto_increment, `status` varchar(20) NOT NULL, `username` varchar(20) NOT NULL, `password` varchar(20) NOT NULL, `email` varchar(20) NOT NULL, `activationkey` varchar(100) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`), UNIQUE KEY `email` (`email`), UNIQUE KEY `activationkey` (`activationkey`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ; and here is the code after I have a huge headache. <?php $host = " "; $database = " "; $username = " "; $password = " "; mysql_connect($host, $username, $password) or die("Could not connect: " . mysql_error()); mysql_select_db($database); if ($_POST['form_submitted'] == '1') { ##User is registering, insert data until we can activate it $activationKey = mt_rand() . mt_rand() . mt_rand() . mt_rand() . mt_rand(); $username = mysql_real_escape_string($_POST[username]); $password = mysql_real_escape_string($_POST[password]); $email = mysql_real_escape_string($_POST[email]); $sql="INSERT INTO users (username, password, email, activationkey, status) VALUES ('$username', '$password', '$email', '$activationKey', 'verify')"; if (!mysql_query($sql)) { die('Error: ' . mysql_error()); } echo "An email has been sent to $_POST[email] with an activation key. Please check your mail to complete registration."; ##Send activation Email $to = $_POST[email]; $subject = " YOURWEBSITE.COM Registration"; $message = "Welcome to our website!\r\rYou, or someone using your email address, has completed registration at YOURWEBSITE.com. You can complete registration by clicking the following link:\rhttp://www.YOURWEBSITE/verify_artist.php?$activationKey\r\rIf this is an error, ignore this email and you will be removed from our mailing list.\r\rRegards,\ YOURWEBSITE.com Team"; $headers = 'From: noreply@ YOURWEBSITE.com' . "\r\n" . 'Reply-To: noreply@ YOURWEBSITE.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); } else { ##User isn't registering, check verify code and change activation code to null, status to activated on success $queryString = $_SERVER['QUERY_STRING']; $query = "SELECT * FROM users"; $result = mysql_query($query) or die(mysql_error()); /*if*/ while($row = mysql_fetch_array($result)){ if ($queryString == $row["activationkey"]){ echo "Congratulations!" . $row["username"] . " is now the proud new owner of an YOURWEBSITE.com account."; $sql=" UPDATE users SET status='activated' WHERE (id = $row[id])"; //UPDATE users SET activationkey = '', //$sql="UPDATE users SET activationkey = 'Done-$row[id]', status='activated' WHERE (id = $row[id])"; if (!mysql_query($sql)) { die('Error: ' . mysql_error()); } } } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <p align="center"> <br /><form action="verify_artist.php" method="post" name="register"> Username: <input type="text" name="username" /><br/> Password: <input type="password" name="password" /><br /> Email: <input type="text" name="email" /><br /> <input type="hidden" name="form_submitted" value="1"/> <input type="submit" /> </form> </body> </html> Link to comment https://forums.phpfreaks.com/topic/239830-registration-script-problem/#findComment-1231992 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.