0

私のウェブサイトには、ユーザーが画像をアップロードするための2つの別々の場所があります。最初のものは完全に機能します。2番目はしません。私が見る限り、それらはまったく同じです。テストするために、両方で同じ画像を使用しました。最初の画像では機能しましたが、2番目の画像では機能しませんでした。動作していないコードのコードは次のとおりです。

<?php
include('cn.php');

$name = $_FILES['image']['name'];
$type = $_FILES['image']['type'];
$size = $_FILES['image']['size'];
$temp = $_FILES['image']['tmp_name'];
$error = $_FILES['image']['error'];

echo $name; //Doesnt echo anything

$rand_num = rand(1, 1000000000);

$name = $rand_num . "_" . $name;

echo $name; //Echos just the random number followed by _

if ($error > 0) { 
    die("Error uploading file! Go back to the <a href='gallery.php'>gallery</a> page and try again.");
} else {
    $sql = "INSERT INTO gallery (image) VALUES ('".$name."')"; //Inserts the random number to the database
    $query = mysql_query($sql) or die(mysql_error());
    echo $sql; 

    move_uploaded_file($temp, "gallery_pics/$name"); //Doesn't move the file.  gallery_pics exists, if that matters
    echo "Upload complete! Go back to the <a href='gallery.php'>album</a>.";
}

?>

誰かがここで私を助けてくれたら。簡単なことだと思いますが、まだ役に立ったものはありません。ありがとう!

編集:正しく表示されないコードの上に2行あります。1つはphpを起動し、もう1つはデータベースを開きます。

4

2 に答える 2

0

両方のスクリプトが同じディレクトリにありますか? そうでない場合は、次のようにスラッシュを前に付けた適切な相対パスまたは完全パスを指定してください。

move_uploaded_file($temp, "/some_folder/gallery_pics/$name");

また、アップロードしたファイルの拡張子は確認していますか?そうでない場合、ユーザーはたとえば PHP ファイルをアップロードして実行できます。ちなみに、ファイル名は次のようにすると見栄えがよくなります。

$rand_num = rand(1111111111, 9999999999);
于 2012-11-01T14:11:20.367 に答える
0

開発中または障害を見つけようとしているときにエラー報告を有効にし、サーバーのエラー ログも確認してください。$_FILES['image']['error']エラー コードを確認し、それに応じてエラーを表示します。以下のコードを試してみてください。それが役に立てば幸い

<?php
//Enable error reporting
error_reporting(E_ALL);
ini_set('display_errors',1);

$error_types = array(
    0=>"There is no error, the file uploaded with success",
    1=>"The uploaded file exceeds the upload_max_filesize directive in php.ini",
    2=>"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form",
    3=>"The uploaded file was only partially uploaded",
    4=>"No file was uploaded",
    6=>"Missing a temporary folder"
);

if($_FILES['image']['error']==0) {
    // process
    $name = $_FILES['image']['name'];
    $type = $_FILES['image']['type'];
    $size = $_FILES['image']['size'];
    $temp = $_FILES['image']['tmp_name'];

    //mt_rand() = 0-RAND_MAX and make filename safe.
    $name = mt_rand()."_".preg_replace('/[^a-zA-Z0-9.-]/s', '_', $name);

    //insert into db, swich to PDO
    ...

    //Move file upload
    if (move_uploaded_file($_FILES['image']['tmp_name'], "gallery_pics/$name")) {
        echo "Upload complete! Go back to the <a href='gallery.php'>album</a>.";
    } else {
        echo "Failed to move uploaded file, check server logs!\n";
    }
} else {
    // error
    $error_message = $error_types[$_FILES['userfile']['error']];
    die("Error uploading file! ($error_message)<br/>Go back to the <a href='gallery.php'>gallery</a> page and try again.");
}
?>
于 2012-11-01T14:22:33.273 に答える