2009-10-17 2 views
0

로그인 한 사용자의 친구가있는 내 PHP 페이지 중 하나에 링크가 있으며이 페이지에 다음과 같은 사용자 친구의 링크가 있습니다.

echo "<a href='profile.php?id=$row[friend_id]'>$friend_row[name]</a>"; 

친구의 ID는 프로필 페이지와 프로필 페이지에 전달되며 사용자는 프로필을보고 댓글을 남길 수 있습니다. 여기 형태 :

<form name="comment" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
    <input type="text" name="comment" class="comment" /> 
    <input type="submit" name="submit" value="submit" class="comment" /> 
</form> 

이 PHP 코드는 다음과 같습니다

$insert="INSERT INTO comment (login_id,friend_id,msg) 
        VALUES ('$_SESSION[friend_id]','$_SESSION[id]','$_POST[comment]')"; 
$result = mysql_query($insert) or die(mysql_error()); 

이제 내 질문이 명령 $_SESSION[friend_id]=$_GET[id]에 의해 $_GET[id]에과 동등하고 페이지로 passsed했다 $_SESSION[friend_id] 이전에 더를 가지고 있다는 것입니다 없습니다 값은 양식을 제출 한 후 내 SQL 테이블에 0으로 나타납니다. 이 PHP 스크립트가 실행되기 전에 반향을 시도했지만 올바른 값을 가졌지 만이 PHP 코드가 실행 된 후에는 사라졌습니다 !!!

아무도 말해 줄 수 있습니까?

+6

나는 냄새가 SQL 주입! – knittl

+0

PHP_SELF를 사용하지 말아야 할 이유는 http://seancoates.com/xss-woes를 참조하십시오. –

+0

SCRIPT_NAME은 PHP_SELF – MattBelanger

답변

2

실제로 변수를 초기화하는 코드를 게시하지 않으면 변수에 예상보다 다른 값이 들어있는 이유를 알 수있는 사람은 아무도 없습니다. 그러나 모든 사람이 $ _GET 수퍼 글로벌 배열에서 꺼낸 내용을 SQL 쿼리는 끔찍한 생각입니다.

0

SQL 주입 불황 제외하고, 당신의 세션이 시작되지 않은 것 같다 ...

당신은 항상) (당신으로 ​​session_start했는지 확인하십시오, 모든 PHP 파일에서 $ _SESSION 변수를 사용하려는 경우, 그 파일의 시작 부분에 ..

도움이 희망 ...

+0

예, 저는 session_start()를 가졌습니다. 바로 거기, 고맙다. ... 나는 단지 여기의 모든 코드를 복사하지 않았다 ... –

관련 문제