Autor | Zpráva | ||
---|---|---|---|
hladis Profil |
#1 · Zasláno: 6. 2. 2010, 13:33:35 · Upravil/a: hladis
Ahoj, před pár lety sem se pokusil spustit stránku na odesílání mailů, úspěšně. Teď bych to potřeboval trochu zdokonalit - přidat obrázkovou antispamovou ochranu. Dost se mi líbí tato - www.zubrag.com/scripts/antispam-image-generator.php, jak to mám vložit do tohoto skriptu
<?php $komu = $_POST['komu']; $predmet = $_POST['predmet']; $email = $_POST['email']; $text = $_POST['text']; $spam = $_POST['spam']; if($spam == "2"){ if ($predmet != "") { if ($text != "") { if ($email != "") { if (ereg("^.+@.+\\..+$", $komu)){ if (mail($komu, $predmet, $text, 'From: ' . $email)){ echo("Email byl úspěšně odeslán"); } else { echo("Email se nepodařilo odeslat"); } } else { echo("Adresa příjemce není platnou emailovou adresou"); } } else { echo("Adresa odesílatele není platnou emailovou adresou"); } } else { echo("Nenapsal jsi žádný text"); } }else { echo("Nenapsal jsi žádný předmět"); } }else{ echo("Nevíš, kolik je jedna plus jedna?"); } ?> Tady je stránka toho webmailu - http://fasteml.tym.cz/ Pomohl by mi někdo dokončit tento projekt? Byl bych moc vděčný. |
||
hladis Profil |
#2 · Zasláno: 6. 2. 2010, 13:36:43
A ještě sem přidávám odesílací formulář:
<table align="center"> <tbody> <tr> <td><p>Komu:</p></td> <td><INPUT TYPE="text" SIZE="110" NAME="komu"></td> </tr> <tr> <td><p>Odesílatel:</p></td> <td><INPUT TYPE="text" NAME="email" SIZE="110" MAXLENGTH="30"></td> </tr> <tr> <td><p>Předmět:</p></td> <td><INPUT TYPE="text" NAME="predmet" SIZE="110" MAXLENGTH="30"></td> </tr> <tr> <td><p>Text:</p></td> <td><TEXTAREA COLS="83" ROWS="5" NAME="text"></TEXTAREA></td> </tr> <tr> <td><p>AntiSpam:</p></td> <td><input name="spam" size="25"> <strong>= 1 + 1</strong></td> </tr> <tr> <td><button type="submit" style="background:url('http://fasteml.tym.cz/img/odeslat.gif');width:80px;height:30px;" onclick="return confirm('doopravdy odeslat?')"> </button></td> <td><button type="reset" style="background:url('http://fasteml.tym.cz/img/vymazat.gif');width:80px;height:30px;" onclick="return confirm('doopravdy smazat?')"></td></button> </tr> </tbody> </table> </FORM> |
||
SwimX Profil |
#3 · Zasláno: 6. 2. 2010, 14:42:12
hladis:
do formuláře někam přidej: <img id="captcha" src="captcha.php" alt="antispam" width="180" height="50"><br class="invis"> <label for="kod" id="opsat">Opište kód <span>malá písmenka</span> <span>čísla 1-9</span></label><input type="text" name="captcha" id="kod"> soubor captcha.php <?php session_start(); define ("POCET", 5); // číslo = náhodných písmen nebo čísel v captche $capt = ""; for($i=0; $i<POCET; $i++){ $nahoda = mt_rand(0, 1); if ($nahoda == 0) // mala pismenka $capt .= chr(mt_rand(97, 122)); else // cisla $capt .= chr(mt_rand(49, 57)); // nenačítám nulu aby nedošlo ke zmatení zda jde o nulu nebo o } $_SESSION['capta'] = $capt; // uložení do sessionu abych to moohl porovnávat na jiné stránce $img = imagecreate((POCET+1)*30, 50); // vytvoření obrázku podle počtu cifer $color_bg = imagecolorallocate($img, 11, 11, 11); // barva pozadí imagefill($img, 0, 0, $color_bg); // vyplnění obrázku barvou for ($i = 0; $i<3; $i++){ // 3krát zamíchání souřadnic, barev $x1 = mt_rand(0, (POCET+2)*10); $x2 = mt_rand($x1, (POCET+2)*30); $y1 = mt_rand(0, 20); $y2 = mt_rand($y1, 50); $r = mt_rand(50, 255); $g = mt_rand(50, 255); $b = mt_rand(50, 255); $color_line = imagecolorallocate($img, $r, $g, $b); imageline($img, $x1, $y1, $x2, $y2, $color_line); // udělání čar do obrázků } for($i=0; $i<POCET; $i++){ // vytisknutí písmenek do obrázku $size = mt_rand(20, 30); // náhodná velikost $angel = mt_rand(-30, 30); // náhodný sklon $r = mt_rand(100, 255); //náhodná barva $g = mt_rand(100, 255); $b = mt_rand(100, 255); $color_txt = imagecolorallocate($img, $r, $g, $b); imagettftext($img, $size, $angel, $i*30+10, 40, $color_txt, "Mias.ttf", $_SESSION['capta'][$i]); // vložení textu do obrázku pomocí fontu Mias.ttf } for ($i = 0; $i<3; $i++){ // zase 3 čáry, ale tentokrát přes písmo $x1 = mt_rand(0, (POCET+2)*10); $x2 = mt_rand($x1, (POCET+2)*30); $y1 = mt_rand(0, 20); $y2 = mt_rand($y1, 50); $r = mt_rand(50, 255); $g = mt_rand(50, 255); $b = mt_rand(50, 255); $color_line = imagecolorallocate($img, $r, $g, $b); imageline($img, $x1, $y1, $x2, $y2, $color_line); } header("Content-type: image/png"); // nastavení headru na image/png ImagePng($img); // prirazeni obrazku do captcha.php imagedestroy($img); // uvolneni promnene img - aby nemusela byt v pameti zbytecne ?> a v tom php souboru: nahraď tyto řádky $spam = $_POST['spam']; if($spam == "2"){ za tyto $spam = $_POST['captcha']; if($spam == $_SESSION['capta']){ a uplně nahoru přidej session_start();
|
||
Kalby Profil |
#4 · Zasláno: 6. 2. 2010, 14:42:47
ja to vetsinou delam jednoduse tak ye do divu kteremu nastavim visibility:hidden vlozim input ktery pojmenuju nejak lakalve treba url, email, atd. pote testuji jestli byl vyplnen, pokud ano je to BOT a neodeslu formular
|
||
hladis Profil |
#5 · Zasláno: 6. 2. 2010, 15:21:33
Kalby: Díky za radu, kdyžtak bych to vyzkoušel.
SwimX: Nějak to nefunguje, kdyžtak se koukni na tu stránku. Nenačítá se tam obrázek, ale umístění a zapsání souborů jsem kontroloval... můj formulář s antispamem teď vypadá takto: <tr> <td><p>Antispam:</p></td> <td><p><img id="captcha" src="captcha.php" alt="antispam" width="180" height="50"><br class="invis"> <label for="kod" id="opsat">Opište kód <span>malá písmenka</span> <span>čísla 1-9</span></label><br> <input type="text" name="captcha" id="kod"></td> </tr> Zkusím ještě jednou vše zkontrolovat, pak se uvidí. |
||
SwimX Profil |
#6 · Zasláno: 6. 2. 2010, 15:25:30
hladis:
musíš ještě ke captche uložit soubor http://plavec.borec.cz/Mias.ttf s fontem písma, zapomněl jsem na něj :) |
||
hladis Profil |
#7 · Zasláno: 6. 2. 2010, 15:34:48
SwimX:
Pořád nic - http://fasteml.tym.cz/ |
||
SwimX Profil |
#8 · Zasláno: 6. 2. 2010, 15:43:06
hladis:
to je divné. Mě to samé funguje už řadu let. www.plavec.borec.cz/captcha.php |
||
hladis Profil |
#9 · Zasláno: 6. 2. 2010, 15:51:11
SwimX:
Tady mi to vyhazuje nějakou chybku. Zkontroluj prosím, jestli si mi napsal vše dobře. |
||
SwimX Profil |
#10 · Zasláno: 6. 2. 2010, 15:54:01
hladis:
„nějakou chybku“ jakou? Žádnou nevidím. Zkopíroval jsem to, mělo by to být dobře. Co ti to píše? |
||
hladis Profil |
#11 · Zasláno: 6. 2. 2010, 15:55:33
SwimX:
Obrázek “http://fasteml.tym.cz/captcha.php” nelze zobrazit, protože obsahuje chyby. |
||
SwimX Profil |
#12 · Zasláno: 6. 2. 2010, 16:00:38
hladis:
je důležité aby v souboru captcha.php nebyl žádný bílý znak. Tedy první řádka začínala <?php a žádná mezera nic před tím. Ale to zřejmě máš, jinak by to hodilo error že nejdou měnit headers. Co je na hostingu za verzi php? Opravdu nevím čím to může být :( Zkus na začátek captchy dát ERROR_REPORTING(E_ALL);
|
||
hladis Profil |
#13 · Zasláno: 6. 2. 2010, 16:04:39 · Upravil/a: hladis
SwimX:
Pořád to stejné... Když si se mnou strávil tolik času, pomohl bys mi vložit antispam z této stránky - www.zubrag.com/scripts/antispam-image-generator.php]www.zubrag.com/scripts/antispam-image-generator.php ? Jenom co kam vložit, aby mi to fungovalo. |
||
SwimX Profil |
#14 · Zasláno: 6. 2. 2010, 16:11:07 · Upravil/a: SwimX
hladis:
je to to samé co to moje. Tak schválně. php soubor: <?php @session_start(); // start session if not started yet $komu = $_POST['komu']; $predmet = $_POST['predmet']; $email = $_POST['email']; $text = $_POST['text']; if ($_SESSION['AntiSpamImage'] == $_POST['anti_spam_code']){ $_SESSION['AntiSpamImage'] = rand(1,9999999); if ($predmet != "") { if ($text != "") { if ($email != "") { if (ereg("^.+@.+\\..+$", $komu)){ if (mail($komu, $predmet, $text, 'From: ' . $email)){ echo("Email byl úspěšně odeslán"); } else { echo("Email se nepodařilo odeslat"); } } else { echo("Adresa příjemce není platnou emailovou adresou"); } } else { echo("Adresa odesílatele není platnou emailovou adresou"); } } else { echo("Nenapsal jsi žádný text"); } }else { echo("Nenapsal jsi žádný předmět"); } }else{ $_SESSION['AntiSpamImage'] = rand(1,9999999); echo("Špatně opsáno"); } ?> Mělo by to jít? |
||
hladis Profil |
#15 · Zasláno: 6. 2. 2010, 16:17:29 · Upravil/a: hladis
SwimX:
Mělo. Ale nejde. Když zobrazím ten soubor antispam.php tak mi to píše Cannot render TTF text.. Jo a nahrál jsem tam i písmo Arial z Windowsu. |
||
hladis Profil |
#16 · Zasláno: 6. 2. 2010, 18:48:22
To nikdo neví?
|
||
Časová prodleva: 15 let
|
0