1

よし、アップロード スクリプトを見つけて、セッションに合わせて調整を加えました。セッションがログインしていない場合は画像をエコーアウトしますが、セッションがログインしている場合はファイル アップローダーが表示されます。問題は、誰かがこれに有害な PHP スクリプトをアップロードできることです。私はこれを画像用にしたいだけです。私のコード画像のみを作成する提案はありますか? フィルターを追加してみましたが、うまくいきません。これが私のコードです:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Upload your own picture of Bouncy!</title>
</head>
<style type='text/css'>
body {
background-image:url('../membership/sitebg.png');
background-repeat:repeat-x;
background-color:#ffffff;
}

a {
color: #093D03;
text-shadow:0px 0px 5px #ffffff;
}

a:visited {
color: #093D03;
}

a:active {
color: #093D03;
}

a:hover {
color: #1AFF00;
}
</style>
<?php
session_start();

if ($_SESSION['loggedin'] == true) 
{
echo "<br />";
echo "<br />";
echo "<center><font face='arial'>Welcome to the funny picture uploader,<b> ".$_SESSION['username'];
echo "</b><br /><a href='http://x.org/membership/logout.php'>Logout</a> | <a href='#'>More</a> | <a href='http://x.org'>Home</a>";
echo "<br />";
echo "<br />";
                    $max_no_img=1; // Maximum number of images value to be set here
                    echo "<form method=post action='' enctype='multipart/form-data'>";
                    echo "<table border='0' width='400' cellspacing='0' cellpadding='0' align=center>";
                    for($i=1; $i<=$max_no_img; $i++)                             {
                    echo "<tr><td>Images $i</td><td>
                    <input type=file name='images[]' class='bginput'></td></tr>";
                                                                                 }
                          echo "<tr><td colspan=2 align=center><input type=submit value='Add Image'></td></tr>";
                          echo "</form> </table>";
      while(list($key,$value) = each($_FILES['images']['name']))
                                                                                                      {
          //echo $key;  
          //echo "<br>";
          //echo $value;
          //echo "<br>";
      if(!empty($value)){   // this will check if any blank field is entered
      $filename =rand(100000000000000,10000000000000000000).$value;    // filename stores the value

      $filename=str_replace(" ","-",$filename);// Add _ inplace of blank space in file name, you can remove this line

      $add = "pictures/$filename";   // upload directory path is set
      //echo $_FILES['images']['type'][$key];     // uncomment this line if you want to display the file type
      //echo "<br>";                             // Display a line break
      copy($_FILES['images']['tmp_name'][$key], $add); 
      echo "<center><b>Your picture will be stored at:</b></center> ";
      echo "<center><a href='http://bouncygames.org/$add'>Click here to view your image!</a></center>";
          //  upload the file to the server
      chmod("$add",0777);                 // set permission to the file.
        }                                                                                               }
} else {
echo "<br /><center><img src='sorry.png'><br />
<a href='x'><img src='button-to-join.png'></a>
</center>";
}
?>

私の質問: これを画像のみアップロードするにはどうすればよいですか?

4

2 に答える 2

0

為に<input type="file" name="file" id="file" />

ファイルタイプを取得します$type = $_FILES["file"]["type"]

if($type == "jpeg" || $type == "png")同じことを行ってから、ファイルを受け入れるかどうかを簡単に決定できます。

于 2012-08-18T17:37:55.303 に答える