@rensly

Почему PHP не даёт ошибки?

код:
<?php
include "../../include/lib/connection.php";
require_once "../../include/lib/exploitPatch.php";

$log = "";


if ($_FILES && $_FILES['filename']['error'] == UPLOAD_ERR_OK) {
    if (isset($_POST['authorname'] ) && isset($_POST['songname'])) {
        $file_type = $_FILES['filename']['type'];
        $maxsize = 10485760;
        if ($_FILES['filename']['size'] >= $maxsize) {
            $log = "Max file size is 10mb";
        } else {
            $hash = "";

            $string = $_FILES['filename']['name']; // song_name.mp3
            $songname = str_replace('.mp3', '', $string); //song_name
            $song_name = str_replace('_', ' ', $songname); // song name
            $name = str_replace(' ', '%20', $string); // song%20name

            move_uploaded_file($_FILES['filename']['tmp_name'], "song/$songname.mp3");
            $size = round($_FILES['filename']['size'] / 1024 / 1024, 2);


            $song = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."song/";
            $cur = str_replace('upload.php', '', $song) . $name;

            $query = $db->prepare("INSERT INTO songs (name, authorID, authorName, size, download, hash)
            VALUES (:name, '9', :author, :size, :download, :hash)");
            $query->execute([':name' => $song_name, ':download' => $cur, ':author' => "", ':size' => $size, ':hash' => $hash]);
            $log = "Success! ID: <b>". $db->lastInsertId() ."</b>";
        }
    } else {
        $log = "Provide a song name and an author name.";
    }    
}
?>


в папку загружать файлы можно, права есть.
скрипт должен загружать файл в папку song, т.е:
storage/
├─ songs/
│  ├─ song/
│  │  ├─ загруженные файлы с помощью upload.php
│  ├─ upload.php


ошибок скрипт не даёт, они включены и в настройках php и в самом скрипте.
если поможет, вот хтмл форма:
<form class="form" method="post"  action="upload.php" enctype='multipart/form-data'>
    <input type='text' style="margin-top: 5%;" placeholder="Song Name" name='songname'><br>
    <input type='text' placeholder="Author" name='authorname'><br>
    <input type='file' name='filename' size='10' accept="audio/*"><br>
    <input class="button" type="submit" value="Upload">
</form>

ОС стоящая на моем ВДС: CentOS 7
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
учимся базовой отладке (ну и элементарной логике):
var_dump($_FILES); exit(); //проверяем есть ли вообще файл, и что там с ним происходит
if ($_FILES && $_FILES['filename']['error'] == UPLOAD_ERR_OK) { //где else к этому ифу???
// по уму надо отдельно проверять $_FILES['filename']['error'], так как скорее всего лажа где-то в нем
// вангую что размер upload_max_filesize или max_post_size слишком мал
    if (isset($_POST['authorname'] ) && isset($_POST['songname'])) { //здесь больше подходит !empty, 
//и надо бы как-то проверить подходят ли поля под стандарты, длина, символы левые...
// дальше в принципе нет смысла пояснять, так как первый if скорее всего тупо не работает
        $file_type = $_FILES['filename']['type'];
        $maxsize = 10485760;
        if ($_FILES['filename']['size'] >= $maxsize) {
            $log = "Max file size is 10mb";
        } else {
            $hash = "";
            $string = $_FILES['filename']['name']; // song_name.mp3
            $songname = str_replace('.mp3', '', $string); //song_name
            $song_name = str_replace('_', ' ', $songname); // song name
            $name = str_replace(' ', '%20', $string); // song%20name
            move_uploaded_file($_FILES['filename']['tmp_name'], "song/$songname.mp3");
            $size = round($_FILES['filename']['size'] / 1024 / 1024, 2);
            $song = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."song/";
            $cur = str_replace('upload.php', '', $song) . $name;
            $query = $db->prepare("INSERT INTO songs (name, authorID, authorName, size, download, hash)
            VALUES (:name, '9', :author, :size, :download, :hash)");
            $query->execute([':name' => $song_name, ':download' => $cur, ':author' => "", ':size' => $size, ':hash' => $hash]);
            $log = "Success! ID: <b>". $db->lastInsertId() ."</b>";
        }
    } else {
        $log = "Provide a song name and an author name.";
    }    
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 12:23
2500 руб./за проект
25 апр. 2024, в 12:21
10000 руб./за проект