Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
| ingvard |
18.4.2008, 15:57
Сообщение
#1
|
|
Только зарегистрировавшийся Группа: Пользователи Сообщений: 7 Регистрация: 18.4.2008 Пользователь №: 13 532 Репутация: 0 |
Вот есть скрипт http://4script.info/2008/01/28/khosting-fa..._devil_tlt.html он очень похож на upload как у http://tracers.ru/upload/ только как сделать что бы ссылка на загруженный сайт была короче…
Пример http://4script.info/2008/01/28/khosting-fa..._devil_tlt.html У него ссылка на пакет 5b241264d57b9056d3da07c8ad703d92 http://tracers.ru/upload/ У него ссылка на пакет 45646 |
| liw |
18.4.2008, 16:39
Сообщение
#2
|
|
Житель ![]() ![]() ![]() Группа: Модераторы Сообщений: 283 Регистрация: 2.11.2007 Пользователь №: 6 760 Репутация: 20 |
Вы предлагает скачать скрипт и переделать его?
Извините но это бесполезное занятие. Зачем вам вообще это нужно? Ну а если просто сказать, то: вести счётчик файлов и каждый новый файл переименовывать соответственно номеру (ну или не переименовывать а сохранять куда то в файл (как я понял базы там не используются)). Вот и всё. |
| ingvard |
18.4.2008, 17:39
Сообщение
#3
|
|
Только зарегистрировавшийся Группа: Пользователи Сообщений: 7 Регистрация: 18.4.2008 Пользователь №: 13 532 Репутация: 0 |
Вот смотри как я понимаю $filecrc = md5_file($_FILES['upfile']['tmp_name']); это даёт будущие имя пакета а имено ['tmp_name'] его можно какнить заменить? что бы генерировало болие маленький код.
Код <?php include("./config.php"); include("./header.php"); $filename = $_FILES['upfile']['name']; $filesize = $_FILES['upfile']['size']; $filecrc = md5_file($_FILES['upfile']['tmp_name']); $bans=file("./db/bans.php"); foreach($bans as $line) { if ($line==$filecrc."\n"){ echo "Этот файл не может быть загружен."; include("./footer.php"); die(); } if ($line==$_SERVER['REMOTE_ADDR']."\n"){ echo "Вы не можете загружать файлы."; include("./footer.php"); die(); } } $checkfiles=file("./db/files.php"); foreach($checkfiles as $line) { $thisline = explode('|', $line); if ($thisline[0]==$filecrc){ echo "Этот файл уже загружен.<br />"; echo "Ссылка для скачивания: <a href=\"" . $scripturl . "download.php?file=" . $filecrc . "\">". $scripturl . "download.php?file=" . $filecrc . "</a><br />"; echo "Этот файл первоначально был загружен не вами, так что Вы не сможете удалить ссылку."; include("./footer.php"); die(); } } if(isset($allowedtypes)){ $allowed = 0; foreach($allowedtypes as $ext) { if(substr($filename, (0 - (strlen($ext)+1) )) == ".".$ext) $allowed = 1; } if($allowed==0) { echo "Этот тип файла не может быть загружен."; include("./footer.php"); die(); } } if(isset($categorylist)){ $validcat = 0; foreach($categories as $cat) { if($_POST['category']==$cat || $_POST['category'] = ""){ $validcat = 1; } } if($validcat==0) { echo "Была выбрана неправильная категория.."; include("./footer.php"); die(); } $cat = $_POST['category']; } else { $cat = ""; } if($filesize==0) { echo "Вы не выбрали файл чтобы загрузить его."; include("./footer.php"); die(); } $filesize = $filesize / 1048576; if($filesize > $maxfilesize) { echo "Файл, который Вы загрузили, слишком большой."; include("./footer.php"); die(); } $userip = $_SERVER['REMOTE_ADDR']; $time = time(); if($filesize > $nolimitsize) { $uploaders = fopen("./db/uploaders.php","r+"); flock($uploaders,2); while (!feof($uploaders)) { $user[] = chop(fgets($uploaders,65536)); } fseek($uploaders,0,SEEK_SET); ftruncate($uploaders,0); foreach ($user as $line) { @list($savedip,$savedtime) = explode("|",$line); if ($savedip == $userip) { if ($time < $savedtime + ($uploadtimelimit*60)) { echo "Вы пытаетесь загрузить снова слишком рано!"; include("./footer.php"); die(); } } if ($time < $savedtime + ($uploadtimelimit*60)) { fputs($uploaders,"$savedip|$savedtime\n"); } } fputs($uploaders,"$userip|$time\n"); } $passkey = rand(100000, 999999); if($emailoption && isset($_POST['myemail']) && $_POST['myemail']!="") { $uploadmsg = "Ваш файл (".$filename.") был загружен.\n Ссылка для скачивания: ". $scripturl . "download.php?file=" . $filecrc . "\n Ссылка для удаления файла: ". $scripturl . "download.php?file=" . $filecrc . "&del=" . $passkey . "\n Благодарим вас за использование нашего сервиса!"; mail($_POST['myemail'],"Ваш загруженный файл",$uploadmsg,"From: admin@yoursite.com\n"); } if($passwordoption && isset($_POST['pprotect'])) { $passwerd = md5($_POST['pprotect']); } else { $passwerd = md5(""); } if($descriptionoption && isset($_POST['descr'])) { $description = strip_tags($_POST['descr']); } else { $description = ""; } $filelist = fopen("./db/files.php","a+"); fwrite($filelist, $filecrc ."|". basename($_FILES['upfile']['name']) ."|". $passkey ."|". $userip ."|". $time."|0|".$description."|".$passwerd."|".$cat."|\n"); $movefile = "./storage/" . $filecrc; move_uploaded_file($_FILES['upfile']['tmp_name'], $movefile); echo "Ваш файл был загружен!<br />"; echo "Ссылка для скачивания: <a href=\"" . $scripturl . "download.php?file=" . $filecrc . "\">". $scripturl . "download.php?file=" . $filecrc . "</a><br />"; echo "Ссылка для удаления файла: <a href=\"" . $scripturl . "download.php?file=" . $filecrc . "&del=" . $passkey . "\">". $scripturl . "download.php?file=" . $filecrc . "&del=" . $passkey . "</a><br />"; echo "Пожалуйста запомните эти ссылки."; include("./footer.php"); ?> |
| liw |
21.4.2008, 19:00
Сообщение
#4
|
|
Житель ![]() ![]() ![]() Группа: Модераторы Сообщений: 283 Регистрация: 2.11.2007 Пользователь №: 6 760 Репутация: 20 |
Ну да ты правильно понимаешь.
Я же писал, что бы сделать имя короче, веди где нибудь счётчик файлов загруженных на сервер, и по счётчику присваивай им имена. То есть вместо строки: $filecrc = md5_file($_FILES['upfile']['tmp_name']); Тебе нужно: 1. взять из базы или из файла (где хранить будешь) номер. 2. $filecrc = полученный номер. Ну и в конце, когда файл нормально загрузился: 3. записать в базу(в файл) очередной номер (ну увеличить счётчик короче) |
| ingvard |
3.5.2008, 11:17
Сообщение
#5
|
|
Только зарегистрировавшийся Группа: Пользователи Сообщений: 7 Регистрация: 18.4.2008 Пользователь №: 13 532 Репутация: 0 |
Ну да ты правильно понимаешь. Я же писал, что бы сделать имя короче, веди где нибудь счётчик файлов загруженных на сервер, и по счётчику присваивай им имена. То есть вместо строки: $filecrc = md5_file($_FILES['upfile']['tmp_name']); Тебе нужно: 1. взять из базы или из файла (где хранить будешь) номер. 2. $filecrc = полученный номер. Ну и в конце, когда файл нормально загрузился: 3. записать в базу(в файл) очередной номер (ну увеличить счётчик короче) Сделал проще rand(1000, 9999); Авто генирация числа сенкс за помощь Так же можно tmp_name заменить словом size или name будет ссылка в виде имени файла |
| ilyazh |
3.5.2008, 13:17
Сообщение
#6
|
|
Житель ![]() ![]() ![]() Группа: Пользователи Сообщений: 355 Регистрация: 16.12.2007 Пользователь №: 8 300 Репутация: 3 |
хех. Зря ты так сделал. Числа могут и повториться. А что тогда будет делать твой скрипт если 2 одинаковых записи? А если такой файл существует, то будешь ошибка и второй не зальётся.
Лучше используй не radn(), а time(); Врятли скрипт сработает секунду в секунду у 2 пользователей. А по скольку время всегда изменяется, то это можно сказать уникальное число. |
| liw |
4.5.2008, 9:47
Сообщение
#7
|
|
Житель ![]() ![]() ![]() Группа: Модераторы Сообщений: 283 Регистрация: 2.11.2007 Пользователь №: 6 760 Репутация: 20 |
Может повторится, как имя файла так и размер и время. Короче, - решать вам.
|
![]() ![]() |
|
Текстовая версия | Сейчас: 8.9.2008, 19:27 |
|