Autor Zpráva
Folker
Profil
Ahoj, používám session pro zaheslování takové malé administrace a když v ní chci do galerie uploadovat obrázek, tak mi vyskočí chyba:
 Platnost webové stránky vypršela. 
   
   Nejpravděpodobnější příčina:
•Místní kopie této webové stránky je zastaralá a web vyžaduje její opětovné stažení.
 
   Můžete vyzkoušet následující možnosti: 
     Stránku znovu načtete klepnutím na tlačítko Aktualizovat na panelu nástrojů. Po aktualizaci pravděpodobně budete muset na příslušnou webovou stránku znovu přejít nebo budete muset znovu zadat informace.  
 

Dělá to IE8. Ještě minulý týden to bylo v pohodě, ale těď je to hrůza. Po každém obrázku musím dát stránku aktualizovat, aby mi znova naskočila. Nevíte někdo, čím to může být?
AM_
Profil
Nepoužíváš při tom uploadu nějaké vylomeniny (např. JavaScriptem vyvolané history.go(-1))?
Jinak živá ukázka by bodla, z tohohle nikdo nic lepšího asi nevyvěští.
Folker
Profil
Jediný JS, který tam mám je tento:
<a href="uvod.php" onclick="window.history.back(1)">úvodní strana</a>&nbsp;&nbsp;|&nbsp;&nbsp;

Bez toho se nemůžu vrátit na úvodní stránku. Upload sám funguje bez problému. Mě jde špíše o teoretickou radu, proč se to bez jakékoliv změny začalo takto chovat. Zkusil jsem Firefox a tam je to bez problému. Co se týká toho session, tak v úvodu stránky mám toto:
session_start();
if ($_SESSION['authuser'] != 1) {
	echo "<p>Nemáte oprávnění k prohlížení této stránky</p>\n";
	exit();
	}

ale v tom si myslím, že problém nebude. Na ostatních stránkách je to v pohodě.
AM_
Profil
Divím se, že se to tak chová až teď :)
to je ten problém, IE bere stránky, na které byla poslána POSTDATA, v historii většinou jako neplatné (což není tak hloupé - jinak dojde k duplicitnímu odeslání, a není jasné, zda uživatel skutečně mínil stejný úkon provést dvakrát, nebo se jedná o refresh).

Řešení je prosté - netlačit to přes historii, ale dát tam nějaký redirect znovu na upload stránku, což bude i mnohem čistější.
Folker
Profil
S redirectem nemám zkušenosti. Myslíš něco takového?
<?php
if ( isset($_GET['stranka']) ) {
header( "Location: ".$_GET['stranka'] ) ;
}
?>
AM_
Profil
myslím:
upload_form.php:
<form method="post" enctype="multipart/form_data" action="upload_me.php">
...
</form>

upload_me.php:
<?php
  //obstarat upload
  header('location:upload_success.php');
?>

upload_success.php bude nějaká hláška o tom, že se upload (ne)zdařil.

Je to jen nástin myšlenky, lze to nacpat vše do jednoho souboru když si to opodmínkuješ. Ten tvůj příklad jsem nepochopil, jakýsi podivný redirect na to, co se předá v URL, s tím asi nemá moc společného.
Folker
Profil
Už vím jak na to. V IE8-nástroje-možnosti internetu jsem zaškrtl možnost neukládat šifrované stránky na disk. Asi se to přenastavilo nějakou aktualizací. Teď je to už v pohodě. Nyní k tomu co jsi psal. Pro upload používám tento zápis:
<?php
  if (is_uploaded_file($_FILES['obrazek']['tmp_name']))  {  
    if($_FILES['obrazek']['type']=="image/jpeg" or $_FILES['obrazek']['type']=="image/pjpeg"){  
      $jmeno=$_POST['jmeno']; 
      $copy = move_uploaded_file($_FILES['obrazek']['tmp_name'], 
          soubory."/img/galerie/$jmeno.jpg"); 
      chmod ($cil, 0777);  
      if($copy == true){  
        echo "Obrázek <strong>\"".$jmeno."\"</strong> byl úspěšně nahrán na server.\n<br>"; 
        }else{ 
        echo "Soubor nemohl být nahrán.\nPočet chyb: " . $_FILES['obrazek']['error']; 
      } 
    }else{ 
      echo "Lze nahrávat pouze soubory typu \"jpg\"!"; 
    } 
  } 
?> 

To by mělo vystihnout to co jsi psal, jestli se nemýlím. Je to tak?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: