0

スクリプトに問題があります。それは私のホスティングサーバーに画像をアップロードします。翌日または翌週にホスティングサーバーから画像が欠落しているフォルダが作成されました。もちろん、すべての画像が2週間で18〜19%になるわけではありません。私は彼らに尋ねました。彼らは私に言った-問題は私のphpコードにある。誰かが助けることができれば私は幸せになります。mkdir()に0777を追加するかもしれませんか???? 知らない。私はいつも考えています...

<?php

if (isset($_FILES['myfile'])) {
    $ip = getRealIpAddr();
    $usernameupload = $user_data['username'];

    $title = sanitize($_POST['title']);
    $description = sanitize($_POST['description']);
    if (empty($_POST['folder']) === true) { $folder = sanitize($_POST['folder_option']);} else { $folder = sanitize($_POST['folder']);}
    $date = date('M-d-Y');
    $code = "";

    $errors = array();
    $allowed_ext =array('jpg', 'jpeg', 'png', 'gif');

    $file_name = $_FILES['myfile']['name'];
    $file_size = $_FILES['myfile']['size'];
    $file_tmp = $_FILES['myfile']['tmp_name'];
    $extension=explode('.',$file_name); 
    $file_ext=strtolower(end($extension));

    if (isset($_POST['submitupload'])) {
        if ($_FILES['myfile']['name'] == ""){
        $errors[] = ' *Upload file';
        } else if (in_array($file_ext, $allowed_ext) === false) {
        $errors[] = ' *Extension not allowed';
        }
    }

    if ($file_size > 5042880) {
        $errors[] = 'File size must be under 5mb';
        }
    if (strlen($folder) > 50) {
        $errors[] = 'Your new folder name must be max 50 characters';
        }

    if (empty($_POST['title'])) {
        $errors[] = 'Please Fill Title';
        }

    if (strlen($_POST['title']) > 255) {
        $errors[] = 'Your title must be max 255 characters';
        }

    if (empty($errors)) {

        require('db.inc.php');

        $charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        $length = 50;

        for ($i = 0; $i <= $length; $i++) {
            $rand = rand() % strlen($charset);
            $tmp = substr($charset, $rand, 1);
            $code .= $tmp;
            }

        $query = mysql_query("SELECT code FROM files WHERE code='$code'");
        $numrows = mysql_num_rows($query);

        while ($numrows != 0) {
                for ($i = 0; $i <= $length; $i++) {
                $rand = rand() % strlen($charset);
                $tmp = substr($charset, $rand, 1);
                $code .= $tmp;
                }
        $query = mysql_query("SELECT code FROM files WHERE code='$code'");
        $numrows = mysql_num_rows($query);
        }

        mkdir("files/$code");
        mkdir("files/thumbs/$code");


        if (move_uploaded_file($file_tmp, "files/$code/".$file_name)) {

        $file = "";     
        $query = mysql_query("INSERT INTO files VALUES ('', '$usernameupload', '$ip', '$title', '$code', '$folder', '$description', '$file_name', '$file_ext', '$file_size', '$date')");

        $query1 = mysql_query("INSERT INTO votes VALUES ('', '', '', '$code')");

        create_thumb('files/'.$code.'/', $file_name, 'files/thumbs/' . $code . '/');


        header("Location: userdownload.php?code=$code");
        exit();

            }
        }
    }
?>

<form action="" method="post" enctype="multipart/form-data">
    <table>
        <tr>
            <td id="editfill">Image:*</td>
            <td><input type="file" name="myfile" id="fileup"></td>
            <tr>
            <td></td>
            <td><?php 

            if (isset($_POST['submitupload'])) {
        if ($_FILES['myfile']['name'] == ""){
        echo '<div id="errormsg"> *Upload file </div>';
        } else if (in_array($file_ext, $allowed_ext) === false) {
        echo '<div id="errormsg"> *Allowed extension: .jpg, .jpeg, .png, .gif</div>';
        } else if ($file_size > 5042880) {
        echo '<div id="errormsg"> *File size must be under 5mb </div>';
        }
    }
    ?></td>
    </tr>
        </tr>
        <tr>
            <td id="editfill">Title:*</td>
            <td><input type="text" name="title" id="title" value="<?php if (isset($_POST['submitupload'])) echo htmlentities($_POST['title']); ?>" maxlength="255"></td>
        <tr>
        <td></td>   
            <td><?php 
            if (isset($_POST['submitupload'])) {
            if (empty($_POST['title'])) {
        echo '<div id="errormsg"> *Please fill title </div>';
        }
            if (strlen($_POST['title']) > 255) {
        echo '<div id="errormsg"> *Your title must be max 255 characters</div>';
        }
        }
            ?></td>
         </tr>
        </tr>
         <tr>
            <td id="editfill">Create Album:</td>
            <td><input type="text" name="folder" id="title" value="<?php if (isset($_POST['submitupload'])) echo htmlentities($_POST['folder']); ?>" maxlength="50">
            </td>
        <tr>
        <td></td>
        <td><?php   
        if (strlen($folder) > 50) {
        echo '<div id="errormsg"> *Your new album name must be max 50 characters</div>';
        }
 ?></td>
        </tr>       
        </tr>
        <tr>
            <td id="editfill">Your Albums:</td>
            <td>
            <select name="folder_option" class="select">
            <option></option>
        <?php  
        $mysql_folder = mysql_query("SELECT `folder_name` FROM `files` WHERE `username` = '$usernameupload' AND `folder_name` > '' GROUP BY `folder_name` ORDER BY `folder_name` ASC"); 

        while ($query_row = mysql_fetch_array($mysql_folder)) {
                $filefolder = $query_row['folder_name'];

                echo '<option value="' . $filefolder . '">' . $filefolder . '</option>';
                }

        ?>
    </select>
            </td>
        <tr>
        <td></td>
        <td></td>
        </tr>       
        </tr>
        <tr>
            <td id="editfill">Description:</td>
            <td><textarea name="description" id="description"><?php if (isset($_POST['submitupload'])) echo htmlentities($_POST['description']); ?></textarea></td>
        <tr><td></td>
            <td>
        </td>
        </tr>       
        </tr>
        <tr>
            <td></td>
            <td><center><br><input type="submit" name="submitupload" id="submitupload" value="Upload"></center></td>
        </tr>
    </table>
</form>
4

1 に答える 1

1

これを試して、mkdirの作成が失敗していないかどうかを効率的に確認してください。そうでなければ、データベースに追加されても、フォルダとイメージは確実に存在しません。

//previous code...
mkdir("files/$code");
mkdir("files/thumbs/$code");

//change to this...
if (!mkdir("files/$code", 0777, true)) {
    die('Failed to create folders...');
}

if (!mkdir("files/thumbs/$code", 0777, true)) {
    die('Failed to create sub folders...');
}
于 2013-03-14T07:43:51.510 に答える