| Autor | Zpráva | ||
|---|---|---|---|
| Manny Profil * |
#1 · Zasláno: 26. 4. 2011, 12:53:29
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 * |
#2 · Zasláno: 26. 4. 2011, 13:23:04
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 * |
#3 · Zasláno: 26. 4. 2011, 15:44:30
Jozin:
Jo díky, to jméno pomohlo. Ale ještě se mi to nepřesměrovává. |
||
| Jozin Profil * |
#4 · Zasláno: 26. 4. 2011, 18:39:07
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:
header('HTTP/1.1 200 OK');
header('Location: https://www.paypal.com/us/cgi-bin/webscr?cmd=_flow&SESSION=pyB62gXhU1_BZzwHIrAUuzmizOhxrtEwki5nIIY5GkbCpbLidS5H8l5VRmO&dispatch=50a222a57771920b6a3d7b606239e4d529b525e0b7e69bf0224adecfb0124e9b61f737ba21b0819838956b846fa597913729410f8930127a')
Jozin. |
||
| Manny Profil * |
#5 · Zasláno: 26. 4. 2011, 20:36:42
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 * |
#6 · Zasláno: 26. 4. 2011, 21:08:39
<meta http-equiv="refresh" content="4;url=http://jina_adresa.cz/cokoliv"> http://www.jakpsatweb.cz/presmerovani.html#meta |
||
| Manny Profil * |
#7 · Zasláno: 26. 4. 2011, 21:17:15
Stano:
To můžu použít leda tak v hlavičce, ale ne ve stávajícím scriptu. |
||
| Stano Profil * |
#8 · Zasláno: 26. 4. 2011, 21:26:12
|
||
| Jozin Profil * |
#9 · Zasláno: 26. 4. 2011, 22:59:02
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 * |
#10 · Zasláno: 27. 4. 2011, 06:46:28
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 * |
#11 · Zasláno: 27. 4. 2011, 18:18:09
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 * |
#12 · Zasláno: 27. 4. 2011, 20:24:15
Jozin:
Netvrdím, že jsem PHP guru. Tvůj příspěvek mi moc nepomohl. |
||
| panther Profil |
#13 · Zasláno: 27. 4. 2011, 20:27:23
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 * |
#14 · Zasláno: 28. 4. 2011, 09:57:29
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! |
||
|
Časová prodleva: 15 let
|
|||
0