2011-03-29 107 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,确保您的数据库中的列也包含您要发送的值。

相关问题