Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Krzaczki w header
Mefiuu
post 28.03.2011, 21:22:07
Post #1





Grupa: Zarejestrowani
Postów: 371
Pomógł: 18
Dołączył: 23.11.2008

Ostrzeżenie: (0%)
-----


Witam. Zrobiłem system uploadu i pobierania. Pobieranie działało dotychczas dobrze, toteż dziwi mnie trochę teraźniejsze jego zachowanie. Otóż przy uploadzie dodaję do bazy info o pliku a przy downloadzie działa taki kod:

  1. $id = $_GET['file'];
  2.  
  3. if(isset($_GET['file']) && $_GET['file']==$id) {
  4.  
  5. $select = mysql_query("SELECT name, rozszerzenie FROM download WHERE id='$id'");
  6. $select = mysql_fetch_assoc($select);
  7.  
  8. $typ = $select['rozszerzenie'];
  9. $name = $select['name'];
  10.  
  11. header("Content-Type: $typ");
  12. header("Content-Disposition: attachment; filename=$name");
  13.  
  14. flush();
  15. readfile('files/'.$name);
  16.  
  17. }
  18.  


Ten kod sam skleciłem i działał do tej pory. Później jednak zaczęły dziać się cyrki i po kliknięciu 'pobierz' zaczęły wyskakiwać 'krzaczki' takie jak:

Cytat
��ࡱ�


Kompletnie nie wiem co może być przyczyną tego że działało a teraz sypie błędami, których nie mogę pojąć. O co może chodzić? Może to być wina tego, że najpierw mam w download.php cały plik a na końcu ten kod? Może ten kod dać w osobnym pliku i się do niego odwoływać?
Proszę o podpowiedzi i dziękuję.
Go to the top of the page
+Quote Post
l0ud
post 28.03.2011, 22:09:18
Post #2





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Cytat
Może to być wina tego, że najpierw mam w download.php cały plik a na końcu ten kod?


To znaczy? Jeżeli ten kod nic wcześniej nie wysyła do przeglądarki (echo, zamknięcie znacznika php i wyplucie html etc) to nie ma żadnego problemu.

Pierwsze co mi przychodzi do głowy to BOM dodane na początku pliku. Zapisz ten skrypt edytorem Notepad++ w kodowaniu UTF-8 bez BOM (zwykły notatnik tego nie potrafi) i sprawdź czy pomogło. Jak nie podaj zawartość całego pliku download.php smile.gif


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
Mefiuu
post 29.03.2011, 21:44:36
Post #3





Grupa: Zarejestrowani
Postów: 371
Pomógł: 18
Dołączył: 23.11.2008

Ostrzeżenie: (0%)
-----


to znaczy że mam 'wygląd' cały wcześniej, a ten kod co podałem to na końcu, po znaczniku </html>

Cytat
Pierwsze co mi przychodzi do głowy to BOM dodane na początku pliku. Zapisz ten skrypt edytorem Notepad++ w kodowaniu UTF-8 bez BOM (zwykły notatnik tego nie potrafi) i sprawdź czy pomogło. Jak nie podaj zawartość całego pliku download.php


Notatnik dawno mam za sobą, teraz każdą stronę tak robię jak pisałeś, także tą. Więc to nie w tym też na pewno tkwi problem.

