mattz84 Posted August 26, 2013 Share Posted August 26, 2013 I'm having a strange problem here. I created the registration.php and connect.php files, but I cannot seem to add the info entered into the form to the SQL table, unless I have the $dbc constants inside the register.php file. Originally, I was using the require() function to pull in the SQL connect file. But I keep getting the "System Error You could not register due to a system error." message when I submit the form. I did several tests to try find out where the problem is and I believe it has something to do with the constants not being able to be used in the require() and include() functions. Also, I found if I copy the contents in the connect.php file into the register.php, it works. I checked my php.ini file, both allow_url_fopen and allow_url_include are on. So I'm not sure why I can't include/require constants in my PHP files. Also, when I used the require() function I was using an absolute URL path to the connect.php file. Any ideas? Thanks! Link to comment Share on other sites More sharing options...
HartleySan Posted August 26, 2013 Share Posted August 26, 2013 Hello and welcome to the forums. Could you please show us some of the relevant code? Thank you. Link to comment Share on other sites More sharing options...
mattz84 Posted August 27, 2013 Author Share Posted August 27, 2013 Sure. Here is the connect.php file: <?phpDEFINE ('DB_USER','root');DEFINE ('DB_PASSWORD','2f8ks32d');DEFINE ('DB_HOST','localhost');DEFINE ('DB_NAME','phpbook');$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) OR die('Could not connect' . mysqli_connect_error());mysqli_set_charset($dbc, 'utf8');?> And here is part of the register.php page: if(empty($errors)){ require('http://localhost/PHP/chp8/connect.php');$q = "INSERT INTO users (user_id, first_name, last_name, email, pass, registration_date) VALUES (0,'$fn', '$ln', '$e', SHA1('$p'), NOW())"; $r = mysqli_query($dbc, $q); if($r){ echo '<h1>Thank you!</h1>'; echo '<p>You are now registered</p>'; } else{ echo '<h1>System Error</h1> <p>You could not register due to a system error.</p>'; echo '<p>' . mysqli_error($dbc) . '<br>' . 'Query:' . $q . '</p>'; } mysqli_close($dbc); } else{ echo '<h1>Error(s)</h1>'; foreach($errors as $msg){ echo '<span class="error"> -'. $msg . '</span><br>'; } } I just noticed, if I change the URL in the require('http://localhost/PHP/chp8/connect.php'); to: require('connect.php'); It works! I don't understand why it wouldn't work with an absolute URL...? Thank you for the reply. Link to comment Share on other sites More sharing options...
Larry Posted August 27, 2013 Share Posted August 27, 2013 Because PHP won't do includes over HTTP unless you've specifically configured it to. This is a difference between using the file system (not HTTP) and using the Web server (HTTP). Link to comment Share on other sites More sharing options...
mattz84 Posted August 27, 2013 Author Share Posted August 27, 2013 Got it. Thanks! Link to comment Share on other sites More sharing options...
Recommended Posts