2012-06-03 3 views
1

일부 PHP 코드가 포함 된 동일한 페이지에서 HTML 양식을 처리하려고합니다. 암호가 변경되지 않지만, 페이지는 여전히 header() 기능에 따라, 변경 : http://pastebin.com/napM9rNC같은 페이지에서 PHP 폼을 처리 하시겠습니까?

유일한 문제 : 다음

페이지의 코드에 대한 링크입니다. 이유에 대한 단서가 있습니까?

편집 :$_GET['hash'] 변수에는 전체 암호 해시 인 MD5가 포함됩니다.

+1

당신은 (''는 mysql_real_escape_string (위해서 stripslashes ('.이 문제를 일으키는 지 모르겠어요,하지만 난 당신이 m_r_e_s 전에 위해서 stripslashes를 호출해야한다고 생각와 위해서 stripslashes (는 mysql_real_escape_string'의 모든 항목을 변경하려고 할 수 있습니다. – drew010

+0

안타깝게도 것을 문제가 아니었다. – user1340073

답변

0

mysql_query()은 쿼리가 성공하면 부울 true을 반환하지만 반드시 데이터가 변경되었다는 것을 의미하지는 않습니다. 영향을받는 행의 수를 확인하려면 mysql_affected_rows()을 사용해야합니다. 영향을받지 않는 행이있는 경우 MySQL은 해당 업데이트에 적용 가능한 행을 찾지 못했습니다. 이것은 페이지가 변경되는 이유 일 수 있지만 암호는 업데이트되지 않습니다.

가정하면 쿼리에 문제가있어 멤버 행이 업데이트되지 않습니다. 언뜻 보면 쿼리에 WHERE 암호 ="$hash"이 사용됩니다. 암호가 동일한 해시를 작성하기 때문에 둘 이상의 사용자를 선택할 수 있습니다. 해시는 특히 고유 한 것으로 보장되지 않습니다 (특히 salt을 적용하지 않는 경우). 사용자 ID로 회원을 붙잡아 야합니다 (사용자 ID 열이 없으면 은 실제로이어야 함). 왜냐하면 모든 회원에게 고유 한 이름을 사용하기 때문입니다.

MD5는 더 이상 암호 암호화에 안전하지 않습니다. alternative을 고려하십시오.

무엇보다도 mysql_* 함수가 부드럽게 사용되지 않게되었습니다. switching to another method of MySQL connection을 고려하십시오.

관련 문제