kod

  1. <?php
  2. include("core.php");
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. <title>archiwum</title>
  8. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  9. <meta http-equiv="Reply-to" content="mefiuu93@gmail.com" />
  10. <meta http-equiv="Content-Language" content="pl" />
  11. <link rel="stylesheet" href="style/style.css" type="text/css" />
  12. <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
  13. <script type="text/javascript" src="js/core.js"></script>
  14. </head>
  15. <body>
  16.  
  17. <div id="search">
  18. <form action="search.php" name="szukaj" method="post">
  19. <input type="text" name="search" value="Szukaj..." /><input type="submit" name="wyszukaj" value="Wyszukaj" />
  20. </form>
  21. </div>
  22.  
  23. <div id="bar2">
  24. <a href="index.php">Panel</a><a href="top.php">TOP10</a><a class="wyroznij" href="#">Wyróżnione</a><a href="help.php">Pomoc</a><a href="index.php?logout=yes">Wyloguj się</a>
  25. </div>
  26.  
  27. <div id="window2">
  28. <div id="up2">
  29. Pobierz interesujący Cię materiał
  30. </div>
  31. <div id="form2">
  32.  
  33. <table class="category">
  34. <tr>
  35. <td><a href="download.php">Wszystko</a></td>
  36. <td><a href="download.php?type=other">Inne</a></td>
  37. <td><a href="download.php?type=scans">Skany</a></td>
  38. <td><a href="download.php?type=helpers">Pomoce</a></td>
  39. <td><a href="download.php?type=text">Tekst</a></td>
  40. </tr>
  41. </table>
  42. <br />
  43.  
  44.  
  45. <?php
  46.  
  47.  
  48. mysql_connect('**', '**', '**');
  49.  
  50. $down_lev = mysql_query("SELECT download_level FROM login WHERE name='".$_SESSION['login']."'");
  51. $down_lev = mysql_result($down_lev, 0, 0);
  52.  
  53. $_SESSION['level'] = $down_lev;
  54.  
  55.  
  56. if (isset($_GET['type']) && $_GET['type']=='sciagi') {
  57.  
  58. selectMaterial('Ściąga');
  59.  
  60. }
  61. elseif(isset($_GET['type']) && $_GET['type']=='skany') {
  62.  
  63. selectMaterial('Skany');
  64.  
  65. }
  66. elseif(isset($_GET['type']) && $_GET['type']=='pomoce') {
  67.  
  68. selectMaterial('Pomoce');
  69.  
  70. }
  71. elseif(isset($_GET['type']) && $_GET['type']=='zadania') {
  72.  
  73. selectMaterial('Zadania');
  74.  
  75. }
  76. else {
  77.  
  78. $pliki = mysql_query("SELECT * FROM download ORDER BY id DESC");
  79.  
  80. echo "<table class=\"download\">
  81. <thead>
  82. <tr>
  83. <th>ID:</th><th>Rodzaj:</th><th class=\"opis\">Opis:</th><th>Data:</th><th>Wrzucił:</th><th>Rozmiar:</th><th>Pobrano:</th>";
  84.  
  85. if($_SESSION['level']==1 || $_SESSION['level']==3) {
  86. echo "<th colspan=\"3\">Opcje</th>";
  87. }
  88. else {
  89. echo "<th>Opcje</th>";
  90. }
  91.  
  92. echo "</tr>
  93. </thead><tbody>";
  94. $i = 1;
  95. while($r = mysql_fetch_assoc($pliki)) {
  96. if($i % 2 == 0) {
  97. echo "<tr class=\"tbl1\"><td>";
  98. }
  99. else {
  100. echo "<tr class=\"tbl2\"><td>";
  101. }
  102. echo $i;
  103. echo "</td><td>";
  104. echo $r['rodzaj'];
  105. echo "</td><td>";
  106. echo $r['opis'];
  107. echo "</td><td>";
  108. echo $r['data'];
  109. echo "</td><td>";
  110. echo $r['autor'];
  111. echo "</td><td>";
  112.  
  113. if($r['rozmiar']>1024) {
  114. echo round($r['rozmiar']/1024);
  115. echo " MB</td><td>";
  116. }
  117. else {
  118. echo $r['rozmiar'];
  119. echo " kB</td><td>";
  120. }
  121. echo $r['pobrano'];
  122.  
  123. if($r['pobrano']=='1') {
  124. echo " raz</td><td>";
  125. }
  126. else {
  127. echo " razy</td><td>";
  128. }
  129.  
  130. if($_SESSION['level'] == 1 || $_SESSION['level']==3) {
  131. echo "Edytuj</td><td><a href=\"download.php?delete=".$r['id']."\">Usuń</a></td><td><a href=\"?file=".$r['id']."\">Pobierz</a></td>";
  132. }
  133. else {
  134. echo "<a href=\"?file=".$r['id']."\">Pobierz</a></td>";
  135. }
  136. echo "</tr>";
  137. $i++;
  138. }
  139.  
  140. echo "</tbody></table>";
  141. }
  142.  
  143. if (isset($_GET['delete']) && is_numeric($_GET['delete'])) {
  144. $id = $_GET['delete'];
  145.  
  146. $nazwa = mysql_query("SELECT name FROM download WHERE id='$id'");
  147. $nazwa = mysql_result($nazwa, 0, 0);
  148.  
  149. $usun = mysql_query("DELETE FROM download WHERE id='$id'");
  150.  
  151. if ($usun && unlink('files/'.$nazwa)) {
  152. addLog($_SESSION['login'].' usunął plik', 'O nazwie '.$nazwa, 'delete');
  153. header('location: download.php');
  154. }
  155.  
  156. }
  157. elseif(isset($_GET['delete']) && !is_numeric($_GET['delete'])) {
  158. header('location: download.php');
  159. }
  160. ?>
  161.  
  162. </div>
  163. <div id="footer2">
  164. Created by Mati &copy;
  165. </div>
  166. </div>
  167.  
  168. </body>
  169. </html>
  170.  
  171.  
  172. <?php
  173.  
  174. $id = $_GET['file'];
  175.  
  176. if(isset($_GET['file']) && $_GET['file']==$id) {
  177.  
  178. $select = mysql_query("SELECT name, rozszerzenie FROM download WHERE id='$id'");
  179. $select = mysql_fetch_assoc($select);
  180.  
  181. $typ = $select['rozszerzenie'];
  182. $name = $select['name'];
  183.  
  184. header("Content-Type: $typ");
  185. header("Content-Disposition: attachment; filename=$name");
  186.  
  187. flush();
  188. readfile('files/'.$name);
  189. }
  190.  
  191. ?>



