| 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: 14 let
|
|||
0