我是PHP的新手,我想在将文件上传到PhpMyAdmin之前检查该文件。我想添加到我的数据库的唯一文件类型是PDF,DOC和DOCX。我已经在互联网上查询了解决方案,但我真的找不到任何解决方案。我希望你们可以帮助我。
<?php
$servername = "localhost";
$username = "root";
$password = "usbw";
$dbname = "persons";
// CREATE A CONNECTION WITH THE DATABASE
// CONNECTIE MAKEN MET DATABASE
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// CHECK IF SUBMIT IS CLICKED
// CONTROLEER OF SUBMIT IS GEKLIKT
if(isset($_POST['submit']))
{
$filetmp = $_FILES["cv"]["tmp_name"];
$filename = $_FILES["cv"]["name"];
$filetype = $_FILES["cv"]["type"];
$filepath = "files/".$filename;
move_uploaded_file($filetmp,$filepath);
// INSERT VALUES IN THE DATABASE
// VOEG WAARDES TOE IN DE DATABASE
$sql = "INSERT INTO cv (cv_name,cv_path,cv_type) VALUES ('$filename','$filepath','$filetype')";
$result = mysqli_query($conn, $sql);
}
// INSERT cv_id IN person_id
// VOEG cv_id TOE IN person_id
$cv = $conn->insert_id;
?>
答案 0 :(得分:0)
您可以使用is_uploaded_file():
if(!file_exists($_FILES['myfile']['tmp_name']) || !is_uploaded_file($_FILES['myfile']['tmp_name'])) {
echo 'No upload';
}
来自docs:如果文件名为:
,则返回TRUE文件名是通过HTTP POST上传的。这有助于确保 恶意用户没有试图欺骗脚本进行操作 它不应该工作的文件 - 例如/ etc / passwd。
如果有任何机会,这种检查尤其重要 任何完成上传文件的内容都可以将其内容透露给 用户,甚至是同一系统上的其他用户。编辑:我正在使用这个 在我的FileUpload类中,如果它有帮助:
public function fileUploaded()
{
if(empty($_FILES)) {
return false;
}
$this->file = $_FILES[$this->formField];
if(!file_exists($this->file['tmp_name']) || !is_uploaded_file($this->file['tmp_name'])){
$this->errors['FileNotExists'] = true;
return false;
}
return true;
}