r2get Posted August 18, 2013 Share Posted August 18, 2013 (edited) Hello all, This is my first post. Im trying to learn PHP from scratch. So for myself im making a registration system and some other things but there is something strange happening and i can not figure it out. I have a registration form that makes a email activation link. So now on activation.php im doing something like this <?phpif (isset($_GET['emailcode'])) { $emailcode = strip_tags(trim($_GET['emailcode'])); //Check if only numbers and letters if (!preg_match("/^[a-zA-Z0-9]+$/", $emailcode)){ echo $emailcode; $errors[] = 'code is not ok..'; } else { activateUser($emailcode); } } activateUser goes tot functions.php where i do this function activateUser($emailcode) { $sql = "SELECT * FROM users WHERE emailcode='$emailcode' LIMIT 1"; $query = mysqli_query($db_connect, $sql); $code_check = mysqli_num_rows($query); if ($code_check == 1) { echo 'exists'; } } the strange thing is, it returns nothing.. but when i attach te code on the activation page itself like this: <?phpif (isset($_GET['emailcode'])) { $emailcode = strip_tags(trim($_GET['emailcode'])); //Check if only numbers and letters if (!preg_match("/^[a-zA-Z0-9]+$/", $emailcode)){ echo $emailcode; $errors[] = 'De door jou opgegeven email code klopt niet'; } else { $sql = "SELECT * FROM users WHERE emailcode='$emailcode' LIMIT 1"; $query = mysqli_query($db_connect, $sql); //Tellen hoeveel rijen er gevonden zijn 0 of 1 $code_check = mysqli_num_rows($query); if ($code_check == 1) { echo 'exists'; } } } ?> it does work.... what am i doing wrong? on the activation page I have included de db connect and the functions... Edited August 18, 2013 by r2get Quote Link to comment Share on other sites More sharing options...
rk8479 Posted August 18, 2013 Share Posted August 18, 2013 Hi, could you please post ALL related code and files, we need to see all of the page contents also; you dont have a closing ?> after else {activateUser($emailcode);}} that maybe why its not working, if not then come back with all the code from the pages please Quote Link to comment Share on other sites More sharing options...
r2get Posted August 18, 2013 Author Share Posted August 18, 2013 here is actiovation .php <?php include_once('config/db_connect.php'); include_once('config/init.php'); include_once ('functions/functions.php'); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>ASK</title> <script type="text/javascript"> WebFontConfig = { google: { families: [ 'PT+Sans:400,700:latin' ] } }; (function() { var wf = document.createElement('script'); wf.src = ('https:' == document.location.protocol ? 'https' : 'http') + '://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js'; wf.type = 'text/javascript'; wf.async = 'true'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(wf, s); })(); </script> <link href='http://fonts.googleapis.com/css?family=PT+Sans:400,700' rel='stylesheet' type='text/css'> <!-- MAIN STYLE --> <link rel="stylesheet" href="assets/css/style.css"> <!-- BOOTSTRAP STYLE http://twitter.github.com/bootstrap/ --> <link rel="stylesheet" href="assets/css/bootstrap.css" media="screen"> <!-- BOOTSTRAP MODAL EXTEND https://github.com/jschr/bootstrap-modal/ --> <link rel="stylesheet" href="assets/css/bootstrap-modal.css" media="screen" /> <!-- JQUERY --> <script type="text/javascript" src="assets/js/jquery-1.9.1.min.js"></script> <!-- REGISTER JS --> <script type="text/javascript" src="assets/js/register.js"></script> <!-- BOOTSTRAP JS, ADDONS & CUSTOM --> <script type="text/javascript" src="assets/js/script.js"></script> <script type="text/javascript" src="assets/js/bootstrap.min.js"></script> </head> <body> <?php include_once('template/topNav.php'); ?> <!-- BEGIN MAIN CONTAINER --> <div id="mainContainer" class="container"> <?php include_once('template/mainHeader.php'); ?> <div class="row" id="activateBody"> <!-- <img src="assets/img/signup-right.png" /> --> Dit is de activerings pagina.... <?php if (isset($_GET['emailcode'])) { $emailcode = strip_tags(trim($_GET['emailcode'])); //Check if only numbers and letters if (!preg_match("/^[a-zA-Z0-9]+$/", $emailcode)){ echo $emailcode; $errors[] = 'De door jou opgegeven email code klopt niet'; } else { $sql = "SELECT * FROM users WHERE emailcode='$emailcode' LIMIT 1"; $query = mysqli_query($db_connect, $sql); //Tellen hoeveel rijen er gevonden zijn 0 of 1 $code_check = mysqli_num_rows($query); if ($code_check == 1) { echo 'exists'; } } } ?> </div> </div> <?php include_once('template/footer.php'); ?> <!-- END MAIN CONTAINER --> </body> </html> ans here is functions <?phpfunction activateUser($emailcode) { $sql = "SELECT * FROM users WHERE emailcode='$emailcode' LIMIT 1"; $query = mysqli_query($db_connect, $sql); //Tellen hoeveel rijen er gevonden zijn 0 of 1 $code_check = mysqli_num_rows($query); if ($code_check == 1) { echo 'exists'; } } ?> but please refer back to origial post because now i have put the code in activation to test.. but i want this in functions.. Quote Link to comment Share on other sites More sharing options...
Barand Posted August 18, 2013 Share Posted August 18, 2013 It's a question of variable scope. Your $db_connect variable is no available inside the function, you need to pass it to the function as a an argument when you call the function. http://php.net/manual/en/language.variables.scope.php Quote Link to comment Share on other sites More sharing options...
r2get Posted August 18, 2013 Author Share Posted August 18, 2013 It's a question of variable scope. Your $db_connect variable is no available inside the function, you need to pass it to the function as a an argument when you call the function. http://php.net/manual/en/language.variables.scope.php ok but if i include the connect in the function then it should also work right? but it does not.. Quote Link to comment Share on other sites More sharing options...
KevinM1 Posted August 19, 2013 Share Posted August 19, 2013 How are you "including" it? Quote Link to comment Share on other sites More sharing options...
jazzman1 Posted August 19, 2013 Share Posted August 19, 2013 (edited) I think, that's a logic error b/s of if{}else{} block and the $emailcode has never been assigned a value as an argument to the activateUser function. So, try something like that: <?php if (isset($_GET['emailcode'])) { $emailcode = strip_tags(trim($_GET['emailcode'])); //Check if only numbers and letters if (!preg_match("/^[a-zA-Z0-9]+$/", $emailcode)){ $errors[] = 'De door jou opgegeven email code klopt niet'; } // check for errors if (!empty($errors)) { // display the errors and return false } else{ // call the activateUser function and procced the query statement activateUser($emailcode); } } Edited August 19, 2013 by jazzman1 Quote Link to comment 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.