Skrypt do prowadzenia download na bazie pliku txt

Mam o to taki skrypt liczący ilość pobrań w php w zastosowaniu o plik txt. Polega na zapisywaniu do plku każdego pobrania oraz wczytywanie ilości lini w pliku:

getfile.php

<?php

	$dataloc= "plik/download.dat"; ###Ścieżka i nazwa pliku

	$read = fopen($dataloc, "r");

	$read2 = fopen($dataloc2, "r"); 

	$fileread = fread($read, filesize($dataloc));

	fclose($read);

	fwrite (fopen("plik/download.dat", "r+"), "Get\n $fileread"); ###Ścieżka i nazwa pliku

	fclose(fopen("plik/download.dat", "a+")); ###Ścieżka i nazwa pliku

	header("Location: plik.rar") ###Co ma pobrać?

?>

download.php

Tak by to wygladało: http://www.history.is.net.pl/?download=0&cat=1

Czy może mi ktoś w tym pomóc ? Bardzo Was prosze.

<?php

$nazwa = "plik/download.dat"; 

  $myFile = fopen($nazwa, "r");

  $i2 = -1;

  while(!feof($myFile)) {

     $myLine = fgets($myFile, 2000);

    $i2++;  

  }

 fclose($myFile);

?>

<? print"
Liczba Pobrań: $i2" ?> 


[/code]


