2015-11-21 2 views
1

Я работаю над очень простой системой CMS для школьного проекта, и у меня проблемы.PHP - include_once/include not working

Прямо сейчас, моя веб-страница создана как так:

  • Каждый веб-страницы, я создаю, что пользователь может получить доступ - в верхней и нижней части, у меня есть include_once (header.php) и include_once (footer.php) соответственно. Они содержат верхнюю и нижнюю части каждой загружаемой страницы.

В моем header.php у меня есть это, наряду с другими разных HTML:

<?php require_once('php/constants.php'); require_once("php/functions.php"); ?>

Для constants.php - Содержит каждый определенный постоянный я могу думать, так как я предпочел бы изменить одна константа здесь, чем поиск в моем коде, чтобы найти множество случаев, которые я мог бы найти в другом месте.

For Functions.php - содержит каждую функцию, которую я создаю для использования на этой CMS. Содержит все функции электронной почты, используя PHPMailer, для регистрации и входа в систему с использованием взаимодействия MeekroDB для взаимодействия с базой данных.

В этом проблема.

На странице у меня есть для регистрации учетной записи, есть кое-что вдоль линий этого

//get the username, password, first/last name, and send it to register function. 
     $firstName = $_POST['first_name']; 
     $lastName = $_POST['last_name']; 
     $password = $_POST['password']; 
     $email_address = $_POST['email_address']; 

     //register the user. where register() is in functions.php 
     if(register($email_address, $password, $firstName, $lastName)) 
     { 
      echo "REGISTRATION SUCCESSFUL"; 
     } 
     else 
     { 
      echo "REGISTRATION UNSUCCESSFUL";  
     } 

В моем файле functions.php, я объявляю свою информацию из базы данных с помощью DB :: назначение ЗАПРОСА что MeekroDB упоминает I использовать.

//MeekroDB - Used for database CRUDding 
require_once("php/meekrodb.php"); 
DB::$user = 'root'; //yes i'll change this later 
DB::$password = ''; //this too 
DB::$dbName ="testDB"; 

В реальной функции регистра у меня есть это:

function register($email, $password, $firstName, $lastName) 
{ 
    //check to see if the user already exists 
    //poll the DB to see if the email is already in there. 
    $results = DB::QUERY("SELECT email FROM users WHERE email = %s", $email); 

    //if there is a row in the DB with this email... 
    if(DB::count() >= 1) 
    { 
     return false; 
    } 
    else 
    { 
     //lets prepare the user for insertion into the database. 
     $username = $firstName . '_' . $lastName; 
     //generate a salt for database insertion and password hashing 
     $salt = hash('sha512', uniqid(mt_rand(1, mt_getrandmax()), true)); 
     $password = hash('sha512', $password . $salt); 

     //create the insert statement array for insertion. 
     $insertionArray = 
     array(
      'username' => $username, 
      'password' => $password, 
      'email' => $email, 
      'salt'  => $salt, 
      'isAdmin' => 0 
     ); 

     //insert the new user into the database. 
     DB::INSERT('users', $insertionArray); 

     //Send a registration email to the new user. 
     //Send an email to the user stating they've registered. 
     $mailer = createMailer(); 

     //set the contents of the email 
     $mailer->MsgHTML(generateEmail_Registration($username)); 

     //set the destination address 
     $mailer->AddAddress($email, $firstName . ' ' . $lastName); 

     if($mailer->Send()) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

}  

Для меня, это должно работать.

ОДНАКО:

Когда я пытаюсь запустить функцию регистра(), я в конечном итоге получить тонны ошибок, связанных с MeekroDB, и я не уверен на 100%, как исправить их (будь то ВКЛЮЧИТЬ вопрос, а может быть, это что-то с meekroDB?)

Вот ошибки, которые я получаю.

Warning: mysqli::set_charset(): invalid object or resource mysqli in D:\xampp\htdocs\finalproject\php\meekrodb.php on line 186 

Warning: MeekroDB::get(): Property access is not allowed yet in D:\xampp\htdocs\finalproject\php\meekrodb.php on line 188 

Warning: mysqli::real_escape_string(): invalid object or resource mysqli in D:\xampp\htdocs\finalproject\php\meekrodb.php on line 496 

Warning: mysqli::query(): invalid object or resource mysqli in D:\xampp\htdocs\finalproject\php\meekrodb.php on line 628 

Warning: MeekroDB::queryHelper(): Property access is not allowed yet in D:\xampp\htdocs\finalproject\php\meekrodb.php on line 662 

Warning: MeekroDB::queryHelper(): Property access is not allowed yet in D:\xampp\htdocs\finalproject\php\meekrodb.php on line 663 

Warning: mysqli::real_escape_string(): invalid object or resource mysqli in D:\xampp\htdocs\finalproject\php\meekrodb.php on line 496 

Warning: mysqli::real_escape_string(): invalid object or resource mysqli in D:\xampp\htdocs\finalproject\php\meekrodb.php on line 496 

Warning: mysqli::real_escape_string(): invalid object or resource mysqli in D:\xampp\htdocs\finalproject\php\meekrodb.php on line 496 

Warning: mysqli::real_escape_string(): invalid object or resource mysqli in D:\xampp\htdocs\finalproject\php\meekrodb.php on line 496 

Warning: mysqli::query(): invalid object or resource mysqli in D:\xampp\htdocs\finalproject\php\meekrodb.php on line 628 

Warning: MeekroDB::queryHelper(): Property access is not allowed yet in D:\xampp\htdocs\finalproject\php\meekrodb.php on line 662 

Warning: MeekroDB::queryHelper(): Property access is not allowed yet in D:\xampp\htdocs\finalproject\php\meekrodb.php on line 663 
REGISTRATION UNSUCCESSFUL //of course. 

Я думаю, что это что-то делать с тем, как я в том числе мои различные PHP файлы, и что в свою очередь является buggering мое соединение MeekroDB каким-то образом.

Если вам, ребята, нужна дополнительная информация, дайте мне знать, но я думаю, что набрал все на столе.

Я не прихожу сюда часто, поэтому, если я где-то пропустил какой-то эттикет, я заранее извиняюсь.

Спасибо! :)

