

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!
Nestudoval som tvoj odkaz, ale PHP scriptu by malo byt absolutne fuk kam to vypisuje, PHP script nepozna html-ovske "<body>" a ani ho to nezaujima ci tam nejake body bolo alebo nie.
Takze ak ti to funguje na inom mieste programu tak sa zameraj na sledovanie rozdielov tych dvoch miest (nejake premenne su na jednom mieste viditelne a na inom nie, apod)
Ne tak docela, opravdu je potřeba (a bylo mi to i poraděno) vypsat tu $_SESSION do tagu body, tj. pod Doctype. Umím vypsat, co potřebuji, nad Doctype, ale stránka se pak zobrazí v Režimu kompatibility a v tom momentě Opera spolu s IE zcela odmítají požadované formátování, nereagují na nic = opravdu nechci, aby se mi hláška o odeslání mailu zobrazovala škaredě nad záhlavím, úplně mimo stránku.
Vím, že můžu echem vypsat PHP kód kamkoliv do stránky, tak proč to nejde u <?php echo $_SESSION["x"]?> ?
Ale ved jasne ze to prehliadac inac zobrazi, ale PHP scriptu je fuk kedy co generuje, musi vygenerovat stejnu vec pred body aj po body aj pred po end a aj o rok, proste PHP je jedno kedy nieco robi. Zobraz si HTML zdrojak ze co ti to tam vygenerovalo. Ak to vygeneruje pred body nieco ine ako po body tak sleduj napr. premenne PHP scriptu - pred body to mas v inej funkcii mozno, a je tam problem viditelnosti premennych z podfunkcie, apod. Pisem ze som to nestudoval co tam robis, robis to predsa ty. Mas tam nejake podfunkcie?
prip. mas tam viac scriptov a tie data nepreziju z prveho scriptu po ten druhy, apod, citaj aj uplne prvu odpoved (session_write_close) apod, nastuduj si sessions.
Prip. to urob ako jeden dlhy PHP script a vsetko rob cez echo apod.
Vypíš si hodnoty premenných, ktoré používaš v tých if-och pomocou var_dump (rovno si var_dumpni celú session) a daj vedieť, že čo tam vlastne máš vtedy, keď sa to má vypísať.
Zdravim,
ten script orezany od toho odosielania funguje bez problemov, chybu by som hladal najskor tam (dole pred zobrazenim toho nadpisu treba skontrolovat ci je premenna $chyba naozaj prazdna - aby sa hlasenia vypisali). ALE v tom kode (ak je v jednom scripte) je podla mna aj ina chyba: na zaciatku scriptu po session start su obidvom premennym jeden aj dva priradene hodnoty(to sa este potom dupluje v odosielani), v takom pripade na konci scriptu bude podmienka jedna vyhovovat vzdy ak aj podmienka dva.
Modelovy priklad: ak nie je zaskrtnuta kopie=ano vyhovuje prva podmienka, vypise:
ak je zaskrtnute kopie=ano vyhovuju obe podmienky - aj prva aj druha, vypise:
Treba odmazat 3. a 4. riadok z toho zverejneneho scriptu.
Kio.
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!