За последние 24 часа нас посетили 49473 программиста и 2351 робот. Сейчас ищут 1014 программистов ...

Нужна помощь в проверке кода

Тема в разделе "PHP для новичков", создана пользователем Tamerlan TT, 11 янв 2014.

  1. Tamerlan TT

    Tamerlan TT Активный пользователь

    С нами с:
    11 янв 2014
    Сообщения:
    18
    Симпатии:
    0
    Доброго времени!
    Нашел статью о скрипте 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;
    }
    }

    Буду очень благодарен.
     
  2. semnt

    semnt Новичок

    С нами с:
    25 дек 2013
    Сообщения:
    93
    Симпатии:
    0
    Код (PHP):
    1.     // сколько хранить ссылки (в секундах - 10 минут)
    2. $hardtime = 600;
    3.     // текущее время в сек
    4. $currtime = time();
    5.     // проверка и очистка временных строк
    6. $arruniqid = file($templinks);
    7. $newarruniqid = array();
    8. for($i = 0; $i < count($arruniqid); $i++) {
    9.         // строки таблицы временных уник. id
    10.     list($file_id,$uniq_id,$puttime) = explode("|",$arruniqid[$i]);
    11.     $difftime = $currtime - intval($puttime);
    12.         // если время текущей строки в пределе
    13.     if($difftime < $hardtime)
    14.     array_push($newarruniqid, "$file_id|$uniq_id|$puttime");
    15. }
    16.     // составить матрицу таблицы временных id
    17. $newtbdwn = implode("",$newarruniqid);
    18. $fp=$wf->fopen($templinks,"w");
    19. @fwrite ($fp,$newtbdwn);
    20. fclose($fp, $templinks);
    21. if($_GET['getlink']) {
    22.         // матрица названий файлов
    23.     $arrtbfl = file($namefiles);
    24.     foreach($arrtbfl as $key => $val) {
    25.         list($id,$descr,$filename) = explode("|",$val);
    26.         if($id == $_GET['getlink']) {
    27.             list($id,$descr,$filename) = explode("|",$val);
    28.             $nowid = $id;
    29.             break;
    30.         }
    31.     }
    32.         // генерировать уник. id
    33.     $arrtbunq = file($templinks);
    34.     $uniq_id = md5( uniqid(rand(), 1) );
    35.     array_push($arrtbunq, "$nowid|$uniq_id|$currtime\n");
    36.         // новая строка уник. id
    37.     $newtbunq = implode("",$arrtbunq);
    38.         // записать файл базы обратно
    39.     $fp=fopen($templinks,"w");
    40.     @fwrite ($fp,$newtbunq);
    41.     fclose($fp,$templinks);
    42.         // Ссылка для скачивания
    43.     $shlink = "href=http://test.ru/download/templinks.php?download=$uniq_id";
    44. }
    45. if($_GET['download']) {
    46.     $dwn = file($templinks);
    47.     foreach($dwn as $key => $val) {
    48.         list($file_id,$uniq_id,$puttime) = explode("|",$val);
    49.         if(strstr($uniq_id == $_GET['download'])) {
    50.             $id = $file_id;
    51.             break;
    52.         }
    53.     }
    54. }
    И ещё переменная $templinks не задана.
     
  3. Tamerlan TT

    Tamerlan TT Активный пользователь

    С нами с:
    11 янв 2014
    Сообщения:
    18
    Симпатии:
    0
    Если не затруднит пропишите,я не силен,что прописывать
     
  4. semnt

    semnt Новичок

    С нами с:
    25 дек 2013
    Сообщения:
    93
    Симпатии:
    0
    В начале скрипта блок вы забыли скопировать.
    Код (PHP):
    1.     // файл-база для названий файлов
    2. $namefiles = "namefiles.dat"; 
    3.     // файл-база для временных ссылок
    4. $templinks = "templinks.dat";
     
  5. Tamerlan TT

    Tamerlan TT Активный пользователь

    С нами с:
    11 янв 2014
    Сообщения:
    18
    Симпатии:
    0
    сейчас вот так
    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 изначально пустой или разделители надо вписать?
     
  6. semnt

    semnt Новичок

    С нами с:
    25 дек 2013
    Сообщения:
    93
    Симпатии:
    0
    Это потому что объекта $wf нету. Что это такое в статье не написано.
    Про templinks.dat - в статье вроде приводится пример его заполнения.
     
  7. Tamerlan TT

    Tamerlan TT Активный пользователь

    С нами с:
    11 янв 2014
    Сообщения:
    18
    Симпатии:
    0
    Даа... Хороший подход в "поделился"
    Вам огромное спасибо за помощь! Скажите,а как насчет доработать данное сокровиША,возможно?
     
  8. semnt

    semnt Новичок

    С нами с:
    25 дек 2013
    Сообщения:
    93
    Симпатии:
    0
    Ищите программиста если есть конкретное задание.
    На форуме есть разделы для этого.
     
  9. Tamerlan TT

    Tamerlan TT Активный пользователь

    С нами с:
    11 янв 2014
    Сообщения:
    18
    Симпатии:
    0
    Еще раз спасибо.
    Будем искать.
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    $wf-> можно удалить. Но статья не убедила в ценности такого подхода. И ещё я не увидел в их коде, где собственно отдаётся файл