Podmínka – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Podmínka – PHP – Fórum – Programujte.comPodmínka – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Filip
~ Anonymní uživatel
101 příspěvků
9. 4. 2016   #1
-
0
-

Zdravím,

jsem ve druhém ročníku na IT. Již v prváku jsem dělal webové stránky, ale to co nás naučily bylo otřesné. Začal jsem se doma věnovat bootstrapu a na stránkách jsem si chtěl udělat kontaktní formulář.

Chtěl jsem tam dát anti spam ochranu  (Jednoduchý příklad slovně zadaný "jedna + jedna"), ale pokud chci formulář odeslat fungují všechna čísla jenom dvojka ne.

Podmínka vypadá takto : if ($jmeno!="" and $email!="" and $text!="" and $spam!=="2")

Dále bych se chtěl zeptat jak by šlo jednoduše udělat aby mi to po odeslání skočilo na /index.html (Nejlépe se zprávou že se to podařilo, nebo nepodařilo odeslat) a né na /send.php

Prosím nějaké podrobnější vysvětlení a co nejlehčí. Toto dělám poprvé v životě.

Děkuji za Váš čas

Nahlásit jako SPAM
IP: 86.61.185.–
Reklama
Reklama
Kit+11
Guru
9. 4. 2016   #2
-
0
-

#1 Filip
Osobně bych tu podmínku obrátil, tedy:

if ($jmeno=="" or $email=="" or $text=="" or $spam!=="2") {
    throw new Exception("Ty jsi asi robot!");
}
// ... nejsem robot ...

Vyhodnocování je pak jednodušší a zbytečně se nezvyšuje odsazení kódu.

Koukám, že poslední podmínku máš obráceně.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Doomista+1
Stálý člen
10. 4. 2016   #3
-
0
-

   

<?php printf("<script>location.replace('index.html');</script>"); ?>

tohle když dáš na konec stránky send.php, tak se provedou všechny ty php skripty a uživateli se pak odešle prázdná stránka, která ho okamžitě přesměruje na index.
Druhá možnost je mít zpracovávání ze sendu v indexu a mít na začátku zpracovávání podmínku pomocí funkce isset($_GET["jmeno"]) apod

// Url je treba index.php?jmeno=BFU&mail=BFU@mail.bfu

<?php
	if(isset($_GET["jmeno"]) and isset($_GET["mail"])){
	// Stranka byla zavolana s daty z formulare, tady je nejprve zpracuj
	}
?>

<!-- Normalni obsah stranky -->


a ještě jsem teď našel php funkci header, viz.: http://stackoverflow.com/…-address-bar
podle toho, co tam je napsané, bys musel na konec send.php vrazit řádek:

header("Location: index.php");

To první řešení, co jsem uvedl, tak využívá javascript a uvádím ho proto, že už jsem potkal servery, kde nějaký chytrák zablokoval funkci header.

A jak řekl Kit, tu podmínku máš obráceně:
$spam!=="2" // smaž ten vykřičník

Nahlásit jako SPAM
IP: 2a00:1028:83a0:33ea:1d2d:...–
Na vše stačí iostream...
peter
~ Anonymní uživatel
2528 příspěvků
11. 4. 2016   #4
-
0
-

Ze to ma zobrazit nejakou zpravu bych resil
header("Location: index.php?zprava=1");
if ($_GET['zprava']=='neco') {echo ...}
 

Nahlásit jako SPAM
IP: 2001:718:2601:26c:9938:70...–
oxidián0
Věrný člen
13. 4. 2016   #5
-
0
-

if ($jmeno!="" and $email!="" and $text!="" and $spam!=="2")

bych nahradil za

if ($jmeno!=="" and $email!=="" and $text!=="" and $spam!="2")

nebo

if ($jmeno!=="" and $email!=="" and $text!=="" and $spam<>"2")

Nebo

if (!empty($jmeno) and ... )

vypadá to čistěji ale zase se tam volá funkce. empty má tu výhodu že ti vrátí false pokud proměnná není nastavená, definovaná nebo je null. Právě když porovnáváš prázdné řetězce "" je dobré porovnávat typ aby nedošlo k záměně s hodnotou 0. Naopak u čísla 2 porovnávat typ je zbytečné.

Já bych pracoval asi trochu jinak. Nejdříve bych otestoval o jaký typ akce jde .. obvykle pomocí switch. Pokud zpracovávám formulář např. registrační, tak pro danou větev bych si nejdříve otestoval $jmeno!=="" and $email!=="" and $text!=="" a nastavil proměnnou která mi jednou pro vždy řekne jestli formulář byl správně vyplněn. Např. $formIsValid = $jmeno!=="" and $email!=="" and $text!=="" ? false : true;

podmínka může být i složitější ale pak používej závorky. V dalších situacích už jen používáš $formIsValid.

Dále bych použil index.php místo index.html  když používáš php. Mít koncovky html mi při php příjde nelogické.

Nahlásit jako SPAM
IP: 78.45.87.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 74 hostů

Podobná vlákna

IF A ELSE - podmínka — založil Morello

Podminka — založil lolkohrad

Podminka — založil Atheo

Podmínka IF — založil pawlik

Podminka — založil Atheo

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý