Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Odświeżenie zawartości strony, cache przeglądarki
Forum PHP.pl > Forum > Przedszkole
adas007
W moim skrypcie mam przycisk "przeglądaj", którym wybieram plik z dysku. Po jego uploadzie na serwer chcę aby strona index.php automatycznie się odświeżyła z nowymi wynikami, które powstają na podstawie analizy tegoż pliku.
Robie to schematycznie tak:

selektor wybiera plik --> kopiowanie do katalogu tmp --> kopiowanie do docelowego miejsca --> wywoałanie funkcji include "index.php";

Odświeżenie strony wykonując ponownie skrypt index.php nie sprawdza się do końca gdyż mimo, że automatycznie pokażą się nowe wyniki analizy pliku to po przejściu do innej strony i poworcie do index.php widać zawartość poprzedniego pliku, którego już na serwerze nie ma. Wygląda na to ,że w cachu przeglądarki zostają dane z przed uploadu pliku. Sprawę załatwia naciśniecie w przeglądarce przycisku odśwież lecz chiałbym nie musieć tego orbić. Jest może w PHP funkcja wymuszająca odświeżenie strony dająca efekt kliknięcia przycisku odśwież?
vokiel
Zamiast include zrób przekierowanie, a samo się odświeży.
Zajrzyj tu: header
adas007
header daje mi odpowiedni efekt ale tylko na localhost. Gdy wrzucam skrypt na jakis inny serwer przekierowanie nie działa. Czy moj serwer na cba.pl moze blokowac dzialanie funkcji header ?
Zamieszczam kod:

Wersja na localhost - działająca:
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  4. </head>
  5. <?php
  6.  
  7. if( is_uploaded_file( $_FILES['userfile']['tmp_name'] ) )
  8. {
  9.     $strUploadDir = 'C:/wamp/www/sparql2/example.rdf' . $_FILES['userfile'][''];
  10.     $nazwaP= $_FILES['userfile']['name'];  
  11.    if(!strcmp( substr($nazwaP,-4),'.rdf')|!strcmp( substr($nazwaP,-4),'.RDF'))
  12.    {
  13.    if( move_uploaded_file( $_FILES['userfile']['tmp_name'], $strUploadDir ) )
  14.    {
  15.        
  16.        
  17.        //include "index.php";
  18.        header("Location: index.php");
  19.        
  20.    }
  21.    }
  22.    else  {echo "Nieprawidłowy plik".'<br>'. '<a href="index.php">Wróć</a>';}
  23.  
  24.    
  25.  
  26. }
  27. else
  28. {
  29.    echo 'Wystąpił błąd podczas wysyłania pliku na serwer! <br /> <a href="index.php">Porót</a>';
  30. }
  31.  
  32. ?>
  33. </html>



Wersja na inny serwer - tu odświeżenie nie działa:

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  4. </head>
  5. <?php
  6.  
  7. if( is_uploaded_file( $_FILES['userfile']['tmp_name'] ) )
  8. {
  9.     $strUploadDir = '/var/www/virtual/rdf.cba.pl/example.rdf' . $_FILES['userfile'][''];
  10.     $nazwaP= $_FILES['userfile']['name'];  
  11.    if(!strcmp( substr($nazwaP,-4),'.rdf')|!strcmp( substr($nazwaP,-4),'.RDF'))
  12.    {
  13.    if( move_uploaded_file( $_FILES['userfile']['tmp_name'], $strUploadDir ) )
  14.    {
  15.        
  16.        
  17.        //include "index.php";
  18.        header("Location: index.php");//probowalem tez  header("Location: /var/www/virtual/rdf.cba.pl/index.php");
  19.        
  20.        
  21.    }
  22.    }
  23.    else  {echo "Nieprawidłowy plik".'<br>'. '<a href="index.php">Wróć</a>';}
  24.  
  25.    
  26.  
  27. }
  28. else
  29. {
  30.    echo 'Wystąpił błąd podczas wysyłania pliku na serwer! <br /> <a href="index.php">Porót</a>';
  31. }
  32.  
  33. ?>
  34. </html>
bregovic
Cytat(http://php.net/header)
Remember that header() must be called before any actual output is sent (...)

Czyli nie wysyłaj danych przed użyciem header'a - możesz temu zapobiec dzięki ob_start" title="Zobacz w manualu PHP" target="_manual.
adas007
Użyłem ob_start(); i ob_end_flush(); jednak strona nadal nie odswieza sie (odswieza sie tylko na localhost na innym serwerze to nie nastepuje)
Podaje kod po zmianach:

  1. <?
  2. ?>
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. </head>
  7. <?php
  8.  
  9. if( is_uploaded_file( $_FILES['userfile']['tmp_name'] ) )
  10. {
  11.     $strUploadDir = '/var/www/virtual/rdf.cba.pl/example.rdf' . $_FILES['userfile'][''];
  12.     $nazwaP= $_FILES['userfile']['name'];  
  13.    if(!strcmp( substr($nazwaP,-4),'.rdf')|!strcmp( substr($nazwaP,-4),'.RDF'))
  14.    {
  15.    if( move_uploaded_file( $_FILES['userfile']['tmp_name'], $strUploadDir ) )
  16.    {
  17.        
  18.        
  19.        //include "index.php";
  20.        header("Location: index.php");
  21.        
  22.        
  23.    }
  24.    }
  25.    else  {echo "Nieprawidłowy plik".'<br>'. '<a href="index.php">Wróć</a>';}
  26.  
  27.    
  28.  
  29. }
  30. else
  31. {
  32.    echo 'Wystąpił błąd podczas wysyłania pliku na serwer! <br /> <a href="index.php">Porót</a>';
  33. }
  34.  
  35. ?>
  36. </html>
  37. <?
  38. ?>
bregovic
Ok, strzelam trochę w ciemno, ale spróbuj dodać exit" title="Zobacz w manualu PHP" target="_manual za header" title="Zobacz w manualu PHP" target="_manual'em:
  1. <?php
  2. header("Location: index.php");
  3. ?>

Ewentualnie dodaj specyfikację
  1. <?php
  2. header("Location: ./index.php");
  3. ?>

Ostatecznie możesz dodać całkowity path (usuń spację między http:// a adresem):
  1. <?php
  2. header("Location: http:// twoja.strona.pl/index.php");
  3. ?>


Jeśli nic to nie pomoże, to nie wiem co jest nie tak. Masz ustawione wyświetlanie błędów na serwerze? Jeśli nie, wklej error_reporting(E_ALL) na górę skryptu.
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.