Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pobieranie ze strony(header)
Forum PHP.pl > Forum > Przedszkole
viamarimar
Dlaczego gdy uzywam tego kodu wszystko jest oki da sie pobierac po kliknieciu pobierz:
  1. <?php
  2.  
  3.  
  4. include("config.php");
  5. $zapytanie = mysql_query ("SELECT * FROM pliki ");
  6. if ($zapytanie) {
  7. echo '<table>';
  8. echo '<tr><td>Nazwa pelna </td><td>Nazwa skrocona</td><td>Pojemność</td><td>Data</td><td>&nbsp;</td></tr>';
  9. while ($wynik = mysql_fetch_array($zapytanie)) {
  10. echo '<tr>';
  11. echo '<td>'.$wynik["pelnanazwa"].'</td>';
  12. echo '<td>'.$wynik["skroconanazwa"].'</td>';
  13. echo '<td>'.$wynik["pojemnosc"].'</td>';
  14. echo '<td>'.$wynik["data"].'</td>';
  15. //echo '<td><a href="listaplikow.php?pliki=wyswietl&id='.$wynik['id'].'">Wyswietl</a></td>';
  16. echo '<td><a href="listaplikow.php?pliki=pobierz&id='.$wynik['id'].'">Pobierz</a></td>';
  17. echo '</tr>';
  18.  
  19. }
  20. echo '</table>';
  21.  
  22. } else {
  23. echo "Nie można wykonać zapytania!";
  24. }
  25.  
  26.  
  27.  
  28.  
  29. if(isset($_GET['pliki']) && $_GET['pliki']=='pobierz'){
  30.  
  31. $id=$_GET['id'];
  32. $link=mysql_query("SELECT * FROM pliki WHERE id='$id'");
  33. $wiersz=mysql_fetch_array($link);
  34. $file = $wiersz['skroconanazwa'];
  35. if (file_exists($file)) {
  36. header('Content-Description: File Transfer');
  37. header('Content-Type: application/octet-stream');
  38. header('Content-Disposition: attachment; filename='.basename($file));
  39. header('Content-Transfer-Encoding: binary');
  40. header('Expires: 0');
  41. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  42. header('Pragma: public');
  43. header('Content-Length: ' . filesize($file));
  44. readfile($file);
  45. }
  46.  
  47. }
  48.  
  49.  
  50. ?>

Natomiast gdy zaincluduje css i dodam if z warunkiem logowania to kod juz przestaje dzialac? Chodzi o to ze ingeruje w header z pliku gora php czyli standardowy naglwek i to sie naklada jakos czy co:
  1. <?php
  2. include("gora.php");
  3. include("bok.php");
  4. ?>
  5. <div id="right">
  6. <div class="box">
  7. <h3>Profil uzytkownika</h3>
  8. <h4>INFORMACJE O TWOIM KONCIE</h4>
  9. <?php
  10. if(empty($_SESSION['zalogowany'])) {
  11. echo "Ukryta treść!";
  12. header("Location: index.php");
  13. }
  14. else{
  15.  
  16. include("config.php");
  17. $zapytanie = mysql_query ("SELECT * FROM pliki ");
  18. if ($zapytanie) {
  19. echo '<table>';
  20. echo '<tr><td>Nazwa pelna </td><td>Nazwa skrocona</td><td>Pojemność</td><td>Data</td><td>&nbsp;</td></tr>';
  21. while ($wynik = mysql_fetch_array($zapytanie)) {
  22. echo '<tr>';
  23. echo '<td>'.$wynik["pelnanazwa"].'</td>';
  24. echo '<td>'.$wynik["skroconanazwa"].'</td>';
  25. echo '<td>'.$wynik["pojemnosc"].'</td>';
  26. echo '<td>'.$wynik["data"].'</td>';
  27. echo '<td><a href="listaplikow.php?pliki=pobierz&id='.$wynik['id'].'">Pobierz</a></td>';
  28. echo '</tr>';
  29.  
  30. }
  31. echo '</table>';
  32.  
  33. } else {
  34. echo "Nie można wykonać zapytania!";
  35. }
  36.  
  37.  
  38.  
  39. if(isset($_GET['pliki']) && $_GET['pliki']=='pobierz'){
  40.  
  41. $id=$_GET['id'];
  42. $link=mysql_query("SELECT * FROM pliki WHERE id='$id'");
  43. $wiersz=mysql_fetch_array($link);
  44. $file = $wiersz['skroconanazwa'];
  45. if (file_exists($file)) {
  46. header('Content-Description: File Transfer');
  47. header('Content-Type: application/octet-stream');
  48. header('Content-Disposition: attachment; filename='.basename($file));
  49. header('Content-Transfer-Encoding: binary');
  50. header('Expires: 0');
  51. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  52. header('Pragma: public');
  53. header('Content-Length: ' . filesize($file));
  54. readfile($file);
  55. }
  56.  
  57. }
  58.  
  59. }
  60. ?>
  61. </div>
  62.  
  63. </div>
  64.  
  65. <?php
  66. include("dol.php");
  67. ?>


