

Nedokážu vypsat echo $_SESSION["x"] = "ahoj" do <body>
Zdravím,
lopotím se už delší dobu s formulářem, který po správném vyplnění proběhne přes zpracující script v PHP a pomocí header("location: ...) je výsledek přesměrován zpět na výchozí formulář. Odesílání funguje v pořádku, až na to, že se mi vůbec nedaří tu hlášku o odeslání vypsat tam, kam chci
Tady je odkaz na důležitou část zdrojového kódu mého PHP scriptu.
Protože potřebuji zobrazovat DVĚ rozdílné hlášky o odeslání v případě, že si uživatel zatrhne v checkboxu kopii, byla jsem nucena i v <body> použít konstrukci IF. Zpráva s výše uvedeným kódem se odešle bez problému buď na jednu nebo podle volby na dvě adresy, akorát - bohužel nezobrazí ani písmenko hlášky a já jsem už v vyčerpala všechny své nápady. Řádek v kódu 37 a 39 prostě nezobrazuje a nezobrazuje...
Jinak test
<?php
session_start();
$_SESSION['test'] = 'TEST';
echo $_SESSION['test'];
?>
mi funguje. Poradíte mi prosím pěkně někdo, jak $_SESSION donutit, aby se zobrazovala uvnitř tagu body, tj. až pod Doctype kvůli potřebě zobrazení v Režimu prohlížeče standard?
Mnohokrát děkuji předem za funkční radu!
Hezký den, k předešlým příspěvkům ještě připojuji : skutečně je třeba podívat se znovu na ty testy :
Podmínka
je přinejmenším podezřelá. Projde vždy, je-li splněno
ať už je hodnota jakákoli.
Pokud plníš proměnnou kopie checkboxem (pravděpodobně), kupodivu podmínka zafunguje správně, ale zkontroluj si to.
Zdravím
,
jaktože podmínka
projde vždy? Vždyť tam mám znak porovnání a pokud nebude souhlasit, tak přece neprojde.
Btw, možná už tuším, proč mi to žádnou zprávu o odeslání nezobrazí:
- když jsem měla dřív kód
tak hned na samém začátku scriptu jsem měla
a hláška se v pohodě vypsala (i když ve quirku). A proč se vypsala? Protože příkaz k jejímu vypsání byl ve složených závorkách spolu s header("location: ...). Takže zpráva se odeslala, stránka se přesměrovala na výchozí formulář (jak jsem chtěla) a přenesl se i povel k zobrazení.
- nyní mám vypsání hlášky zcela samostatně, header("location: ...) už o ní neví zhola nic a proto se nevypíše na přesměrované stránce. Nemám pravdu?
. Dala jsem ji na začátek zpracujícího scriptu, pak i do souboru s formulářem - a nic.
Ale protože funkce header nemůže být po žádném výstupu, tak ji budu muset nejspíš bufferovat pomocí ob_start();
Zatím mám problém v tom, že ani vložení ob_start(); a vložení header("location: mail_formular.php"); hned za příkaz k zobrazení hlášky (která už je nakódována v tagu body) nesplnilo moje očekávání
Zatím ladím lokálně ve WAMPu a mám zapnuté defaultní zobrazování chyb error_reporting = 30719 tj. ALL.
V php.ini (PHP Version 5.3.0) mám "output_buffering = 1". Mám hledat ještě něco dalšího?
Zatím děkuji za pomoc
Zdravím, ad první dvě věty o podmínce :
ta podmínka není dobře ani selským rozumem, protože isset vrací hodnotu boolean.
Navíc tedy proč tvrdím, že projde vždy, když isset vrací true ?
Vyzkoušej si tento skriptík :
Jedná se o problematiku loose vs. strict comparison.
Viz např.
http://www.php.net/manual/en/types.comparisons.php
a Google Ti vrátí další diskuse.
Hezké počtení na začátek léta,já jsem z toho kdysi byl taky na infarkt .
Hurááá, v noci jsem to vyřešila
!! 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
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)
což šlapalo bezvadně, až na to, že se zpráva o odeslání zobrazovala v quirku.
Já jsem totiž myslela, že to
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
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
a pouze tento úseček kódu
přesunout o kus dolů pod Doctype - a funguje to naprosto správně
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!