2016-08-23 70 views
-2

我的文件「checkusername.php」中出現錯誤。致命錯誤:調用第4行的C: wamp www Cocolani php req checkusername.php中的null成員函數get()

我得到的錯誤是:

(!) Fatal error: Call to a member function get() on null in C:\wamp\www\Cocolani\php\req\checkusername.php on line 4

有一個 「checkusername.php」 文件:

<?php 
    include_once("../../includes/db.php"); 
    include_once("settings.php"); 
    $db = new database($obj->get("db_name"), $obj->get("db_server"), $obj->get("db_user"), $obj->get("db_password"), $obj->get("url_root")); 

    $username = isset($_POST['username']) ? mysqli_real_escape_string($_POST['username']) : ""; 
    $password = isset($_POST['password']) ? mysqli_real_escape_string($_POST['password']) : ""; 
    $email = isset($_POST['email']) ? mysqli_real_escape_string($_POST['email']) : ''; 
    $birthdate = isset($_POST['birthdate']) ? mysqli_real_escape_string($_POST['birthdate']) : ""; 
    $firstname = isset($_POST['firstname']) ? mysqli_real_escape_string($_POST['firstname']) : ""; 
    $lastname = isset($_POST['lastname']) ? mysqli_real_escape_string($_POST['lastname']) : ""; 
    $sex = isset($_POST['sex']) ? mysqli_real_escape_string($_POST['sex']) : ""; 
    $tribeid = isset($_POST['clan']) ? mysqli_real_escape_string($_POST['clan']) : ""; 
    $mask = isset($_POST['mask']) ? mysqli_real_escape_string($_POST['mask']) : ""; 
    $mask_color = isset($_POST['maskcl']) ? mysqli_real_escape_string($_POST['maskcl']) : ""; 
    $lang_id = isset($_POST['lang_id']) ? addslashes($_POST['lang_id']) : 0; 
    $error = ''; 

    // get language suffix 
    if ($lang_id != 0) { 
    $db->setQuery("SELECT * FROM `cc_extra_langs` WHERE id='{$lang_id}'"); 
    $res = $db->loadResult(); 
    $lang = "_".$res->lang; 
    } else $lang = ""; 

    $reg_ok = true; 

    $db->setQuery("SELECT one_email_per_registration FROM `cc_def_settings`"); 
    $res = $db->loadResult(); 
    $one_registration_per_email = ($res->one_email_per_registration == 1); 

    $email_check_ok = true; 
    if ($one_registration_per_email == true) { 
    $sql = "SELECT COUNT(*) AS counter FROM `cc_user` WHERE email='{$email}'"; // for several registrations per one email address -- no check 
     $db->setQuery($sql); 
     $res1 = $db->loadResult(); 
     $email_check_ok = $res1->counter == "0"; 
    } 
    if ($email_check_ok == false) { 
    $sql = "SELECT * FROM `cc_translations` WHERE caption='DUPLICATED_EMAIL'"; 
    $db->setQuery($sql); 
    $res = $db->loadResult(); 
     echo 'error='.urlencode($res->{"name".$lang}); 
     $reg_ok = false; 
    } 

    /*if ($reg_ok && $email != '') { 
     // get number of already registered number of registrations with this email address   
     $sql = "SELECT count(*) as registered_num_emails FROM `cc_user` WHERE email='{$email}'"; 
     $query = $db->setQuery($sql); 
     $row = mysql_fetch_object($query); 
     $registered_num_emails = $row->registered_num_emails; 

     $sql = "SELECT max_num_account_per_email from `cc_def_settings`"; 
     $query = $db->setQuery($sql); 
     $row = mysql_fetch_object($query); 

     // it's possible to create new registration using this email address 
     if ($registered_num_emails >= $row->max_num_account_per_email) { 
     $sql = "SELECT * FROM `cc_translations` WHERE caption='MAX_NUM_REGISTRATION_REACHED'"; 
     $db->setQuery($sql); 
     $res = $db->loadResult(); 
      echo 'error='.urlencode($res->{"name".$lang}); 
     $reg_ok = false; 
     } 
    }*/ 
