

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!
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!