Autor Zpráva
Manny
Profil *
Jelikož je mozek v útlumu, prosím o pomoc.
Následující kód by měl ověřovat zatržený chckbox, případně vypsat hlášku a následně uživatele přesměrovat jinam. Nejede mi ovšem ani jedno.
<?php 
	if (!empty($_POST))
	{
		if (empty($_POST["terms"])) 
			echo '<h3>You have to check confirmation with cancelation policy in the right checkbox!</h3>';
		else {
			echo '<script type=\"Text/JavaScript\">location.assign(\"https://www.paypal.com/us/cgi-bin/webscr?cmd=_flow&SESSION=pyB62gXhU1_BZzwHIrAUuzmizOhxrtEwki5nIIY5GkbCpbLidS5H8l5VRmO&dispatch=50a222a57771920b6a3d7b606239e4d529b525e0b7e69bf0224adecfb0124e9b61f737ba21b0819838956b846fa597913729410f8930127a\");</script>';
			}
	}
	else 
?>

<form id="objednat" action="<?php $_SERVER["PHP_SELF"];?>" method="post">
	<fieldset><legend></legend>
		<table>
			<tr class="cervene"><td>2011, May 11.<br>excllusive glamour 4 days</td><td class="submit"><input type="submit" value="Koupit hned"></td></tr>
			<tr><td>2011, May 11.<br>excllusive glamour 4 days</td><td class="submit"><input type="submit" value="Koupit hned"></td></tr>
		</table>
		
		<div id="terms">
			<input type="checkbox" name="terms" value="terms" 
<?php echo empty($_POST["terms"])? "":"CHECKED"?> ><span>I have read the terms of <a href="?str=storno">cancelation policy</a></span>
atd...
Jozin
Profil *
Ahoj,

zkus do submitů dát jméno tzn. bude to vypadat takto:
<input type="submit" name="koupit" value="Koupit hned">


A proč? Nahoře máš podmínku !empty($_POST), ale při odeslání je $_POST prázdná, když nemáš vyplněno jméno odesílacího tlačítka... Poté by ti hned mělo vše fungovat.

Jozin.
Manny
Profil *
Jozin:
Jo díky, to jméno pomohlo. Ale ještě se mi to nepřesměrovává.
Jozin
Profil *
PHP umí přesměrovávat příkazem funkcí header, tak nevím k čemu je dobré tam echem vypisovat javascript, který může mít uživatel vypnutý a tak by se stejně nepřesměroval. místo tedy echa se scriptem tam zadej:


Jozin.
Manny
Profil *
Jozin:
Jenže já už mám před tím výstup. A to se headeru nelíbí.
<h2>Objednávkový formulář</h2>

<form id="objednat" action="<?php $_SERVER["PHP_SELF"];?>" method="post">
<?php 
	if (!empty($_POST))
	{
		if (empty($_POST["terms"])) 
			echo '<h3>You have to check confirmation with cancelation policy in the right checkbox!</h3>';
		else {
		header('HTTP/1.1 200 OK');
		header('Location: https://www.paypal.com/us/cgi-bin/webscr?cmd=_flow&SESSION=pyB62gXhU1_BZzwHIrAUuzmizOhxrtEwki5nIIY5GkbCpbLidS5H8l5VRmO&dispatch=50a222a57771920b6a3d7b606239e4d529b525e0b7e69bf0224adecfb0124e9b61f737ba21b0819838956b846fa597913729410f8930127a');
			}
	}
	else ....
Stano
Profil *
<meta http-equiv="refresh" content="4;url=http://jina_adresa.cz/cokoliv">

http://www.jakpsatweb.cz/presmerovani.html#meta
Manny
Profil *
Stano:
To můžu použít leda tak v hlavičce, ale ne ve stávajícím scriptu.
Stano
Profil *
môže to použiť kde chce, nemal by to tam použiť... ;)

http://artificium.6f.sk/refresh.html
Jozin
Profil *
Jednoduše se dá vyhodnocovací logika posunout nad výstup a tím vyřešit problém s header. metatagy patří do hlavičky html, což by si opět porušil... sice to nevyvolá chybu, jako v PHP, ale je to stejně špatné.

Doporučuji prvně udělat logiku vyhodnocování a pak výstup.

Jozin.
Manny
Profil *
Jozin:
Celý script je v samostatném souboru, který includuju do indexu. Takže ani posunutí vyhodnocování na začátek souboru nepomáhá.
Jozin
Profil *
No tak jinak, prvně by to chtělo oddělit kompletně logiku od vzhledu (výstupu) a pak by s tím nebyl problém. Když to takto děláš, tak asi moc dlouho PHP nepoužíváš, a tak to prostě řeš tak, aby to fungovalo. Až se dostaneš do většího projektu, tak zjistíš, že to budeš muset oddělit a tím si i ušetříš spoustu banálních problémů.

Já mám například třídu, která zpracovává URL a druhou, která se stará o requesty a vše směřuji na Index. Při odeslání požadavku na vyhodnocení formuláře se tedy zpracuje formulář, případě se přesměruje a až se nic neděje vykreslí se template se vším, co jsem chtěl.

Jozin.
Manny
Profil *
Jozin:
Netvrdím, že jsem PHP guru. Tvůj příspěvek mi moc nepomohl.
panther
Profil
Manny:
Jozin má pravdu.

Celé to PHP z [#5] dej na začátek indexu, případný header tak bude před výstupem. U textu/hlášky použij místo echa proměnnou, kterou pak vypiš tam, kde potřebuješ.
Manny
Profil *
panther:
Udělal jsem, jak jsi říkal:
<?php 
if (!empty($_POST["koupit"]))
	{
		if (empty($_POST["terms"])){
			$chyba = true;
			}	
		else {
			header("location:https://www.paypal.com/");
			}
	}
else
?>

<!doctype html public "-//W3C//DTD HTML 4.01//EN">...

Ale pořád mi to tvrdí, že je tam výstup!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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