//////// 
//  echo 'error=111'; 
//  $reg_ok = false; 
//////// 


    if ($reg_ok) { 
    // check for swear words  
    $db->setQuery("SELECT COUNT(*) as counter from `cc_swear_words` where INSTR('".$username."', `name`)"); 
    $res2 = $db->loadResult(); 
    if ((int)($res2->counter) > 0) { // swear word founded! 
     $sql = "SELECT * FROM `cc_translations` WHERE caption='USERNAME_NOT_PERMITTED'"; 
     $db->setQuery($sql); 
     $res = $db->loadResult(); 
     echo 'error='.urlencode($res->{"name".$lang}); 
     $reg_ok = false; 
    } 
    } 

    if ($reg_ok) { 
    // first check there is no username with this name already registered. 
    $db->setQuery("SELECT COUNT(*) AS counter FROM `cc_user` WHERE username='".$username."'"); 
    $res = $db->loadResult(); 
    if ((int)($res->counter) > 0) { // swear word founded! 
     // get warning message from db 
     $db->setQuery("SELECT * FROM `cc_translations` WHERE caption='USERNAME_IN_USE'"); 
     $res = $db->loadResult(); 
     echo 'error='.urlencode($res->{"name".$lang}); 
     $reg_ok = false; 
     } 
    } 

    if ($reg_ok) echo 'result=true'; 

?> 

第4行的問題是:

$db = new database($obj->get("db_name"), $obj->get("db_server"), $obj->get("db_user"), $obj->get("db_password"), $obj->get("url_root")); 

有一個 「的settings.php」:

<?php 

    $db_server = "localhost"; 
    $db_user = "root"; 
    $db_password = "pass1234"; 
    $db_name = "cocolani_battle"; 
    $appsecret = "80f730a73ac60417c36c341bc975f6f1";  

    $connect = mysqli_connect("$db_server","$db_user","$db_password","$db_name"); 


?> 

,有一個 「db.php中」:

<?php 

/* 
Usage 
$db = new database($dbname); 

for selects: 
$db->setQuery("SELECT * FROM `table`") 
$resultArray = $db->loadResults(); 

$db->setQuery("SELECT * FROM `table` WHERE `primary_id` = '1'"); 
$resultObject = $db->loadResult(); 

for inserts: 
$db->setQuery("INSERT INTO `table` (`id`, `example`) VALUES ('1', 'abc')"); 
if (!$db->runQuery()) { 
    echo $db->getError(); 
} 
*/ 


class database { 
    var $_debug = 0; 
    var $_sql = ''; 
    var $_error = ''; 
    var $_prefix = ''; 

    var $_numrows = 0; 

    var $_DBhost = 'localhost'; 
    var $_DBuser = "root"; 
    var $_DBpass = "pass1234"; 
    var $_DBname = "cocolani_battle"; 
    var $url_root = "localhost/cocolani"; 

    public function __construct($dbname = 'cocolani_battle', $dbuser = 'root', $dbpsw = 'pass1234', $dbhost = 'localhost', $urlroot = 'localhost/cocolani') { 

      $this->_DBname = 'cocolani_battle'; 
      $this->_DBuser = 'root'; 
      $this->_DBpass = 'pass1234'; 
      $this->url_root = 'localhost/cocolani'; 
      $this->_DBhost = 'localhost'; 

     $this->_connection = mysqli_connect($this->_DBhost, $this->_DBuser, $this->_DBpass) or die("Couldn't connect to MySQL"); 
     mysqli_select_db($this->_connection, $this->_DBname) or die("Select DB Error: ".mysqli_error()); 

    } 

    public function __destruct() { 
     mysqli_close($this->_connection); 
    } 

    function debug($debug_level) { 
     $this->_debug = intval($debug_level); 
    } 

    function setQuery($sql) { 
     /* queries are given in the form of #__table need to replace that with the prefix */ 
     $this->_sql = str_replace('#__', $this->_prefix.'_', $sql); 
    } 

    function getQuery() { 
     return "<pre>" . htmlspecialchars($this->_sql) . "</pre>"; 
    } 

    function prepareStatement($sql) { 
     $this->sql = mysqli_prepare($this->_connection, $sql); 
     return $this->sql; 
    } 

    function runQuery($num_rows=0) { 
     mysqli_select_db($this->_connection, $this->_DBname) or die("Select DB Error: ".mysqli_error()); 

     $this->_numrows = 0; 
     $result = mysqli_query($this->_connection, $this->_sql); 
     if ($this->_debug > 1) echo "<pre>" . htmlspecialchars($this->_sql) . "</pre>"; 

     if (!$result) { 
      $this->_error = mysqli_error($this->_connection); 
      if ($this->_debug) { 
       echo 'Error: ' . $this->getQuery() . $this->_error; 
      } 
      return false; 
     } 
     if ($num_rows) { 
      $this->_numrows = mysqli_num_rows($result); 
     } 
     return $result; 
    } 

