Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie pliku
Forum PHP.pl > Forum > PHP
Peace
Witam. Chodzi mi o pobieranie pliku np.

<a href="pobierz.php?plik=1">Pobierz cos tam</a> i żeby np pobierało plik z katalogu pliki/plik.zip tak samo
<a href="pobierz.php?plik=2">Pobierz 2 cos tam</a> pliki/plik2.rar

Oczywiscie w php

Dziękuję
maxbog
Zapewne chodzi ci o przekierowanie wywołania.
Sprawdzasz wartość zmiennej pobranej przez GET i na jej podstawie ustawiasz sobie header Location, np.:
  1. <?php
  2. header('Location: hxxp://www.example.com/');
  3. ?>

wpisujesz tam ścieżke do pliku, wychodzisz ze skryptu i powinno działać smile.gif

PS1.
pierwszy post smile.gif

PS2.
Da sie jakoś wyłączyć to zastępowanie wszelkich adresów na linki?
tomus90
  1. <?
  2. $filesPath = 'pliki/';
  3.  
  4. function checkFileName($name)
  5. {
  6. $pliki = array(
  7. 1 => "plik.zip",
  8. 2 => "plik.rar"
  9. );
  10. return array_search($name, $pliki);
  11. }
  12.  
  13. function send($fileName, $filePath)
  14. {
  15. if(!file_exists($filePath.$fileName))
  16. {
  17. echo('Nie ma takiego pliku na serwerze!');
  18. echo($filePath.fileName);
  19. return;
  20. }
  21. $fd=fopen($filePath.$fileName, "rb");
  22. $size=filesize($filePath.$fileName);
  23. $contents=fread($fd, filesize($filePath.$fileName));
  24. fclose($fd);
  25. header("Content-Type: application/octet-stream");
  26. header("Content-Lenght: $size:");
  27. header("Content-Disposition: attachment: filename=$fileName");
  28. echo $contents;
  29. }
  30. if(isset($_GET['name']))
  31. {
  32. if(!checkFileName($_GET['name'])){
  33. echo('Nie ma takiego pliku na serwerze!');
  34. }
  35. else
  36. {
  37. send($_GET['name'], $filesPath);
  38. }
  39. }
  40. else
  41. {
  42. echo('Nie ma takiego pliku na serwerze!');
  43. }
  44. ?>


a linki
  1. <a href="pobierz.php?name=plik1.zip">Pobierz cos tam</a>


PS Moje bezpieczniejsze czytajcie posta "Bezpieczeństwo skryptów php" smile.gif
Peace
Raczej nie pobiera tylko otwiera plik.
tomus90
Czemu tak twierdzisz??
Peace
No poprostu otwiera plik rar i exe lub inne. To tak jak bym korzystał z funckji include()
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.