이 코드는 지정된 폴더와 db 테이블로 파일을 전송하지만 브라우저에서 페이지를 열거 나 실행하면 브라우저는 자동으로 db 테이블에 무엇인가를 보내고 파일 이름 필드는 비어 있습니다. 아직 아무 것도 클릭/업로드하지 않았습니다. 내가 문제를 제대로 설명했는지 모르겠다. 문제는 페이지를 열었을 때 db 테이블 행을 검사하고 빈 행이 만들어 졌기 때문이다. id는 btw를 증가시키고 파일 이름 필드는 비어있다. (아직 아무것도 업로드하지 않았다.) 코드에 어떤 문제가 있습니까?PHP가 mysql에 파일 이름을 업로드
<?php
if(isset($_FILES['filename'])){
$errors= array();
$file_name = $_FILES['filename']['name'];
$file_size =$_FILES['filename']['size'];
$file_tmp =$_FILES['filename']['tmp_name'];
$file_type=$_FILES['filename']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['filename']['name'])));
$expensions= array("jpeg","jpg","png");
if(in_array($file_ext,$expensions)=== false){
$errors[]="extension not allowed, please choose a JPEG or PNG file.";
}
if($file_size > 2097152){
$errors[]='File size must be excately 2 MB';
}
if(empty($errors)==true){
move_uploaded_file($file_tmp,"uploads/".$file_name);
echo "Success";
}else{
print_r($errors);
}
}
?>
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "admin";
$filename = false;
if(isset($_FILES['filename'])){
$filename = $_FILES['filename']['name'];
}
// Create connection
mysql_connect($servername, $username, $password) or die ('MySQL Not found // Could Not Connect.');
mysql_select_db("admin") or die(mysql_error()) ;
mysql_query("INSERT INTO upload_test (fileName)
VALUES ('$filename')") ;
?>
내 양식 :
항상 INSERT 문을 실행되기 때문이다<form name="form" method="POST" enctype="multipart/form-data" >
<input name="filename" type="file" id="filename" />
<input name="submit" type="submit" id="submit"/>
</form>
pathinfo() 예, 쿼리에 관계없이 항상 업로드가 있는지 여부의 실행 사용하는 것입니다. 1) 왜 그것을 첫 번째'if '블록에 넣지 않는가? 2) 당신은 ** SQL injection에 취약한 ** majorly ** 취약성을 가지고있다. 3) 새로운 코드에 대해 mysql_ 함수를 사용하지 않는다. ** deprecated ** _ – Wrikken
** 경고 ** ** 이러한 매개 변수는 [제대로 이스케이프되지 않음] (http://bobby-tables.com/php) 때문에 이것은 매우 안전하지 않습니다. '$ _POST' 데이터를 직접 쿼리에 넣지 않아야합니다 : 거대한 [SQL injection bug] (http://bobby-tables.com/)가 생성됩니다. mysql_query는 쓸데없는 인터페이스이므로 사용해서는 안된다. PHP에서 제거되고있다. [PDO와 같은 현대적인 대체물은 배우기 어렵지 않습니다.] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/). [PHP The Right Way] (http://www.phptherightway.com/)와 같은 안내서는 모범 사례를 설명합니다. – tadman
여러분의 제안에 감사드립니다. 나는 그들을 시도 할 것이다. 그래도 여전히 멍청한 녀석. – kim