    /* Retrieve Mysql insert id */ 
    function mysqlInsertID() { 
     $insert_id = mysqli_insert_id(); 
     return $insert_id; 
    } 

/* Escapes special characters while inserting to db */ 
    function db_input($string) { 
     if (is_array($string)) { 
      $retArray = array(); 
      foreach($string as $key => $value) { 
       $value = (get_magic_quotes_gpc() ? stripslashes($value) : $value); 
       $retArray[$key] = mysqli_real_escape_string($value); 
      } 
      return $retArray; 
     } else { 
      $string = (get_magic_quotes_gpc() ? stripslashes($string) : $string); 
      return mysqli_real_escape_string($string); 

     } 
    } 


    function getError() { 
     return $this->_error; 
    } 
    /* Load results into csv formatted string */ 
    function loadCsv() { 
     if (!($res = $this->runQuery())) { 
      return null; 
     } 

     $csv_string = ''; 
     while ($row = mysqli_fetch_row($res)) { 
      $line = ''; 
      foreach($row as $value) {            
       if ((!isset($value)) || ($value == "")) { 
        $value = ","; 
       } else { 
        $value = $value. ","; 
        $value = str_replace('"' , '""' , $value); 
       } 
       $line .= $value; 
      } 
      $line = substr($line, 0, -1); 
      $csv_string .= trim($line) . "\n"; 
     } 
     $csv_string = str_replace("\r" , "" , $csv_string); 
      //$csv_string .= implode(",", $row) . "\n"; 
     mysqli_free_result($res); 
     return $csv_string; 
    } 

    /* Load multiple results */ 
    function loadResults($key='') { 
     if (!($res = $this->runQuery())) { 
      return null; 
     } 
     $array = array(); 

     while ($row = mysqli_fetch_object($res)) { 
      if ($key) { 
       $array[strtolower($row->$key)] = $row; 
      } else { 
       $array[] = $row; 
      } 
     } 
     mysqli_free_result($res); 
     return $array; 
    } 

    function loadResult() { 
     if (!($res = $this->runQuery())) { 
      if ($this->_debug) echo 'Error: ' . $this->_error; 
      return null; 
     } 
     $row = mysqli_fetch_object($res); 
     mysqli_free_result($res); 
     return $row; 
    } 

    /* Load a result field into an array */ 
    function loadArray() { 
     if (!($res = $this->runQuery())) { 
      return null; 
     } 
     $array = array(); 
     while ($row = mysql_fetch_row($res)) { 
      $array[] = $row[0]; 
     } 
     mysqli_free_result($res); 
     return $array; 
    } 

    /* Load a row into an associative an array */ 
    function loadAssoc() { 
     if (!($res = $this->runQuery())) { 
      return null; 
     } 
     $row = mysqli_fetch_assoc($res); 
     mysqli_free_result($res); 
     return $row; 
    } 

    /* Return one field */ 
    function loadField() { 
     if (!($res = $this->runQuery())) { 
      return null; 
     } 
     while ($row = mysql_fetch_row($res)) { 
      $field = $row[0]; 
     } 
     mysqli_free_result($res); 
     return $field; 
    } 

} 

    /*if ($_SERVER["SERVER_ADDR"] == '127.0.0.1') { 
    $url_root = "http://cocolani.localhost"; 
    } else { 
    $url_root = "http://dev.cocolani.com"; 
    }*/ 


?> 

如何解決這個問題?

+0

您沒有在任何地方定義'$ obj'。 – aynber

+0

阿哈好吧,那我該怎麼辦? – user6738595

+0

只需使用您在設置文件中定義的變量即可。如果你不打算使用不同的設置,或者將它硬編碼到你的數據庫類中。 – aynber

回答

-1

正如我在我的評論中提到,您可以使用您在settings.php文件中定義的變量:

$db = new database($db_name, $db_server, $db_user, $db_password, $db_urlroot); // You didn't define $db_urlroot anywhere, but you can define it 

或硬編碼到您的類。你沒有使用你通過的變量,所以沒有必要去問他們。

public function __construct() { 
+0

謝謝你。它的工作,現在你可以給我你的帳戶在Facebook上與您聯繫? – user6738595

+0

對不起,出於安全原因,這些信息是私人的。 – aynber

+0

oh :(確定..其他文件中有一些問題可以幫我嗎 – user6738595

相關問題