0

プロフィール写真の単純な PHP アップロードを可能にする画像アップロード スクリプトがあります。アップロード時に予期せず失敗するようになりました。理由はよくわかりません。post_max_size と upload_max_size を確認しましたが、1MB をはるかに超えています。//前の画像を削除することに関係している疑いがありますが、理由はわかりません。それが言うところのクエリを見ると;

AND image1 !='../files/noprofile.jpg'

これは、プロフィール写真がデフォルトの場合、デフォルトの画像が削除されないようにするためです。この部分に関係していると感じており、画像がデフォルトのプロフィール写真であるとアップロードに失敗します。

mysqli を使用する必要があることはわかっていますが、mysqli に取り組んでいるとは言わないでください。

簡単にするためにいくつかのことを取り除いたスクリプト全体を次に示します。

session_start();
$username=$_SESSION['username'];
$pass = $_SESSION['password']; 
$path = "../imageuploads/";

//Delete previous picture
$pic = mysql_query("
SELECT * FROM members WHERE artist='Y' AND username='$username' AND password='$pass' AND image1 !='../files/noprofile.jpg'
")or die(mysql_error());

 while($fetchpic = mysql_fetch_array($pic)){ 

//if image1 does not equal no profile
unlink( $fetchpic['image1']); 

}


$valid_formats = array("jpg", "png", "gif", "bmp", "jpeg");
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
    {
        $name = $_FILES['photoimg1']['name'];
        $size = $_FILES['photoimg1']['size'];

        if(strlen($name))
            {
                list($txt, $ext) = explode(".", $name);
                if(in_array($ext,$valid_formats))
                {
                if($size<(2024*2024))
                    {
                        $actual_image_name = time().substr(str_replace(" ", "_", $txt), 5).".".$ext;
                        $tmp = $_FILES['photoimg1']['tmp_name'];
                        if(move_uploaded_file($tmp, $path.$actual_image_name))
                            {
                            mysql_query("UPDATE members SET image1='../imageuploads/$actual_image_name' WHERE username='$username' AND password ='$pass' AND artist='Y'");

                                echo "<p1><img src='../imageuploads/".$actual_image_name."'  class='imageright1'></p1>";
                            }
                        else
                            echo "<p1>failed</p1>";
                    }
                    else
                    echo "<p1>Your image is a bit too big. It has to be below 1MB.</p1>";                   
                    }
                    else
                    echo "<p1>Only JPG, PNG GIF and BMP file formats are accepted.</p1>";   
            }

        else
            echo "<p1>You've gotta select an image first!</p1>";

        exit;
    }
4

1 に答える 1

0

フォームタグに、属性enctypeを追加します。

<form action="page.php" method="post" enctype="multipart/form-data">
于 2012-07-23T17:22:22.647 に答える