Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Uaktualnienie bazy przy sciąganiu pliku, Nieodświeżanie się strony po wysłaniu nagłówków
sadistic_son
post 14.07.2009, 05:38:58
Post #1





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Macie jakiś pomysł jak zrobić aby przy kliknięciu w link do pliku na serwerze uaktualnił się rekord w bazie?

Załóżmy że w bazie jest id, nazwa_pliku, ile_razy_sciagniety.

Mamy sobie <a href=index.php?plik=costam.xxx>

Teraz jeśli user kliknie w ten link przekieruje go do strony index a zmiennej $_GET['plik'] przydzieli wartość "costam.xxx". Do tej pory wszystko ok. Ale kiedy podłączyłem do tej strony wysyłanie tego pliku prze znagłówki to strona się nie przeładowuje po kliknięciu w link, więc i zmienna $_GET['plik'] nie istnieje a co za tym idzie nie moge uaktualnic bazy że plik zostal pobrany kolejny raz.

Wygląda to tak:
  1. <a href=index.php?plik=costam.xxx>

  1. <?php
  2. if(isset($_GET['plik'])){
  3. $link = $_GET['plik'];
  4.    
  5. //nagłówki
  6. header("xxxxx");
  7.  
  8. @readfile($link);
  9. }
  10.  
  11. //teraz mialoby sie odbyc uaktualnienie bazy
  12. update_base($link);
  13. //funkcja wyszuka dany rekord i zwiekszy wartosc 'ile_razy_sciagniety' o 1.
  14. ?>
Ale tak sie nie dzieje bo strona sie nie przeladowuje. Po prostu po kliknieciu w link wywala okienko do downloadu i tyle. Nie przekierowuje do index.php

Macie jakis pomysl jak to rozwiazac?

Dzieki.

Ten post edytował sadistic_son 15.07.2009, 00:09:06


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
thomas2411
post 14.07.2009, 08:32:08
Post #2





Grupa: Zarejestrowani
Postów: 108
Pomógł: 7
Dołączył: 15.05.2005
Skąd: Rzeszów

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


Sam nie wiem dlaczego tak jest, ale możesz najpierw uaktualniać bazę, a dopiero potem pobierać plik...a co do przekierowania...Możesz zrobić na javascriptcie to, żeby np poczekał 5 sekund po wywołaniu download i następnie przekierował na index.php
Go to the top of the page
+Quote Post
Fifi209
post 14.07.2009, 08:58:17
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat
wysyłanie tego pliku prze znagłówki to strona się nie przeładowuje po kliknięciu w link


Czyli? smile.gif Jakiś błąd? Pamiętaj, że nagłówki wysyłamy jako pierwsze.

Cytat(thomas2411 @ 14.07.2009, 08:32:08 ) *
Sam nie wiem dlaczego tak jest, ale możesz najpierw uaktualniać bazę, a dopiero potem pobierać plik...a co do przekierowania...Możesz zrobić na javascriptcie to, żeby np poczekał 5 sekund po wywołaniu download i następnie przekierował na index.php


To chyba lepiej skorzystać z frames, w końcu nie każdy używa js.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
SzamanGN
post 14.07.2009, 09:05:15
Post #4





Grupa: Zarejestrowani
Postów: 94
Pomógł: 14
Dołączył: 11.10.2007

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


W kodzie dodaj po header('xxxx');
  1. <?php
  2. header('Location: index.php');
  3. ?>


--------------------
SzamanGN
Go to the top of the page
+Quote Post
sadistic_son
post 19.07.2009, 16:30:09
Post #5





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Dodałem header('Location: index.php');
Nagłówki są przed <!DOCTYPE html PUBLIC "-//W3C....... czyli na samym poczatku html (po prau funkcjach, logującej itp). I nadal to samo sciana.gif
Jeśli całą sekcję nagłówków obejme w komentarz to wszystko jest ok (oprócze tego oczywiście że nie uruchamia się download). Wygląda jakby po prostu te nagłówki coś psuły. Wygląda to tak:
  1. <?php
  2.  
  3. include"functions.php";
  4.  
  5. //pare funkcji: logująca, wylogowywująca itp itd...
  6. funkcje_jakies();
  7.  
  8.  
  9. //sprawdzenie czy plik jest pobierany: uaktualnienie ilosci download'u
  10.  
  11. if(isset($_GET['file'])){
  12. $link = $_GET['file'];
  13.  
  14. header("Pragma: public");
  15. header("Expires: 0");
  16. header("Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0");
  17. header("Content-Type: application/force-download");
  18. header("Content-Type: application/octet-stream");
  19. header("Content-Type: application/download");
  20. header("Content-Disposition: attachment; filename=\"".basename($link)."\";");
  21. header("Content-Transfer-Encoding: binary");
  22. header("Content-Length: ".filesize($link));
  23. header('Location: index.php');
  24. @readfile($link);
  25. }
  26.  
  27. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  28. <html xmlns="http://www.w3.org/1999/xhtml">
  29. <head>
  30. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  31. <title> itd....
  32. ?>


I dajmy na to że gdzieś na dole chcę wyświetlić nazwę tego pliku czyli $_GET['file']. Wyświetla się ona tylko wtedy jeśli zakomentuje nagłówki. Jeśli nie to w ogóle nie przechodzi do index.php ze strony na której kliknięto w link z downloadem np. <a href="index.php?file=cos.666">

Jest tu jakiś błąd w kodzie czy coś? Czy może w rozumowaniu?

Ten post edytował sadistic_son 19.07.2009, 16:30:26


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
Fifi209
post 19.07.2009, 17:11:14
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


header('Location: index.php');
@readfile($link);

Jak ma odczytać plik skoro przed tym robisz przekierowanie? smile.gif


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
sadistic_son
post 21.07.2009, 17:26:39
Post #7





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Rzecz w tym, że plik odczytuje. Czy jest header('Location: index.php'); czy nie to wszystko dziala tak samo.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
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: 24.07.2025 - 14:28