2013-08-30 2 views
1

그래서 다른 데이터와 함께 데이터베이스에 이미지를 업로드하는 스크립트가 실행됩니다. 그러나 항상 확장자가없고 한 번에 동일한 파일 이름을 가진 레코드가 하나 있습니다. 해당 레코드를 삭제해도 상관 없습니다. "d41d8cd98f00b204e9800998ecf8427e"문자열이 다른 레코드로 채워집니다. 새 레코드를 추가하면 다른 레코드로 전송됩니다.새 데이터베이스가 추가되지 않으면 MySQL 데이터베이스가 손상된 이미지를 표시합니다.

$art = mysql_real_escape_string(stripslashes($_FILES["art"]["name"])); 
    $art_ext = pathinfo($art, PATHINFO_EXTENSION); 
    if(strtoupper($art_ext)=="JPEG"){ 
     $art_ext = "jpg"; 
    } 
    $art = md5($art).".".$art_ext; 
    if($art!=""){ 
     move_uploaded_file($_FILES['art']['tmp_name'], "images/".$art); 
    } 
$sql = "INSERT INTO event (imglink, title, date, tag1, tag2, Price, city, subtitle, venue, password, description, fb) VALUES ('$art','$title','$date','$tag1','$tag2','$price','$city','$subtitle','$venue','$password', '$description', '$fb')"; 
    $result = mysql_query($sql) or die(mysql_error()); 

해당 레코드의 이미지는 다음과 같습니다 : phpMyAdmin

+1

왜 'stripslashes()'를 호출합니까? 'magic_quotes'가 활성화되어 있지 않습니까? – Barmar

답변

3

d41d8cd98f00b204e9800998ecf8427e 빈 문자열에 대한 MD5이다 나는 데이터베이스에 파일 시스템에 삽입하고 방법은 다음과

입니다 , 따라서 파일이 업로드되지 않아 파일 이름/확장자가 설정되지 않은 경우에도 코드에 도달하게됩니다.

제한된 코드에서 알 수있는 것은 어렵습니다. g. 그러나 빈 파일 이름으로 불리는 코드로 끝나는 한 가지 예는 동일한 양식을 사용하여 업로드 양식을 표시하고 데이터를 승인하는 경우이며 실수로 GET이이 코드로 넘어갑니다.

+3

그는'if ($ art! = "")'_before_md5()'를 검사해야합니다. – Barmar

관련 문제