Autor Zpráva
blahapet
Profil
Ahoj, řeším malý problémek. Mám knihu návštěv, kde po vložení příspěvku uživatele přesměrovávám na jinou stránku a hlášku před tím uložím do SESSION:

<?php
    .. ... ...
    $_SESSION["msg"] = "Váš příspěvek byl přidán";
    header('Location:  /navratova-stranka');
    ... ... ...
    ?>

A teď v souboru navratova-stranka.php vypisuji hlášku:

<?php if(!empty($_SESSION['msg'])): ?>
<p class="msgf"><?php echo $_SESSION['msg']; ?></p>
<?php 
unset($_SESSION['msg']); 
endif;
?>

Jenže ta hláška se nezobrazí, jedině když zakomentuji řádek s unset(). Prostě tu hlášku chci zobrazit a vzápětí odstranit ze session.

Předem díky.
Taps
Profil
blahapet:
lepší je použít isset a mít na předmětné stránce session_start();

<?php
 if(isset($_SESSION['msg'])){?>
<p class="msgf"><?= $_SESSION['msg']; ?></p>
 <?
 unset($_SESSION['msg']);
 }
 ?>
Informování uživatele o výsledku operace
Tomášeek
Profil
Taps:
lepší je použít isset
Proč myslíš?
mckay
Profil
Tomášeek:
Proč myslíš?
IMO proto, že smyslem je zjistit, jestli je ta session proměnná nastavená a ne jestli obsahuje prázdnou (nebo za prázdnou považovanou, hodnotu). Osobně mi tam přijde isset lepší hlavně proto, že o pár řádků níže potom provádí unset.
Tomášeek
Profil
mckay:
Tak pokud tu hodnotu chci vypsat, tak mě zajímá asi její hodnota. Vypsat prázdný info box nedává moc smysl.

Nicméně jako rada k uvedenému dotazu to není validní, nic to neřeší - svým dotazem jsem narážel zejména na toto. Je to jen jiná forma podmínky, která má v uvedeném případě stejný výsledek.
Serg
Profil
blahapet:
Tak jestli to po zakomentování unsetu funguje, tak mě napadá, jestli se ta stránka nemůže načíst třeba 2x nebo tak něco?

Ta návratová stránka jinak funguje? Není třeba jen testovací na tu hlášku - takže když se nezobrazí nic, tak to vypadá, že se jen nevypsala ta hláška, ale ve skutečnosti je tam třeba nějaká chyba a vypnuté zobrazování chyb? I když v tomhle kódu nevidím nic, co by mohlo způsobit Fatal error.

Můžeš zkusit dát ještě exit za přesměrovávací header, a kouknout, jestli někde není navíc include na navratovou-stranku.php
Btw, co se stane, když místo unsetu dáš něco jako
$_SESSION['msg'] = "[Info msg was already deleted]";
blahapet
Profil
Serg:
Můžeš zkusit dát ještě exit za přesměrovávací header

Ano, tím to bylo. Moc děkuji všem, to by mne nenapadlo.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0