2012-06-03 35 views
1

嗨期待T_FUNCTION希望你能幫助我..PHP的解析錯誤:語法錯誤,意想不到的T_STRING,在構建

只是爲了讓你知道提前,我是一個相對較新的PHP編碼器,做練習項目,並遇到了這個問題,我花了一個小時的複查和谷歌搜索,但只是不知道是什麼造成它

錯誤:解析錯誤:語法錯誤,意外的T_STRING,期待T_FUNCTION在C:\ wamp \ www \ forum \ classes \ ClassUser.php on line 7

導致問題的代碼段:

include $_SERVER["DOCUMENT_ROOT"]."forum/classes/general.inc"; 
Class User{ 


__construct($u,$p){ //this is line 7 

    $user=$u; 
    if(strlen($p)>30|| empty($p) || !preg_match('/[^a-zA-Z0-9]/i',$p)){ 
    $password=0; 

    } 
    else{ 
    $password=hash_hmac('md5',$p,KEY); 

    } 

} 

哦,因爲即時通訊新的PHP,如果我做了一些我不應該,請推薦..提前感謝。

注:香港專業教育學院刪除PHP標籤,因爲它們似乎與這個帖子的格式搞亂:/

注2:IM也越來越另一個通知 注意:使用未定義的常量KEY的 - 假設「KEY」的C:\ WAMP \ WWW \論壇\類\ general.inc上線20

,但即時通訊假設一個多錯誤警告的多數民衆贊成...但只是增加櫃面它是與錯誤

general.inc:

//error definations 
define("ERROR_FIELD_EMPTY","Error! All required fields not filled"); 
define("ERROR_INVALID_SIGNIN","Error! Username/password do not match!"); 
define("ERROR_GENERAL_INPUT", "Error! Invalid input given"); 
define("ERROR_SQL_CONNECT","Error! Could not connect to sql database"); 


//field sizes 
define("PASSWORD_LENGTH",12); 
define("USERNAME_LENGTH",30); 

//sql server details 
define("SQL_SERVER_NAME","localhost"); 
define("SQL_SERVER_USERNAME","root"); 
define("SQL_SERVER_PASSWORD",""); 
define("SQL_SERVER_DATABASE","forums"); 

define(KEY,"key"); 


function __autoload($className){ 
    require_once($_SERVER["DOCUMENT_ROOT"]."forum/classes/Class$className.php"); 

} 

ClassUser.php

include $_SERVER["DOCUMENT_ROOT"]."forum/classes/general.inc"; 
    Class User{ 


    __construct($u,$p){ 

     $user=$u; 
     if(strlen($p)>30|| empty($p) || !preg_match('/[^a-zA-Z0-9]/i',$p)){ 
     $password=0; 

     } 
     else{ 
     $password=hash_hmac('md5',$p,KEY); 

     } 

    } 

    public function validate(){ 
     if(strlen($user)>30|| empty($user) || preg_match('/[^a-zA-Z0-9]/i',$password==0)){ 
     throw new Exception(ERROR_GENERAL_INPUT); 



     } 
     $user=mysql_real_escape_string($user); 
     return true; 

    } 

    public function insert(){ 
     // this->validate(); 

     $conn= mysqli_connect(SQL_SERVER_NAME,SQL_SERVER_USERNAME,SQL_SERVER_PASSWORD,SQL_SERVER_DATABASE); 


     if(empty($conn)){ 
     throw new Exception(ERROR_SQL_CONNECT); 
     } 

     $query="INSERT into USERS VALUES ($user,$password)"; 
     $conn->query($query); 



    } 

    private $user; 
    private $password; 

    }; 

NewUser.php

include $_SERVER["DOCUMENT_ROOT"]."forum/classes/general.inc"; 




    try{ 
    $user = new User($_POST['UserName'],$_POST['Password']); 
    $user->insert(); 
    } 

    catch(Exception $Error){ 
    echo $Error->getMessage(); 


    } 
+0

參見手冊上的構造函數:http://www.php.net/manual/en/language.oop5.decon.php – mario

回答

6

__construct需要在它前面的字function,或更好的是public function,與其他方法相同(即validateinsert在你的情況)。

即你需要以下條件:

public function __construct($u,$p){ //this is line 7 
+0

感謝的人..不敢相信我浪費了這麼多時間:'( –

1

行更改爲:

public function __construct($u, $p) { 
相關問題