Mój problem polega na tym, iż jak klikne w Pobierz to wyświetla mi ten błąd, natomiast skrypt ten też nie nalicza mi ilości pobranego pliku :( 

I czy moge jakoś kod z pliku [b]download.php[/b] zamieścić w moim pliku download, ktory wyglada tak:

[code]<?PHP if(!isset($_GET[‘cat’]) && !is_numeric($_GET[‘downloadid’]) ){ ?> » Download

  • ProgramyProgramy ułatwiające edycję plików php.
  • testTest download kategori 2.
  • test 3Test download 3.
    <?PHP }?> <?php $_Uchwyt = @fopen(‘download.txt’, ‘r’) or die(‘Wystąpił błąd.’); $kat = fread($_Uchwyt, filesize(‘download.txt’)); fclose($_Uchwyt); $kategoria=explode(„#kat#”,$kat); if(isset($_GET[‘cat’])) $idkat=$_GET[‘cat’]-1; else $idkat=0; $download=explode(„#download#”,$kategoria[$idkat]); if(isset($_GET[‘cat’]) && !is_numeric($_GET[‘download’])){ for ($i = 0; $i < count($download); $i++) { $tresc=explode(„#content#”,$download[$i]); echo ‘‘.$tresc[0].’’; } } if(isset($_GET[‘cat’]) && is_numeric($_GET[‘download’])){ $tresc=explode(„#content#”,$download[$_GET[‘download’]]); echo $tresc[1].’ '; } ?>

Wygląda na to, że błąd jest spowodowany błędną ścieżką do pliku.

Musisz sprawdzić czy napewno dobrze się odwołujesz do pliku.

Natomiast drugiego pytania nie bardzo rozumiem jeśli nie masz takich samych nazw zmiennych to raczej nie ma problemu żeby scalić te pliki albo użyć include(ścieżka do pliku).

Mam dobra sciezke do pliku i nawet chmod 777 ustawilem na plik download.dat i nie rozumie, dlaczego gdy klikne w pobierz to wyskakuje mi caly czas ten blad :frowning:

Warning: fopen() [function.fopen]: Unable to access download.dat in /home/users/history/public_html/getfile.php on line 3


Warning: fopen(download.dat) [function.fopen]: failed to open stream: Invalid argument in /home/users/history/public_html/getfile.php on line 3


Warning: filesize() [function.filesize]: stat failed for download.dat in /home/users/history/public_html/getfile.php on line 5


Warning: fread(): supplied argument is not a valid stream resource in /home/users/history/public_html/getfile.php on line 5


Warning: fclose(): supplied argument is not a valid stream resource in /home/users/history/public_html/getfile.php on line 6


Warning: fopen() [function.fopen]: Unable to access /download.dat in /home/users/history/public_html/getfile.php on line 7


Warning: fopen(/download.dat) [function.fopen]: failed to open stream: No such file or directory in /home/users/history/public_html/getfile.php on line 7


Warning: fwrite(): supplied argument is not a valid stream resource in /home/users/history/public_html/getfile.php on line 7


Warning: fopen() [function.fopen]: SAFE MODE Restriction in effect. The script whose uid is 5456 is not allowed to access / owned by uid 0 in /home/users/history/public_html/getfile.php on line 8


Warning: fopen(/download.dat) [function.fopen]: failed to open stream: No such file or directory in /home/users/history/public_html/getfile.php on line 8


Warning: fclose(): supplied argument is not a valid stream resource in /home/users/history/public_html/getfile.php on line 8


Warning: Cannot modify header information - headers already sent by (output started at /home/users/history/public_html/getfile.php:3) in /home/users/history/public_html/getfile.php on line 9

Chodzi o to, ze jak do pliku download.php o zawrtosci tej:

<?PHP if(!isset($_GET['cat']) && !is_numeric($_GET['downloadid']) ){ ?>
» Download
  • ProgramyProgramy ułatwiające edycję plików php.
  • testTest download kategori 2.
  • test 3Test download 3.
    <?PHP }?> <?php $_Uchwyt = @fopen(‘download.txt’, ‘r’) or die(‘Wystąpił błąd.’); $kat = fread($_Uchwyt, filesize(‘download.txt’)); fclose($_Uchwyt); $kategoria=explode(„#kat#”,$kat); if(isset($_GET[‘cat’])) $idkat=$_GET[‘cat’]-1; else $idkat=0; $download=explode(„#download#”,$kategoria[$idkat]); if(isset($_GET[‘cat’]) && !is_numeric($_GET[‘download’])){ for ($i = 0; $i < count($download); $i++) { $tresc=explode(„#content#”,$download[$i]); echo ‘‘.$tresc[0].’’; } } if(isset($_GET[‘cat’]) && is_numeric($_GET[‘download’])){ $tresc=explode(„#content#”,$download[$_GET[‘download’]]); echo $tresc[1].’ '; } ?>[/code] Dodam jeszcze pod tym w/w kodem nastepujacy kod:

[code]<?php $nazwa = „plik/download.dat”; $myFile = fopen($nazwa, „r”); $i2 = -1; while(!feof($myFile)) { $myLine = fgets($myFile, 2000); $i2++; } fclose($myFile); ?> <? print" Liczba Pobrań: $i2" ?>

I zapisze wszystko to w tym jednym pliku o nazwie download.php to wtedy spowalnia mi bardzo otwarcie dzialu download lub wogole sie strona z tym dzialem wtedy nie otwiera.

Bardzo prosze Was o pomoc w tej sprawie :frowning: Pomóżcie mi prosze :frowning:

Sprawdziłem u siebie na lokalu twój kod i co zaobserwowałem:

  1. Jeśli plik plik/download.dat nie istniał faktycznie działo się coś co spowalniało maszynę.

  2. w przypadku poprawnych ścieżek do plików dodanie kodu nie wpływało negatywnie na działanie komputera. (nie wypluwał błędów i nie spowalniał.

  3. poprawka w pliku zamień

    <? print" Liczba Pobrań: $i2" ?>

    [/code]

    na

[code] Liczba Pobrań: <?php echo $i2 ?>

Wniosek według mnie to musi być błędna ścieżka. Nic innego mi nie przychodzi do głowy. Jak chcesz napisz na pw to mogę sprawdzić lokalizacje na serwerze.

To moj plik download.php wyglada teraz tak:

<?PHP if(!isset($_GET['cat']) && !is_numeric($_GET['downloadid']) ){ ?>
» Download
  • ProgramyProgramy ułatwiające edycję plików php.
  • testTest download kategori 2.
  • test 3Test download 3.
    <?PHP }?> <?php $_Uchwyt = @fopen(‘download.txt’, ‘r’) or die(‘Wystąpił błąd.’); $kat = fread($_Uchwyt, filesize(‘download.txt’)); fclose($_Uchwyt); $kategoria=explode(„#kat#”,$kat); if(isset($_GET[‘cat’])) $idkat=$_GET[‘cat’]-1; else $idkat=0; $download=explode(„#download#”,$kategoria[$idkat]); if(isset($_GET[‘cat’]) && !is_numeric($_GET[‘download’])){ for ($i = 0; $i < count($download); $i++) { $tresc=explode(„#content#”,$download[$i]); echo ‘‘.$tresc[0].’’; } } if(isset($_GET[‘cat’]) && is_numeric($_GET[‘download’])){ $tresc=explode(„#content#”,$download[$_GET[‘download’]]); echo $tresc[1].’ '; } ?> <?php $nazwa = „download.dat”; $myFile = fopen($nazwa, „r”); $i2 = -1; while(!feof($myFile)) { $myLine = fgets($myFile, 2000); $i2++; } fclose($myFile); ?> Liczba Pobrań: <?php echo $i2 ?> [/code]

Niestety wowczas moj dział Download nie działa i długo sie uruchamia :frowning:

Bardzo prosze o pomoc w tej sprawie.