Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > счетчик скачивания


Автор: $дмитрий 27.7.2004, 00:10
привет!

вот сделал наброски:

Код
<?

$url="89.zip";
$log="log.txt";


$open = fopen($log,"a")or die("îøèáêà â îòêðûòèè ôàéëà");
$read = fread ($open, 4095);


$count =count($read);


if (!strcmp($read, $url))

    {

    $re = "0|$url|\n";
    fwrite ($open,$re)or die("îøèáêà äîáàâëåíèè çàïèñè");
    fclose($open);
    echo "ôàéë îò÷åòà ñîçäàí";

    }

else

{

     $readarray = file($log);




     for($i = 0; $i < $count; $i++)

         {
         $e =explode("|", $readarray[$i]);

         if($e[1]==$url)
                     echo "gh";
                {
                $e[0]++;
                $readarray[$i] = implode($e,"|");
                $fp = fopen($log,"w");

                      if($e[1]==$url)
                            {
                            for($index = 0; $index <$count; $index++)
                            fputs($fp,$readarray[$index]);
                            }
                }
         }

}


?>


по идеи, если условия (!strcmp($read, $url)) выполняется ,то добавляется новая запись. а если нет, то цифра увел. на 1. все как в большенстве подобных скриптов. пробовал разные варианты, но че-то нихрена не пашет! что не так?


Автор: Akina 27.7.2004, 08:22
Цитата
$read = fread ($open, 4095);

Прочесть 4095 байт в строку (или меньше).
Цитата
$count =count($read);

Т.к. $read - строка, то $count = 1 адназначна.

Ну и так далее... короче ты в принципе не понимаешь что делаешь... т.е. "программа делает то что ты сказал, а не то что ты хотел".

Так что рисуй-ка ты блок-схему алгоритма и читай мануал по функциям ПХП.

Автор: $дмитрий 27.7.2004, 18:10
Цитата
$read = fread ($open, 4095);


мой прогон, надо file, но тогда strcmp($read, $url)) не заработает. ладно с этим разберемся!

последний вопрос - как массив преобразовать в строку, кто подскажет. ? весь манул излазил ниче такого не пишут.

Автор: IZ@TOP 27.7.2004, 18:55
Пожалста: $str = implode('[sep]', $arr);

Автор: $дмитрий 27.7.2004, 22:59
ааааааа опять прогон, ну конечно же implode. все надо идти высыпатся.

P.S. спасибо!

Автор: $дмитрий 28.7.2004, 08:49
хе добил я его. немного медленный получился, но для новичка пойдет. заценяйте:
Код
<?

header("Location: $url");

$log="logic.txt";
$l="l.txt";

$name = basename($url);
$goto = FALSE;

if (file_exists($url))

{
$read = file($log)   or die("îøèáêà â îòêðûòèè ôàéëà");
$re = file($l)   or die("îøèáêà â îòêðûòèè ôàéëà");
$dcisla = explode("|",$read[0]);
$files  = explode("|",$re[0]);
$goto = FALSE;

for($index = 0; $index < count($dcisla); $index++)
{

  if(strcmp($files[$index],$name) == FALSE)

  {       ++$dcisla  [$index];
          $r = implode($dcisla,"|");
          $fp = fopen($log,"w");
          flock($fp,LOCK_EX);
          fputs($fp,$r);
          flock($fp,LOCK_UN);
          fclose($fp);
          $goto = TRUE;
}  }


  if($goto == FALSE)
        {
          $open = fopen ($l, "a")or die("îøèáêà â îòêðûòèè ôàéëà");
          flock($open, LOCK_EX);
          $newlog = "|$name";
          fwrite ($open,$newlog)or die("îøèáêà çàïèñè â ôàéëà");
          flock($open, LOCK_UN);
          fclose($open);

          $open = fopen ($log, "a")or die("îøèáêà â îòêðûòèè ôàéëà");
          flock($open, LOCK_EX);
          $newhcis = "|1";
          fwrite ($open,$newhcis)or die("îøèáêà çàïèñè â ôàéëà");
          flock($open, LOCK_UN);
          fclose($open);

        }



}

else

{
          exit("ôàéë $name íå íàéäåí, ïðîâåðüòå ïðàâèëüíîñòü ññûëêè!");
}

?>


завтра view напишу rolleyes.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)