0) ? $_POST['text'] : null; if (mb_strlen(trim($_POST['text']), "UTF-8") > 2000){ error("コメントが長すぎます!"); } // file if (!is_uploaded_file($_FILES['file']['tmp_name'])){ error("ファイルが選択されていません"); } $tmpFilepath = $_FILES['file']['tmp_name']; $originName = $_FILES['file']['name']; if (!isValidImage($originName, $_FILES['file']['type'])){ error("不正なファイルです!"); } $extension = pathinfo($originName, PATHINFO_EXTENSION); // md5 hash check $hash = md5_file($tmpFilepath); if (!checkHash($hash)){ error("同じファイルが既にアップロードされています!"); } // filesize $size = (int)$_FILES['file']['size']; if ($size > 10485760){ // 10 MB error("ファイルが大きすぎます!10MB以下のファイルを選択してください!"); }elseif ($size <= 0){ error("不正なファイルサイズです!"); } // username $username = null; if (!$user->isLoaded && isset($_POST['username']) && mb_strlen(trim($_POST['username']), "UTF-8") > 0){ $username = trim($_POST['username']); if (mb_strlen($username, "UTF-8") > 20){ error("ユーザー名".$username."が長すぎます!(".mb_strlen($username, "UTF-8")."文字)"); } } // visibility $visibility = (int)$_POST['visibility']; if ($visibility !== 0 && $visibility !== 1){ error("公開範囲設定が不正です!"); } // update $con = new mysqliEx('sakura-server_contents'); // 一意のID生成 $try = 0; do{ if ($try >= 30){ $con->close(); error("一意なID生成に失敗しました"); break; } $try++; $fname = getRandomString(6); $res = $con->query('SELECT `pic_no` FROM `'.TPREFIX.'pic_data` WHERE `pic_id` = "'.$fname.'"'); if ($res === false){ $con->close(); error("データベースへの接続に失敗しました"); break; } } while ($res->num_rows > 0); // ファイルコピー $destFilepath = "../uploads/".$fname.".".$extension; if (!move_uploaded_file($tmpFilepath, $destFilepath)){ $con->close(); error("ファイルのアップロードに失敗しました"); } chmod($destFilepath, 0644); // サムネ生成 if ($visibility === 0){ // or set password makeThumb($destFilepath); } // レコード挿入準備 $now = time(); // insert $query = 'INSERT INTO `'.TPREFIX.'pic_data` (`pic_id`, `pic_name`, `pic_size`, `extension`, `hash`, `sender_id`, `sender_name`, `sender_ip`, `date`, `text`, `type`) '; $query .= 'VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'; $stmt = $con->prepare($query); $stmt->bind_param('ssississisi', $fname, $originName, $size, $extension, $hash, $user->id, $username, $_SERVER['REMOTE_ADDR'], $now, $text, $visibility); $stmt->execute(); $affected = $stmt->affected_rows; $con->close(); if ($affected !== 1) error("データベースへの書き込みに失敗しました"); header('Location: /'.$fname); exit(); //exit("アップロードに成功しました"); } function error($error = "Unknown error, please try again lator."){ $_SESSION["error"] = $error; header('Location: /upload'); exit(); } function isValidImage($fileName, $mime){ $extension = mb_strtolower(pathinfo($fileName, PATHINFO_EXTENSION), "UTF-8"); if (($extension == "jpg" || $extension == "jpeg") && $mime == "image/jpeg"){ return true; }else if($extension == "png" && $mime == "image/png"){ return true; }else if($extension == "gif" && $mime == "image/gif"){ return true; } return false; } function checkHash($hash){ $con = new mysqliEx('sakura-server_contents'); $query = 'SELECT `pic_no` FROM `'.TPREFIX.'pic_data` WHERE `hash` = BINARY "'.$con->escape_string($hash).'" AND `deleted` = 0'; $res = $con->query($query); $con->close(); return ($res && $res->num_rows === 0); } function getRandomString($nLengthRequired = 6){ $sCharList = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"; mt_srand(); $sRes = ""; for($i = 0; $i < $nLengthRequired; $i++){ $sRes .= $sCharList[mt_rand(0, strlen($sCharList) - 1)]; } return $sRes; } ?> Upload new picture - pic.sakura-server.net

Error!

%ERROR%
EOF; print str_replace("%ERROR%", $error, $html); } ?>

Upload new image

isLoaded){ $tmp = 'ログインせずに画像ファイルをアップロードすることもできますが、あなたのIPアドレス('.$_SERVER['REMOTE_ADDR'].')が画像ページに表示されます。
'; $tmp .= 'また、ログインせずにアップロードした画像を自分で削除、編集することはできません。'; print '

ご注意ください: あなたはログインしていません!

'.$tmp.'
'; } ?>
10メガバイト以下のjpg, png, gifファイルをサポートしています
isLoaded)?(' value="'.$user->name.'" disabled') : '';?>