Jump to content
Larry Ullman's Book Forums
mattz84

Chp 9 Executing Simple Queries - Sql Connect File Constants

Recommended Posts

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!

 

Share this post


Link to post
Share on other sites

Sure.

 

Here is the connect.php file:

<?php
DEFINE ('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.

Share this post


Link to post
Share on other sites

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).

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...