Autor Zpráva
mistig
Profil
Mám dva soubory:
1) index.html
2) prehled.php

Na stránce index.html je formulář s action, odkazujícím na jiný soubor prehled.php. Ten odešle přes metodu POST údaje na emailové adresy a zároveň zobrazí přehled v HTML, kde je zobrazeno, co uživatel ve formuláři vyplnil + další věci jako čas objednávky, vygenerovaný variabilní symbol atd. Při refreshnutí stránky se vše provede znovu a přijde tolik emailů, kolikrát se to refreshne. Což není moc dobré.
Stejně tak pokud uživatel v prohlížeči dá šipku zpět a opět klikne na tlačítko odeslat.

Pokud bych nechtěl mít tu stránku s HTML přehledem, tak bych ze stránky prehled.php použil pouze tu PHP část, která odešle údaje na email a použil

header('Location: http://www.mojeadresa.cz/') pro přesměrování na index.html a tím by to asi bylo vyřešené. Jak to ale udělat i s tím přehledem o objednávce?

Díky moc za případné odpovědi.
Alphard
Profil
Přesměrování je správné řešení, data pro zobrazení je třeba někam uložit. Někdy je možné je zpětně vytáhnout z databáze, pokud to nejde, uložte si je do session.

Kdyby vást to zajímalo víc, tak konceptu zobrazení obecných zpráv (Objednávka byla uložena, Soubor byl smazán, ...) se říká flash messages.
mistig
Profil
Alphard:
Tak o session si budu muset ještě něco přečíst... zatím o tom vím jen to, že existuje :)
Databázi nepoužívám, bohatě mi stačí to poslání na email.

Takže řešení je že budu mít ty soubory 3?
- index.html s formulářem a action odkazující na čistý PHP kód
- neco.php který odešle ty údaje na email a do něj strčím ten header('Location: prehled.html'); který po odeslání údajů na email přesměruje na novou HTML stránku
- prehled.html to je ta HTML stránka které už refresh vadit nebude

A k tomu abych mohl ty PHP proměnné zobrazit na té posladní stránce mi pomůže session?

PS: Zatím jsem to nestudoval, jen si to snažím sedláckým rozumem ujasnit :)
mimochodec
Profil
mistig:
Takže řešení je že budu mít ty soubory 3?
- index.html s formulářem a action odkazující na čistý PHP kód
- neco.php který odešle ty údaje na email a do něj strčím ten header('Location: prehled.html'); který po odeslání údajů na email přesměruje na novou HTML stránku
- prehled.html to je ta HTML stránka které už refresh vadit nebude

Ano.

A k tomu abych mohl ty PHP proměnné zobrazit na té posladní stránce mi pomůže session?

Session se dá použít k předání informace ze stránky na stránku, aniž by se to vezlo jako součást adresy. Kdyby šlo jen o informaci, jestli mail v pořádku odešel nebo ne, by to potřeba nebylo - po vyhodnocení odeslání lze přesměrovat třeba na stránku odeslanook.html / odeslanochyba.html. Zajímavější je to ale od momentu, kdy si uvědomím, že když mail neodešel, může být příčina ve špatně vyplněném formuláři, tudíž by se hodilo přesměrovat ne na stránku s informací "chyba", ale na původní formulář, kde by bylo velmi záhodno předvyplnit ho tím, co tam uživatel napsal. A pro přenos informací do toho formuláře se session hodí výtečně.
Ještě bych dodal z praxe, že html stránky vůbec nepoužívám, všechno pojmenovávám .php. Člověk nikdy neví, kdy se mu kde bude hodit nějaká php funkce.
mistig
Profil
Děkuji za Váš čas. Zkusím si s tím pohrát.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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