ogólnie to jest w nim wymieszane wszystko, połączenia, widok i logika, ale niestety nie umiem bawić się z czymś zaawansowanym.

Pozdrawiam.

Ten post edytował Mefiuu 30.03.2011, 11:08:11
Go to the top of the page
+Quote Post
l0ud
post 30.03.2011, 08:29:10
Post #4





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


To nie powinno tak wyglądać. Przed wysłaniem pliku nie powinno być wysłane do przeglądarki nic innego. Ty wysyłasz jakiś html.

Sugeruję albo wydzielić kod pobierający do innego pliku i linkować do niego (bezpośrednio przeglądarkę, nie includy!), albo opakować ten kod html co jest wyżej w if'y wykluczające wysłanie go w momencie działania skryptu pobierającego plik. Pierwsze co ma otrzymać przeglądarka to te headery. I uważaj na puste linie przed i po znacznikach <?php ?> - ich też właściwie nie powinno być.


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
Mefiuu
post 30.03.2011, 11:09:35
Post #5





Grupa: Zarejestrowani
Postów: 371
Pomógł: 18
Dołączył: 23.11.2008

Ostrzeżenie: (0%)
-----


Czyli sugerujesz aby to wyglądało mniej więcej tak? :

lista.php

  1.  
  2. <?php
  3. include("core.php");
  4. ?>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml">
  7. <head>
  8. <title>archiwum</title>
  9. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  10. <meta http-equiv="Reply-to" content="mefiuu93@gmail.com" />
  11. <meta http-equiv="Content-Language" content="pl" />
  12. <link rel="stylesheet" href="style/style.css" type="text/css" />
  13. <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
  14. <script type="text/javascript" src="js/core.js"></script>
  15. </head>
  16. <body>
  17.  
  18. <div id="search">
  19. <form action="search.php" name="szukaj" method="post">
  20. <input type="text" name="search" value="Szukaj..." /><input type="submit" name="wyszukaj" value="Wyszukaj" />
  21. </form>
  22. </div>
  23.  
  24. <div id="bar2">
  25. <a href="index.php">Panel</a><a href="top.php">TOP10</a><a class="wyroznij" href="#">Wyróżnione</a><a href="help.php">Pomoc</a><a href="index.php?logout=yes">Wyloguj się</a>
  26. </div>
  27.  
  28. <div id="window2">
  29. <div id="up2">
  30. Pobierz interesujący Cię materiał
  31. </div>
  32. <div id="form2">
  33.  
  34. <table class="category">
  35. <tr>
  36. <td><a href="download.php">Wszystko</a></td>
  37. <td><a href="download.php?type=other">Inne</a></td>
  38. <td><a href="download.php?type=scans">Skany</a></td>
  39. <td><a href="download.php?type=helpers">Pomoce</a></td>
  40. <td><a href="download.php?type=text">Tekst</a></td>
  41. </tr>
  42. </table>
  43. <br />
  44.  
  45.  
  46. <?php
  47. mysql_connect('***', '**', '**');
  48.  
  49. $down_lev = mysql_query("SELECT download_level FROM login WHERE name='".$_SESSION['login']."'");
  50. $down_lev = mysql_result($down_lev, 0, 0);
  51.  
  52. $_SESSION['level'] = $down_lev;
  53.  
  54.  
  55. if (isset($_GET['type']) && $_GET['type']=='sciagi') {
  56.  
  57. selectMaterial('Ściąga');
  58.  
  59. }
  60. elseif(isset($_GET['type']) && $_GET['type']=='skany') {
  61.  
  62. selectMaterial('Skany');
  63.  
  64. }
  65. elseif(isset($_GET['type']) && $_GET['type']=='pomoce') {
  66.  
  67. selectMaterial('Pomoce');
  68.  
  69. }
  70. elseif(isset($_GET['type']) && $_GET['type']=='zadania') {
  71.  
  72. selectMaterial('Zadania');
  73.  
  74. }
  75. else {
  76.  
  77. $pliki = mysql_query("SELECT * FROM download ORDER BY id DESC");
  78.  
  79. echo "<table class=\"download\">
  80. <thead>
  81. <tr>
  82. <th>ID:</th><th>Rodzaj:</th><th class=\"opis\">Opis:</th><th>Data:</th><th>Wrzucił:</th><th>Rozmiar:</th><th>Pobrano:</th>";
  83.  
  84. if($_SESSION['level']==1 || $_SESSION['level']==3) {
  85. echo "<th colspan=\"3\">Opcje</th>";
  86. }
  87. else {
  88. echo "<th>Opcje</th>";
  89. }
  90.  
  91. echo "</tr>
  92. </thead><tbody>";
  93. $i = 1;
  94. while($r = mysql_fetch_assoc($pliki)) {
  95. if($i % 2 == 0) {
  96. echo "<tr class=\"tbl1\"><td>";
  97. }
  98. else {
  99. echo "<tr class=\"tbl2\"><td>";
  100. }
  101. echo $i;
  102. echo "</td><td>";
  103. echo $r['rodzaj'];
  104. echo "</td><td>";
  105. echo $r['opis'];
  106. echo "</td><td>";
  107. echo $r['data'];
  108. echo "</td><td>";
  109. echo $r['autor'];
  110. echo "</td><td>";
  111.  
  112. if($r['rozmiar']>1024) {
  113. echo round($r['rozmiar']/1024);
  114. echo " MB</td><td>";
  115. }
  116. else {
  117. echo $r['rozmiar'];
  118. echo " kB</td><td>";
  119. }
  120. echo $r['pobrano'];
  121.  
  122. if($r['pobrano']=='1') {
  123. echo " raz</td><td>";
  124. }
  125. else {
  126. echo " razy</td><td>";
  127. }
  128.  
  129. if($_SESSION['level'] == 1 || $_SESSION['level']==3) {
  130. echo "Edytuj</td><td><a href=\"download.php?delete=".$r['id']."\">Usuń</a></td><td><a href=\"?file=".$r['id']."\">Pobierz</a></td>";
  131. }
  132. else {
  133. echo "<a href=\"?file=".$r['id']."\">Pobierz</a></td>";
  134. }
  135. echo "</tr>";
  136. $i++;
  137. }
  138.  
  139. echo "</tbody></table>";
  140. }
  141.  
  142. if (isset($_GET['delete']) && is_numeric($_GET['delete'])) {
  143. $id = $_GET['delete'];
  144.  
  145. $nazwa = mysql_query("SELECT name FROM download WHERE id='$id'");
  146. $nazwa = mysql_result($nazwa, 0, 0);
  147.  
  148. $usun = mysql_query("DELETE FROM download WHERE id='$id'");
  149.  
  150. if ($usun && unlink('files/'.$nazwa)) {
  151. addLog($_SESSION['login'].' usunął plik', 'O nazwie '.$nazwa, 'delete');
  152. header('location: download.php');
  153. }
  154.  
  155. }
  156. elseif(isset($_GET['delete']) && !is_numeric($_GET['delete'])) {
  157. header('location: download.php');
  158. }
  159. ?>
  160. </div>
  161. <div id="footer2">
  162. Created by Mati &copy;
  163. </div>
  164. </div>
  165.  
  166. </body>
  167. </html>


download.php
  1. <?php
  2. $id = $_GET['file'];
  3.  
  4. if(isset($_GET['file']) && $_GET['file']==$id) {
  5.  
  6. $select = mysql_query("SELECT name, rozszerzenie FROM download WHERE id='$id'");
  7. $select = mysql_fetch_assoc($select);
  8.  
  9. $typ = $select['rozszerzenie'];
  10. $name = $select['name'];
  11.  
  12. header("Content-Type: $typ");
  13. header("Content-Disposition: attachment; filename=$name");
  14.  
  15. flush();
  16. readfile('files/'.$name);
  17. }
  18. ?>


żeby z lista.php odwoływać się linkami do download.php i tam odbierać te dane?

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 6.06.2024 - 10:58