ew plik gora:

  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <title>CMS</title>
  5. <meta name="keywords" content="" />
  6. <meta name="description" content="" />
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  8. <link href="css/style.css" rel="stylesheet" type="text/css" />
  9. <script type="text/javascript" src="/ckeditor/ckeditor.js"></script>
  10. </head>
  11. <body>
  12. <div id="main">



bledy poza tym ze jest milion roznych dziwnych znaczkow typu:

  1. ; 5%&#65533;&�V :=; 5'�&�V :=(:Q;� :Q�)T�*C:Q?BWQV��TE�)T�*C:Q>���1��0�1�3������`�ccf �fc ���cc�c3�cc�� ��f�c�c��a���cc�c�cc��� �������1���@��f�d�fcf f���`���ɰ��������5�c3�5���3���`�`43������5��cc��cfc�`��cc�`�c0�cc�� �cd���


  1. Warning: Cannot modify header information - headers already sent by (output started at C:\VertrigoServ\www\szablon\listaplikow.php:28) in C:\VertrigoServ\www\szablon\listaplikow.php on line 71

  1. Warning: Cannot modify header information - headers already sent by (output started at C:\VertrigoServ\www\szablon\listaplikow.php:28) in C:\VertrigoServ\www\szablon\listaplikow.php on line 72


i tak 76.77.78 wszystkie te linie ten sam blad
johny_s
Jak sobie włączysz wyświetlanie błędów to się dowiesz co jest nie tak
viamarimar
mam wlaczone tylko post mi sie zapisal zaczym go skonczylem pisac, bledy powyzej

http://phpedia.pl/wiki/Cannot_add_header_i...rs_already_sent

rozwiazanie inne niz to ktos zna?

Czlowiek jest tylko czlowiekiem, pisze posta 15min a w ciagu 1min go rozwiazuje sam wczesniej meczac sie z tym x czasu, rece opadaja.
nospor
Kod zwracajacy plik ma zwracac tylko i wyłącznie ten PLIK a nie jeszcze kupe smiecia ala kod html czy css...
viamarimar
tak powinno byc, ale to sie jeszcze zmieni, poki co chce zeby wszystko dzialalo zgodnie z zalozeniami
johny_s
W takim razie masz złe założenia,

daj sobie ten kod wysyłajacy plik do oddzielnego pliku,
do <a> możesz dodac target="_blank"
a jeśli nie znajdzie pliku do wysłania wyświetl stosowny komunikat
viamarimar
zalozenia nie sa konstruowane przezemnie, no ale trzeba je akceptowac

a z tym _blank to poprawie to dzieki
johny_s
Klient generuje założenia co chce mieć, programista tworzy własne założenia co do tego jak aplikacja ma wykonać daną część kodu i czasem trzeba przedstawić własne założenia klientowi bo nie wszystko co sobie klient ubzdura da się wykonać.
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.