Autor | Zpráva | ||
---|---|---|---|
DasQweras Profil * |
#1 · Zasláno: 10. 3. 2012, 20:15:42
Zdravím, potřeboval bych poradit s jedním problémem..
Mám soubor new.php ve kterým je napsaný formulář.. po vyplnění dám odeslat a vyskočí mi text, že to bylo úspěšně odesláno.. ovšem.. zůstanu pořád na tý samý stránce, čili.. když dám F5 např. 10x, tak se mi to odešle na e-mail 10x, čili mi to někdo zaspamuje. Je tam echo, čili po odeslání mi zmizí formulář a na tý samý stránce se přes tohle zobrazí text - Váš požadavek o přidání vašeho serveru byl odeslán správci na e-mail. Do 24 hodin obdržíte e-mail od nás. V případě problému se neváhejte obrátit na e-mail **** rádi Váš problém zodpovíme. echo je takhle echo '<img border="0" src="default/images/Done.png" alt="Úspěšně vyřízeno"title="Úspěšně vyřízeno" width="80" height="80"/></a>'; echo '<b>Váš požadavek o přidání vašeho serveru byl odeslán správci na e-mail. Do 24 hodin obdržíte e-mail od nás. V případě problému se neváhejte obrátit na e-mail ****, rádi Váš problém zodpovíme.</b>'; Takže pokud se najde někdo, kdo vyplní formulář, 20x zmáčkne F5 tak mi zaspamuje e-mail... jak se tomu vyhnout? Další problém.. captcha.. Ve formuláři není, čili to zas může vyplnit nějakej spambot a posílat.. jak ji tam dát? |
||
Holi-cz Profil * |
#2 · Zasláno: 10. 3. 2012, 22:18:13 · Upravil/a: Holi-cz
Na captcha si prostuduj toto. http://www.google.com/recaptcha
A jinak, jestli chceš vyřešit ten spam místo toho echa bych přesměroval na hlavní stránku s nějakou GET proměnnou a vypsal to na hlavní stránce. Asi takto. Samozřejmě určitě se najde někdo s lepším řešením :) Po odeslání formuláře $email = $_POST['email']; header("location: index.php?form=ok&mail=$email"); [pre if($_GET['form'] == "ok") { $email = $_GET['mail']; echo ("Váš požadavek o přidání vašeho serveru byl odeslán správci na e-mail. Do 24 hodin obdržíte e-mail od nás. V případě problému se neváhejte obrátit na e-mail $email rádi Váš problém zodpovíme."); } [/pre] Aha, popletl jsem si to :) .. Myslel jsem si, že se má zobrazit jeho email. Tudíž není třeba odesílat proměnnou GET mail a na hlavní stránce také není potřeba ji kontrolovat. |
||
Andrasin Profil |
#3 · Zasláno: 10. 3. 2012, 22:56:14
To odeslání mailu pouze jednou bych řešil třeba takhle:
<?php session_start(); if (empty($_SESSION['odeslano'])) { // zde bude funkce pro odeslání mailu $_SESSION['odeslano'] = true; } else echo 'E-mail jste již jednou odeslali!'; |
||
DasQweras Profil * |
#4 · Zasláno: 11. 3. 2012, 02:53:12
Tak tohle jsem nepochopil..
Tý captche vůbec nerozumím.. Jak na to? Já sem hodím ten kod aby jste se podívali, jsem z toho jelen.. <?php include('encode.php'); //========================================== $Web = "http://*****"; //Web, z kterého budou E-Maily chodit (v e-mailu bude odkaz na stránku) $To = "e-mail"; //Na který E-Mail májí ostatní zprávy chodit //------------------------------------------ $formview = false; //Toto je pro zobrazování formuláře $sended = $_POST['sended']; //Proměnná posláno $Name = $_POST['Name']; //Název serveru $Rate = $_POST['Rate']; //Rate serveru $Email = $_POST['Email']; //E-mail dotyčného $Majitel = $_POST['Majitel']; //Majitel $Url = $_POST['Url']; //URL webu $Urldwn = $_POST['Urldwn']; //URL Download $Description = $_POST['Description']; //Popis serveru $Banner = $_POST['Banner']; //Banner $Fb = $_POST['Fb']; //FaceBook $Contact = $_POST['Contact']; //Jeho E-Mail $ImgSrc1 = $_POST['ImgSrc1']; //Odkaz na obrázek $ImgSrc2 = $_POST['ImgSrc2']; $ImgSrc3 = $_POST['ImgSrc3']; $ImgSrc4 = $_POST['ImgSrc4']; $ImgSrc5 = $_POST['ImgSrc5']; $Vysledek = $_POST['Vysledek']; $Ip = $_SERVER['REMOTE_ADDR']; //IP adresa //------------------------------------------ $Nick = StrTr($Nick,"ÁČĎĚÉÍĹŇÓÔŘŠŤÚŮÝŽáčďěéíľňóôřšťúůýž","ACDEEILNOORSTUUYZacdeeilnoorstuuyz"); //------------------------------------------ if(!$ImgSrc1){$ImgSrc1="Odkaz nebyl ke zprávě dodán.";} //Pokud není zadanej odkaz, napíše v mailu že nebyl dodán. if(!$ImgSrc2){$ImgSrc2="Odkaz nebyl ke zprávě dodán.";} if(!$ImgSrc3){$ImgSrc3="Odkaz nebyl ke zprávě dodán.";} if(!$ImgSrc4){$ImgSrc4="Odkaz nebyl ke zprávě dodán.";} if(!$ImgSrc5){$ImgSrc5="Odkaz nebyl ke zprávě dodán.";} //========================================== if($sended) { if(!$Name || strlen($Name)<3){$errmsg="Název serveru nebyl zadán nebo je příliš krátký! (min. 3 znaky)<br>";} if(!$Rate){$errmsg.="Rate nebyl zadán! ";} if(!$Email){$errmsg.="E-Mail nebyl zadán! ";} if(!$Url){$errmsg.="Webová adresa serveru nebyla zadána! ";} if(!$Urldwn){$errmsg.="Webová adresa na download klienta nebyla zadána! ";} if(!$Description || strlen($Description)<30){$errmsg.="Popis serveru nebyl zadán nebo je krátký! (min. 30 znaků)<br>";} if(!$Banner){$errmsg.="Webová adresa na banner nebyla zadána! ";} if($Chr=="+"){if(!$Vysledek || $Vysledek!=$A+$B){$errmsg.="Výsledek je špatný!<br>";}} else{if(!strlen($Vysledek) || $Vysledek!=$A-$B){$errmsg.="Výsledek je špatný!<br>";}} $explode = explode("@", $Contact); $exp = explode(".", $explode[1]); if(strlen($explode[0])<2 || strlen($exp[0])<2 || strlen($exp[1])<2){ if($explode[0]!="" && $exp[0]!="" && $exp[1]!=""){ $errmsg.= "Email ".$explode[0]."@".$exp[0].".".$exp[1]." je neplatný! Zadejte platný!<br>";} /*else{$errmsg.= "Byl zadán neplatný Email!<br>";}*/} if($errmsg!=""){$formview=true;echo $errmsg."<hr>";} } else { $formview=true; } if($formview) { $_SESSION['a'] = rand(0,9); $_SESSION['b'] = rand(0,9); $Op = Array("+","-");$_SESSION['ch'] = $Op[rand(0,1)]; echo' <!--Novy radek Name--> <li id="li_2" > <label class="description" for="name">Název serveru <font color="red">*</font></label> <div> <input id="Name" name="Name" class="element text medium" type="text" maxlength="55"/> </div><p class="guidelines" id="guide_2"><small>Název serveru maximálně o délce 55 znaků.</small></p> <td> </td> </tr> <!--Novy radek Rate--> </li> <li id="li_3" > <label class="description" for="ratesvr">Rate </label> <div> <input id="Rate" name="Rate" class="element text medium" type="text" maxlength="55"/> </div><p class="guidelines" id="guide_3"><small>Rate serveru exp,yang,drop (např. exp 200%, yang 150%, drop 30%).</small></p> <td> </td> </tr> <!--Novy radek Email--> </li> <li id="li_4" > <label class="description" for="Email">E-Mail <font color="red">*</font></label> <div> <input id="Email" name="Email" class="element text medium" type="text" maxlength="255" value=""/> </div><p class="guidelines" id="guide_4"><small>E-mail na který vám odešleme potvrzení o přijetí vašeho serveru a poskytneme další informace.</small></p> <!--Novy radek Majitel--> </li> <li id="li_5" > <label class="description" for="Majitel">Nick majitele </label> <div> <input id="Majitel" name="Majitel" class="element text medium" type="text" maxlength="255" value=""/> </div><p class="guidelines" id="guide_5"><small>Nick majitele, který bude uveden v popisku serveru.</small></p> </td> </tr> <!--Novy radek Web Stránka--> </li> <li id="li_6" > <label class="description" for="url">Webová stránka serveru <font color="red">*</font></label> <div> <input id="Url" name="Url" class="element text large" type="text" maxlength="255" value="http://"/> </div><p class="guidelines" id="guide_6"><small>WWW adresa serverových stránek.</small></p> </td> </tr> <!--Novy radek Web Odkazu Down--> </li> <li id="li_7" > <label class="description" for="url">Odkaz ke stažení klienta <font color="red">*</font></label> <div> <input id="Urldwn" name="Urldwn" class="element text large" type="text" maxlength="255" value="http://"/> </div><p class="guidelines" id="guide_7"><small>WWW adresa ke stažení klienta serveru.</small></p> <!--Novy radek Popis serveru--> </li> <li id="li_8" > <label class="description" for="description">Popis serveru <font color="red">*</font></label> <div> <textarea id="Description" name="Description" class="element textarea medium" maxlength="255"></textarea> </div><p class="guidelines" id="guide_8"><small>Popis serveru o maximální délce 255 znaků.</small></p> </td> </tr> <!--Novy radek Banner--> </li> <li id="li_9" > <label class="description" for="url">Banner (470*60) <font color="red">*</font></label> <div> <input id="Banner" name="Banner" class="element text large" type="text" maxlength="255" value="http://"/> </div><p class="guidelines" id="guide_9"><small>WWW adresa na banner vašeho serveru. Velikost 470*60.</small></p> <!--Novy radek FB--> </li> <li id="li_10" > <label class="description" for="url">FaceBook stránka serveru </label> <div> <input id="Fb" name="Fb" class="element text large" type="text" maxlength="255" value="http://"/> </div><p class="guidelines" id="guide_9"><small>WWW adresa na FaceBookovou stránku serveru.</small></p> <tr> <td><span class="imp">*</span> Kolik je '.ReplaceNum($_SESSION['a']).' '.ReplaceOp($_SESSION['ch']).' '.ReplaceNum($_SESSION['b']).'? (číslo)</td> <td><input type="text" name="Vysledek" size="35"></td> </tr> </li> <li id="li_11" > <input type="hidden" name="sended" value="true"> <input type="submit" value="Poslat"> <br> </div> </form> </div> </li> </li> </ul> </form> </div> </div> <div class="menuFH rounded"> <a href="index.php">Zpět</a> - <a href="pravidla.php"> Pravidla vkládání</a> </div> </body> <br> </table> '; } else { $Datum = date("d.M. Y - H:i:s"); cs_mail($To, $Name." se uchází o registraci", "Název serveru: $Name IP Odesílatele: $Ip Rate: $Rate E-Mail: $Email Majitel: $Majitel WwW: $Url WwW Download klienta: $Urldwn Banner: $Banner FaceBook: $Fb Popis: $Description\n Odesláno: $Datum z webu $Web ","From: $Ip@$Web\nX-web: $Web" ); echo '<img border="0" src="default/images/Done.png" alt="Úspěšně vyřízeno"title="Úspěšně vyřízeno" width="80" height="80"/></a>'; echo '<b>Váš požadavek o přidání vašeho serveru byl odeslán správci na e-mail. Do 24 hodin obdržíte e-mail od nás. V případě problému se neváhejte obrátit na e-mail, rádi Váš problém zodpovíme.</b>'; echo '<meta http-equiv="Refresh" content="3">'; } function ReplaceChars($input){ $normal = Array( 'á'=>'a','č'=>'c','ď'=>'d','ě'=>'e','é'=>'e','í'=>'i','ň'=>'n','ó'=>'o','ř'=>'r','š'=>'s','ť'=>'t','ú'=>'u','ů'=>'u','ý'=>'y','ž'=>'z', 'Á'=>'A','Č'=>'C','Ď'=>'D','Ě'=>'E','É'=>'E','Í'=>'I','Ň'=>'N','Ó'=>'O','Ř'=>'R','Š'=>'S','Ť'=>'T','Ú'=>'U','Ů'=>'U','Ý'=>'Y','Ž'=>'Z',' '=>'_'); return StrTr($input,$normal); } function ReplaceNum($in){ $words = Array('0'=>'nula','1'=>'jedna','2'=>'dvě','3'=>'tři','4'=>'čtyři','5'=>'pět','6'=>'šest','7'=>'sedm','8'=>'osm','9'=>'devět'); return StrTr($in,$words); } function ReplaceOp($in){ $chars = Array('+'=>'plus','-'=>'mínus'); return StrTr($in,$chars); } ?> </body> </html> Jak tady docílit toho, aby když odešle formulář to nemohl zaspamovat? Klidně aby se ta stránka zavřela, přesměrovala.. aby nemohl prostě dát F5 a spamovat.. + ta captcha aby nemohl vrátit zpět a obejít to.. |
||
DasQweras Profil * |
#5 · Zasláno: 11. 3. 2012, 16:41:18
Ještě mě napadlo.. co to zablokovat přes ip? Jako, že dotyčný z této IP může jen 1x denně? Po odeslání až následující den?
|
||
Časová prodleva: 12 let
|
0