I am in the process of creating a script where only certains video types can be uploaded but at the moment am stuck.
Here is my code -
<?php
$title = isset($_POST['title']) ? $_POST['title'] : null;
$desc = nl2br(isset($_POST['description'])) ? $_POST['description'] : null;
$name = isset($_POST['fullname']) ? $_POST['fullname'] : null;
$email = isset($_POST['email']) ? $_POST['email'] : null;
$country = isset($_POST['country']) ? $_POST['country'] : null;
$video = isset($_FILES['video']);
$videoname = isset($_FILES['video']['name']);
$videotmp = isset($_FILES['video']['tmp_name']);
$videosize = isset($_FILES['video']['size']);
$videotype = isset($_FILES['video']['type']);
$videoacceptable = array(
"video/mp4",
"video/ogg",
"video/quicktime",
);
$videopath = "/videos/";
$videofile = $videopath . $video;
if(isset($_POST['submit'])) {
//ERROR MESSAGES / VALIDATION
if(empty($title)) {
$errors[] = "A title is required";
echo "<style type=\"text/css\"> #title { background-color:#F5A9A9;border:1px solid #DF0101; } </style>";
} elseif(strlen($title) > 80) {
$errors[] = "Your title can only be 80 characters long";
echo "<style type=\"text/css\"> #title { background-color:#F5A9A9;border:1px solid #DF0101; } </style>";
}
if(empty($desc)) {
$errors[] = "A description is required";
echo "<style type=\"text/css\"> #description { background-color:#F5A9A9;border:1px solid #DF0101; } </style>";
}
if(empty($name)) {
$errors[] = "Please enter your full name";
echo "<style type=\"text/css\"> #fullname { background-color:#F5A9A9;border:1px solid #DF0101; } </style>";
} elseif(strlen($name) > 32) {
$errors[] = "Your name can only be 32 characters long";
echo "<style type=\"text/css\"> #fullname { background-color:#F5A9A9;border:1px solid #DF0101; } </style>";
}
if(empty($email)) {
$errors[] = "Please enter your email address";
echo "<style type=\"text/css\"> #email { background-color:#F5A9A9;border:1px solid #DF0101; } </style>";
} elseif(strlen($email) > 50) {
$errors[] = "Your email addess can only be 50 characters long";
echo "<style type=\"text/css\"> #email { background-color:#F5A9A9;border:1px solid #DF0101; } </style>";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = "Please enter a valid email address";
echo "<style type=\"text/css\"> #email { background-color:#F5A9A9;border:1px solid #DF0101; } </style>";
}
if($videosize = 0) {
$errors[] = "You forgot to upload a video";
} elseif($videosize >= 20000000) {
$errors[] = "Your video size is too large, 20mb max";
} elseif(!in_array($videotype, $videoacceptable)) {
$errors[] = "The file type is not allowed, only allowed .mp4, .ogg and .mov";
}
if(count($errors) === 0) {
$connect = mysqli_connect("localhost","username","password");
if(!$connect) {
header("Location:"); // ADD ERROR LINK
}
$dbselect = mysqli_select_db("database");
if(!$dbselect) {
header("Location:"); // ADD ERROR LINK
}
$query = mysqli_query("INSERT INTO cover_videos(title, desc, name, email, country, videotmp, videotype, videosize, videopath) VALUES('$title','$desc','$name','$email','$country','$videotmp','$videotype','$videosize','$videopath')");
move_uploaded_file($videotmp, $videofile);
//SEND AN EMAIL TO THE USER
$to = $email;
$subject = "Thank's for your upload";
$message = '
<html>
<head><title>We have received your video</title></head>
<body>
<h3>Good News!</h3>
<p>We have recieved your video and is awaiting approval.</p>
</body>
</html>
';
$headers = 'FROM: no-replyk' . "\r\n";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers = 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers = 'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
header("Location:"); //SUCCESSFUL UPLOAD PAGE
}
}
?>
So whats happening is when i go to upload a file, im uploading a .mov file but the error message that pops up is "The file type is not allowed, only allowed .mp4, .ogg and .mov" but the .mov mime is in the videoacceptable array so im a bit stuck at the moment, any know whats the problem?