Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Nedokážu vypsat echo $_SESSION["x"] = "ahoj" do <body>

Hurááá, v noci jsem to vyřešila :puff: !! A jak jednoduché řešení bylo na dosah...
Dlouhé hodiny bádání byly zapříčiněny mým tragickým nepochopením (učím se PHP tak čtvrt roku) fungování session:
původně jsem měla v souboru s formulářem úplně nahoře kód

<?php session_start();
if (isset($_SESSION["zprava"]))
{
echo $_SESSION["zprava"];
unset ($_SESSION["zprava"]);
}
a v scriptu ve zpracujícím souboru (to "zprava" jsem až potom změnila na "jedna" a "dva", protože jsme už nevěděla kudy kam)
if (empty($chyba))
      {
      cs_mail("adresa@email.cz", $predmet, "--$nick--\n".$zprava, "From: $email\n");
      header("location: http://localhost/adresa/mail_formular.php");
$_SESSION["zprava"] = "<h3 id='anim'>Zpráva byla úspěšně odeslána</h3>";
      }
      if (isset($_POST["kopie"]) == "ano" and (empty($chyba)))
      {
cs_mail($email, $predmet2, "Z formuláře na webu adresa.cz jste odeslali tuto zprávu:\n---------------------------------------------------------------------------\n\n $zprava", "From: no-reply@adresa.cz\n");
header("location: http://localhost/adresa/mail_formular.php");
$_SESSION["zprava"] = "<h3 id='anim'>Zpráva byla úspěšně odeslána<br />Zpráva byla odeslána i na Vaši adresu</h3>";          
      exit;
          }    
což šlapalo bezvadně, až na to, že se zpráva o odeslání zobrazovala v quirku.
Já jsem totiž myslela, že to
$_SESSION["zprava"] = "<h3 id='anim'>Zpráva byla úspěšně odeslána</h3>"; a $_SESSION["zprava"] = "<h3 id='anim'>Zpráva byla úspěšně odeslána<br />Zpráva byla odeslána i na Vaši adresu</h3>"; 
musím šoupnout někam dolů pod Doctype a k tomu dopsat echo. Jenže po vyjmutí výše uvedeného kódu s hláškami a dosazením na jiné místo ve zpracujícím souboru se session nejspíš ztratila do nenávratna a tudíž nebylo jak přenést zprávu o odeslání zpátky na soubor s formulářem (díky header("location:...).

Takže řešení:
nechat
if (empty($chyba))
      {
      cs_mail("adresa@email.cz", $predmet, "--$nick--\n".$zprava, "From: $email\n");
      header("location: http://localhost/adresa/mail_formular.php");
$_SESSION["zprava"] = "<h3 id='anim'>Zpráva byla úspěšně odeslána</h3>";
      }
      if (isset($_POST["kopie"]) == "ano" and (empty($chyba)))
      {
cs_mail($email, $predmet2, "Z formuláře na webu adresa.cz jste odeslali tuto zprávu:\n---------------------------------------------------------------------------\n\n $zprava", "From: no-reply@adresa.cz\n");
header("location: http://localhost/adresa/mail_formular.php");
$_SESSION["zprava"] = "<h3 id='anim'>Zpráva byla úspěšně odeslána<br />Zpráva byla odeslána i na Vaši adresu</h3>";          
      exit;
          }    
na svém místě a na výchozí stránce s formulářem, kam se potom přesměrovává, ponechat na samém začátku scriptu
<?php
session_start();
}
a pouze tento úseček kódu
if (isset($_SESSION["zprava"]))
{
echo $_SESSION["zprava"];
unset ($_SESSION["zprava"]);
}
přesunout o kus dolů pod Doctype - a funguje to naprosto správně :-D
Uff, teda, už si budu do smrti pamatovat, že nezáleží na tom, kde se nachází kousek kódu, který chci zobrazit, ale na tom, kam přesunout povel k zobrazení, tedy echo
Hezký den!

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny