Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem z plikiem download
Forum PHP.pl > Forum > PHP
ro6erto
WItam, stworzylem plik download, ale niestety...
otóż chcialem aby w razie próby ściągniecia pliku configuration.php skrypt się wyłączał i zapisywał do pliku txt dane IP, z jakiego kompa była próba ściągnięcia pliku.
niestety cały czas wysyła mi maila o próbie ściągnięcia pliku, nawet jeżeli ściągany jest prawidłowy plik. Proszę o pomoc. poniżej kod pliku
  1. <?php
  2.  
  3. $file = stripslashes($_GET['file']);
  4.  
  5. if (
  6. !is_file($file) 
  7. || !eregi( "^.*(pdf|wmv|mpg|dwg)$", $file )
  8. || eregi( "^.*.php$", $file )
  9. || !eregi( "^pliki/.*$", $file )
  10. )
  11.  {
  12. header('HTTP/1.1 404 File Not Found');
  13. die();
  14. }
  15. if ($file = 'configuration.php'){
  16. $fp=fopen("liczniki/ip.txt", "a");
  17. flock($fp, 2);
  18. fwrite($fp, date("Y-m-d_H:i:s")."\n");
  19. fwrite($fp, "adres IP: ".$_SERVER['REMOTE_ADDR']."\n");
  20. //Adres IP
  21. fwrite($fp, "Nazwa komputera: ".$_SERVER['HOSTNAME']."\n");
  22. //Nazwa Komputera
  23. fwrite($fp, "Nazwa i wersja protokołu: ".$_SERVER['SERVER_PROTOCOL']."\n");
  24. //Nazwa i wersja protokołu
  25. fwrite($fp, "Zawartość nagłówka HOST: ".$_SERVER['HTTP_HOST']."\n");
  26. //Zawartość nagłówka Host
  27. fwrite($fp, $_SERVER['HTTP_USER_AGENT']."\n");
  28. //Zawartość nagłówka User Agent, wysyłanego przez przeglądarkę
  29. fwrite($fp, $_SERVER['GATEWAY_INTERFACE']."\n");
  30. //Wersja specyfikacji CGI, używanej przez serwer
  31. fwrite($fp, $_SERVER['HOSTTYPE']."\n");
  32. //System operacyjny
  33. fwrite($fp, $_SERVER['PATH']."\n");
  34. //Systemowa scieżka serwera
  35. fwrite($fp, $_SERVER['OSTYPE']."\n");
  36. //System operacyjny
  37. fwrite($fp, $_SERVER['PHP_SELF']."\n");
  38. fwrite($fp, $_SERVER['HTTP_COOKIE_VARS']."\n");
  39. fwrite($fp, $_SERVER['HTTP_POST_VARS']."\n");
  40. fwrite($fp, $_SERVER['HTTP_GET_VARS']."\n\n\n");
  41. flock($fp, 3);
  42. fclose($fp); 
  43. mail("mail", "próba wyciągnięcia pliku configuracyjnego z ".$_SERVER['HTTP_HOST'], date("Y-m-d_H:i:s")."\n".$_SERVER['REMOTE_ADDR']."\n Więcej szczegółów w pliku na serwerze." );
  44. die();
  45. } 
  46.  
  47. $fname = basename($file);
  48.  
  49. if(file_exists("liczniki/$fname.n")){ //sprawdzamy czy plik licznika istnieje
  50.  
  51. //początek licznika
  52.  
  53. $licznik=fopen("liczniki/$fname.n", "r");
  54. flock($licznik, 1);
  55. $cyfra=fgets($licznik, 100);
  56. flock($licznik, 3);
  57. fclose($licznik);
  58. $cyfra++;
  59.  
  60. $licznik=fopen("liczniki/$fname.n", "w");
  61. flock($licznik, 2);
  62. fwrite($licznik, $cyfra);
  63. flock($licznik, 3);
  64. fclose($licznik);
  65. }
  66. else { 
  67. $licznik=fopen("liczniki/$fname.n", "w");
  68. flock($licznik, 2);
  69. fwrite($licznik, "1");
  70. flock($licznik, 3);
  71. fclose($licznik);
  72.  
  73.  
  74. } 
  75.  
  76.  
  77.  
  78.  
  79.  
  80. $fsize = filesize($file);
  81. $ftime = filemtime($file);
  82. $range = $_SERVER['HTTP_RANGE']; 
  83.  
  84. $r_start = 0;
  85. $c_length = $fsize;
  86.  
  87. if ($range) 
  88. { 
  89. $reg = "/bytes=([0-9]+)-([0-9]*)/";
  90. preg_match($reg, $range, $matches); 
  91.  
  92. $r_start = (int) $matches[1];
  93. $r_stop = (int) $matches[2];
  94. if ($r_stop < $r_start) $r_stop = $fsize - 1;
  95. $c_length = $r_stop - $r_start + 1;
  96.  
  97. header('HTTP/1.1 206 Partial Content'); 
  98. header('Content-Range: bytes ' . 
  99. $r_start . '-' . $r_stop . '/' . $fsize); 
  100. } 
  101. else 
  102. { 
  103. header('HTTP/1.1 200 OK'); 
  104. }
  105.  
  106. header('Last-Modified: ' . 
  107. gmdate('D, d M Y H:i:s', $ftime) . ' GMT'); 
  108. header('Content-Disposition: ' . 
  109. 'attachment; filename="' . $fname . '"');
  110. header('Accept-Ranges: bytes'); 
  111. header('Content-Type: application/x-unknown');
  112. header('Content-Transfer-Encoding: binary'); 
  113. header('Content-Length: ' . $c_length);
  114.  
  115. if ($fp = fopen($file, 'rb'))
  116. {
  117. flock($fp, 1);
  118. fseek($fp, $r_start);
  119. echo(fread($fp, $c_length));
  120. flock($fp, 3);
  121. fclose($fp);
  122. }
  123.  
  124.  
  125. // }
  126. ?>
wieprzucpp
masz źle zapisane początkowe warunki. Pozwoliłem sobie trochę uprościć twój skrypt ;] tongue.gif. Sądzę, że zrozumiesz o co mi chodzi ;]

  1. <?php
  2.  
  3. $file = stripslashes($_GET['file']);
  4.  
  5. if(isset($file)==0)
  6. {
  7. echo("błąd!");
  8. break;
  9. }
  10. else
  11. {
  12.  
  13. $roz=stristr($file, '.');
  14.  
  15.  
  16. if(is_file($file)==& ($roz=='pdf' | $roz=='wmv' | $roz=='mpg' | $roz=='dwg') & ($roz!='php' | $roz!='html' | $roz!='htm'))
  17. {
  18. header('HTTP/1.1 404 File Not Found');
  19. echo("Good");
  20. die();
  21. }
  22. else if ($file == 'configuration.php')
  23. {
  24. //zapis
  25. echo("Mail");
  26. die();
  27. }
  28. else
  29. {
  30. echo("WTF?");
  31. }
  32.  
  33.  
  34.  
  35. //... dalsza część skryptu
  36.  
  37.  
  38.  
  39.  
  40.  
  41. }
  42. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.