ответ

1

Если вы следуете в файле meekrodb.php, первая ошибка вызывается на ваш объект $ mysql, который только что попытался подключиться (посмотрите на meekrodb.php-файл, чтобы увидеть, о чем я говорю), поэтому эти ошибки, вероятно, связаны с плохой или неверной информацией о соединении с базой данных, и поэтому другие функции не работают.

Простой способ увидеть более информативные ошибки было бы попробовать использовать их $throw_exception_on_error функцию:

function register($email, $password, $firstName, $lastName) 
{ 
    //check to see if the user already exists 
    //poll the DB to see if the email is already in there. 
    DB::$error_handler = false; // since we're catching errors, don't need error handler 
    DB::$throw_exception_on_error = true; 

    try { 
     $results = DB::QUERY("SELECT email FROM users WHERE email = %s", $email); 
    } catch(MeekroDBException $e) { 
     echo "Error: " . $e->getMessage() . "<br>\n"; // this should be a better error... 
     echo "SQL Query: " . $e->getQuery() . "<br>\n"; // SELECT email FROM users... 

    } 
    ... 
+0

Я проверю это прочь, как правильный ответ, так как вы правильно там быть нечетной информацией (проклятые опечатки) Большое спасибо. плюс я не знал о исключении throw из части ошибки. спасибо за это – Pilapodapostache

+0

Нет пота - удачи в вашем проекте! –

0

Если это была проблема с включаемый/include_once вы получите совершенно разные сообщения. Сначала я бы рекомендовал использовать последнюю версию библиотеки, которая составляет 2,3, и, самое главное, проверить, какую версию PHP вы используете.

Из того, что я могу сказать, что есть, скорее всего, проблема с MySQLi связи и в зависимости от версии PHP проверки, чтобы гарантировать, что соединение не удалось имел проблемы, как найти на этой странице http://php.net/manual/en/mysqli.connect-error.php

Предупреждение Свойство mysqli-> connect_error работает корректно только с PHP версий 5.2.9 и 5.3.0. Используйте функцию mysqli_connect_error(), если требуется совместимость с более ранними версиями PHP.

Как нет связи, это вызовет несколько предупреждений, которые вы видите в этой форме.

Предупреждения: Mysqli :: method_name(): неверный объект или ресурс Mysqli