2011-03-29 19 views
0

我一直收到這個錯誤。我不知道爲什麼...謝謝Php錯誤注意:未定義的索引:用戶名C: wamp www tweetball classes word.class.php 35行

注意:未定義指數:用戶名在C:\ WAMP \ WWW \ tweetball \類\ word.class.php上線35

<?php 
session_start(); 
class Word 
{ 

    private $m_sWord; 
    private $m_sMessage; 
    private $link; 
    public function __set($p_sProperty, $p_vValue) 
    { 
     switch($p_sProperty) 
     { 
      case "Message": 
       $this->m_sMessage = $p_vValue; 
       break; 
     }  
    } 

    public function __get($p_sProperty) 
    { 
     $vResult = null; 
     switch($p_sProperty) 
     { 
     case "Message": 
      $vResult = $this->m_sMessage; 
      break; 
     } 
     return $vResult; 
    } 

    public function Save() 
    { 
     include("Connection.php"); 
     $sSql = "insert INTO words (word, FK_UserID) VALUES ('$_POST[message]','$_POST[UserID]')"; 

     if ($rResult = mysqli_query($this->link, $sSql)) 
     { 
      echo ""; 
     } 
     else 
     {  
      throw new Exception('We could not save your word!');  
     }     
     mysqli_close($this->link); 
    } 



    public function CreateNew() 
     { 
      $m_sHost = "localhost"; 
      $m_sUser = "root"; 
      $m_sPassword = ""; 
      $m_sDatabase = "tweetball"; 

       $link = mysqli_connect($m_sHost,$m_sUser,$m_sPassword,$m_sDatabase); 
       if($link!=null){ 
        $this->link=$link; 
       } 
       else 
       { 
        throw new Exception("There seems to be a database problem. Try again later"); 
       } 

    } 
    public function getWord() 
    { 


      $m_sHost = "localhost"; 
      $m_sUser = "root"; 
      $m_sPassword = ""; 
      $m_sDatabase = "tweetball"; 


     $sSql = "select * from tweetball where WordID = 1;";  
     if ($rResult = mysqli_query($this->link, $sSql)) 
     { 
      $singleRecord = mysqli_fetch_assoc($rResult); 

      $message = $singleRecord['Word']; 
     } 
     else 
     {  
      throw new Exception('We could get your word!'); 
     }     
     mysqli_close($link); 
     return($message); 
    } 

} 
?> 
+4

我還需要一些時間來了解[SQL注入](http://stackoverflow.com/questions/332365/xkcd-sql-injection-please-explain)。 – 2011-03-29 17:39:51

回答

1

你」重新得到這個錯誤是因爲你引用了一個沒有爲數組定義的數組鍵(「_ID」)。快速瀏覽一下你的SQL查詢,我注意到你的密鑰不在引號中,他們需要。

我不會評論它是多麼令人難以置信的不安全的輸入未經檢查。用戶數據到您的數據庫

0

這不是一個真正的錯誤,但更多的是通知。它告訴你,你正在嘗試使用未被手動設置的變量。如果設置不當,可能導致可變注入。

您可以通過關閉PHP錯誤通知(如果你確定你的PHP設置都設置了安全,嘗試使用它們或調用它之前使用if(isset($variable))之前定義的所有或變量解決這個問題。

0
$sSql = "insert INTO words (word, FK_UserID) 
    VALUES ('$_POST[message]','$_POST[UserID]')"; 

沒有$_POST['UserID']值。請注意,數組鍵(如UserID)是區分大小寫的。

另外請注意,你在這裏做的是容易受到SQL注入,並應立即進行更改。這裏有許多問題在SO處理什麼是SQL注入以及如何防止它在PHP中。

1

您必須在課程中定義您的ID,您可以使用$_REQUEST$_POST,確保您的數據庫中的列也包含您要發送的值。

相關問題