2009-07-15 6 views
0

안녕하세요 모두들 제가 몇 가지 문제가 있습니다 ... 질문은 양식에서 정보를 얻고 데이터베이스에 저장하고 싶습니다 (주석, 그림 및 이메일 업로드).PHP와 mysql 질문

코드 경고를 준

// move file from temp location on server to your uploads folder 
    move_uploaded_file($F1["tmp_name"], "Uploads/$F1[name]"); 
    print "Stored in: Uploads/$F1[name]"; 


// save location of upload to text file uploads.txt for later use 

$datafile = fopen("uploads.txt","a"); 
flock($datafile,1); 
fwrite($datafile, "Uploads/$F1[name]\n"); 
flock($datafile,3); 
fclose($datafile); 




// divide size by 1024 to get it in KB 
/* if ($F1["size"]/1024 > 50) { 
    print "Your gif file is too large! Less that 50KB please!"; 
    exit(0); 
    }*/ 

if (!(IsSet($_FILE["fname"]))) { 




    $query="insert into guestbook (comments, email, img,display) values 
    ('$_POST[comments]','$_POST[email]','some address ', '0')";} 

else 

$query="insert into guestbook (comments, email, img, display) values 
    ('$_POST[comments]','$_POST[email]','some addres', '$_POST[0]')"; 

내가 가진 경고가

경고 : 인 move_uploaded_file (/ holder.jpg가 업로드) : 스트림을 열지 못했습니다 :에서 해당 파일 또는 디렉터리를 (주소) 행 48

경고 : 인 move_uploaded_file()에 저장된 라인 (48) 에 (일부 주소)에서 '업로드/holder.jpg'에 '/ tmp를/php4OAZMC'을 이동할 수 없습니다 : 업로드/holder.jpg

내가 어떻게 고칠 수 있니? 사전

답변

1

에서

덕분에 나는 파일이 업로드에 대한 사용 권한을 확인

/home/meme/www/example.com/Uploads/ 

또한 즉, 스크립트 위치가 아닌 상대에 저장하기 위해 절대 경로를 필요하다고 생각 예배 규칙서. 앞으로 베이컨을 구할 수있는 또 다른 팁 - 디렉토리와 파일 이름을 소문자로 유지하십시오. 파일 시스템이 대소 문자를 구분하기 때문에 존재하지 않는 파일이나 디렉토리를 찾고있을 때 언젠가는 언젠가는 언젠가는 바닥에 물리지 않을 것입니다!

0

업로드/폴더가 이미 존재합니까? 그렇지 않다면 먼저 생성 해보십시오. 이로 인해 오류가 발생할 수 있습니다.

또한 move_uploaded_file()이 작동하는지 확인하는 것이 좋습니다. 작동하는 경우 true을 반환하고 그렇지 않은 경우 false을 반환합니다.

이미 언급했듯이 절대 경로도 사용해보십시오.

Reference

+0

확실히 좋은 생각입니다. 그러나이 경우 move_uploaded_file()이 실제로 오류를 던지고 있습니다. – Gav

+0

그래, 그 오류를 일으키는 알아, 그냥 몇 가지 조언을 전달했다, 그래서 파일 업로드가 어떤 알려지지 않은 이유로 실패하면 깨끗하게 종료 할 수 있습니다. – DeadHead

0

당신은 또한 업로드 폴더가 권한이 올바르게 설정되어 있는지 확인한다 - 테스트 목적으로, 좋아하는 FTP 클라이언트를 사용하여 777에 업로드 폴더를 chmod를.

업로드를 실습에 옮길 준비가되었을 때 폴더를 제대로 보호하는지 (모든 사람이 파일을 쓸 수 있는지 확인하십시오) 파일 유형에 맞는 필터를 배치해야합니다.

0
  1. 이동 경로가 존재하는지 확인하고 웹 서버 프로세스에 쓰기 권한이 있는지 확인하십시오.
  2. 삽입 쿼리는 SQL 삽입을 기다리는 보안 취약점입니다.다음을 사용하여 해킹 당할 확률을 줄일 수 있습니다.

    $ comments = mysql_real_escape_string ($ _ POST [ 'comments']); $ email = mysql_real_escape_string ($ _ POST [ 'email']); $ query = "방명록에 (덧글, 이메일, img, 표시) 값을 넣습니다. ('{$ comments}', '{$ email}', 'some address', '0')";