2013-07-17 2 views
-2

PHP에 대한 도움이 필요합니다. 난 항상이 오류 :정의되지 않은 인덱스 : sUS_UserID

Notice: Undefined index: sUS_UserID in C:\xampp\htdocs\fazebook\inc\class.user.php on line 21

내 "오류"코드 :

$UserLoginQ = $DB->Query("SELECT * FROM `Users` WHERE `UserID` = '{$_COOKIE["sUS_UserID"]}'"); // LINE 21 
if (intval($DB->Num($UserLoginQ)) > 0) { 
    $UserLoginA = $DB->Arr($UserLoginQ); 
    if ($_COOKIE["sUS_UserID"] == $UserLoginA["UserID"]) { 
     if ($_COOKIE["sUS_Security"] == md5($UserLoginA["LastIP"])) { 
      if ($_COOKIE["sUS_Password"] == md5($UserLoginA["Password"])) { 
       $this->ID  = (int) $UserLoginA["UserID"]; 
       $this->Name  = $UserLoginA["Username"]; 
       $this->LoggedIn = true; 
      } 
     } 
    } 
} 
+0

오류는 '$ _COOKIE' 배열에 "sUS_UserID"키가 없다는 것을 의미합니다. 즉, 귀하의 쿠키가 존재하지 않습니다. – bfavaretto

+1

@deceze 내가 연결된 Q/A에 대해 여러 가지 감정을 가지고 있습니다. 그것이 메타에 대해 논의 된 적이 있다면 알고 있습니까? 별도의 질문/답변으로 분리하거나 태그 위키로 옮겨서는 안됩니까? – bfavaretto

+0

@bfavaretto 희귀 한 이중 whammy! –

답변

1

당신은 쿠키가 존재하고 이름이 있는지 확인해야합니다 'sUS_UserID'. 받은 오류 메시지는 해당 이름으로 정의 된 쿠키가 없음을 나타냅니다.

분명히하기 위해 $ _COOKIE 데이터를 보간하는 방법을 변경하는 것이 좋습니다. 이것은 필수는 아니지만 코드 명확성과 구문 강조를 향상시킬 수 있으며 인용 오류를 찾기 어렵지 않게 도움을 줄 수 있습니다.

$UserLoginQ = $DB->Query("SELECT * FROM `Users` WHERE `UserID` = '" . $_COOKIE['sUS_UserID'] . "'"); 

마지막으로 SQL 주입 취약점에 대해 읽어보십시오. 쿠키는 사용자가 편집 할 수 있으며 SQL 쿼리에서 unsanitized 사용자 컨텐트를 사용하면 데이터를 위험에 빠뜨릴 수 있습니다.

+1

정말입니까? 작동하는 것 같습니다 http://codepad.org/eqygVHxY – bfavaretto

+0

@bfavaretto 맞습니다. 답변을 업데이트했습니다. –