Доброго времени! Нашел статью о скрипте http://webscript.ru/stories/10/07/29/1247687 Там же приведен код (в трех частях). Я его собрал в единый файл,запустил на денвере и вышла ошибка синтаксиса в 58 строке там скобка прописана. С синтаксисом в php слабовато у меня,взгляните,что склепал подскажите где подправить. <?php // сколько хранить ссылки (в секундах - 10 минут) $hardtime = 600; // текущее время в сек $currtime = time(); // проверка и очистка временных строк $arruniqid = file($templinks); $newarruniqid = array(); for($i = 0; $i < count($arruniqid); $i++) { // строки таблицы временных уник. id list($file_id,$uniq_id,$puttime) = explode("|",$arruniqid[$i]); $difftime = $currtime - intval($puttime); // если время текущей строки в пределе if($difftime < $hardtime) array_push($newarruniqid, "$file_id|$uniq_id|$puttime"); } // составить матрицу таблицы временных id $newtbdwn = implode("",$newarruniqid); $fp=$wf->fopen($templinks,"w"); @fwrite ($fp,$newtbdwn); fclose($fp, $templinks); if($_GET['getlink']) { // матрица названий файлов $arrtbfl = file($namefiles); foreach($arrtbfl as $key => $val) { list($id,$descr,$filename) = explode("|",$val); if($id == $_GET['getlink']) { list($id,$descr,$filename) = explode("|",$val); $nowid = $id; break; } } // генерировать уник. id $arrtbunq = file($templinks); $uniq_id = md5( uniqid(rand(), 1) ); array_push($arrtbunq, "$nowid|$uniq_id|$currtime\n"); // новая строка уник. id $newtbunq = implode("",$arrtbunq); // записать файл базы обратно $fp=fopen($templinks,"w"); @fwrite ($fp,$newtbunq); fclose($fp,$templinks); // Ссылка для скачивания $shlink = "href=http://test.ru/download/templinks.php?download=$uniq_id"; } if($_GET['download']) { $dwn = file($templinks); foreach($dwn as $key => $val) list($file_id,$uniq_id,$puttime) = explode("|",$val); if(strstr($uniq_id == $_GET['download']) { $id = $file_id break; } } Буду очень благодарен.
Код (PHP): // сколько хранить ссылки (в секундах - 10 минут) $hardtime = 600; // текущее время в сек $currtime = time(); // проверка и очистка временных строк $arruniqid = file($templinks); $newarruniqid = array(); for($i = 0; $i < count($arruniqid); $i++) { // строки таблицы временных уник. id list($file_id,$uniq_id,$puttime) = explode("|",$arruniqid[$i]); $difftime = $currtime - intval($puttime); // если время текущей строки в пределе if($difftime < $hardtime) array_push($newarruniqid, "$file_id|$uniq_id|$puttime"); } // составить матрицу таблицы временных id $newtbdwn = implode("",$newarruniqid); $fp=$wf->fopen($templinks,"w"); @fwrite ($fp,$newtbdwn); fclose($fp, $templinks); if($_GET['getlink']) { // матрица названий файлов $arrtbfl = file($namefiles); foreach($arrtbfl as $key => $val) { list($id,$descr,$filename) = explode("|",$val); if($id == $_GET['getlink']) { list($id,$descr,$filename) = explode("|",$val); $nowid = $id; break; } } // генерировать уник. id $arrtbunq = file($templinks); $uniq_id = md5( uniqid(rand(), 1) ); array_push($arrtbunq, "$nowid|$uniq_id|$currtime\n"); // новая строка уник. id $newtbunq = implode("",$arrtbunq); // записать файл базы обратно $fp=fopen($templinks,"w"); @fwrite ($fp,$newtbunq); fclose($fp,$templinks); // Ссылка для скачивания $shlink = "href=http://test.ru/download/templinks.php?download=$uniq_id"; } if($_GET['download']) { $dwn = file($templinks); foreach($dwn as $key => $val) { list($file_id,$uniq_id,$puttime) = explode("|",$val); if(strstr($uniq_id == $_GET['download'])) { $id = $file_id; break; } } } И ещё переменная $templinks не задана.
В начале скрипта блок вы забыли скопировать. Код (PHP): // файл-база для названий файлов $namefiles = "namefiles.dat"; // файл-база для временных ссылок $templinks = "templinks.dat";
сейчас вот так Fatal error: Call to a member function fopen() on a non-object in Z:\home\test.ru\www\download\templinks.php on line 23 И еще: файл templinks.dat изначально пустой или разделители надо вписать?
Это потому что объекта $wf нету. Что это такое в статье не написано. Про templinks.dat - в статье вроде приводится пример его заполнения.
Даа... Хороший подход в "поделился" Вам огромное спасибо за помощь! Скажите,а как насчет доработать данное сокровиША,возможно?
$wf-> можно удалить. Но статья не убедила в ценности такого подхода. И ещё я не увидел в их коде, где собственно отдаётся файл