petiba Posted February 18, 2008 Posted February 18, 2008 Sziasztok törzstagok! Olvasgattam ebben a topikban és örömmel láttam, hogy nagyon türelmesek vagytok és segítőkészek. Remélem, hogy az én problémámra is tudtok segítséggel szolgálni. Szokásos levélküldő mailform php üzemel az oldalamon - kifogástalanul (freeweb). De elárasztanak a spam-ok! Szeretnék beilleszteni egy végleges, küldés előtti, ellenőrző kódos "véletlengenerátort" (számsor, vagy karaktersor - mindegy), amit számtalan más (vendégkönyvekben etc...) helyen is látok használni. Sajnos nem találtam eddig. A segítségeteket szeretném kérni ebben. Köszönettel: petibá
payskin Posted February 18, 2008 Posted February 18, 2008 Nem kell számsor, az bonyolult, a PHP grafikai részéhez kell nyúlni. Egészítsd ki az űrlapot egy plusz kérdéssel, ami kérdezze még két 1 és 10 között levő szám összegét. A számokat magyarul, szöveggel irasd ki. Tedd bele az űrlap elejébe, rejtett mezőbe a végeredmény "elkódolt" változatát (például add hozzá mindig ugyanazt a számot, amit persze csak te tudsz, alakítsd át hexadecimálisra ilyesmi). A lényeg, hogy ne legyen az űrlap forrásából felismerhető, hogy a két dolognak köze van egymáshoz. Nálunk, a PC World Shopjában, ez egy csapásra megoldott a spameket. A botok általában nem tudnak magyarul.
petiba Posted February 19, 2008 Posted February 19, 2008 Kedves Balázs! Köszönöm a választ. A logikáját teljesen megértettem, viszont a szintaktikát illetõleg...hm... bajban leszek.... Nem "0" a php tudásom, de ettõl függetlenül megbuknék. Esetleg, ha lenne idõd leírni a kódolását...talán meg tudnám valahogy köszönni. Olyanra is ki kellene térni, hogy a user által beírt hamis adat esetén kapjon valamilyen hibaüzenetet, de az addig írottai ne vesszenek el. Ha tudsz segíteni, akkor akár leírom az egész ûrlap kódját is, ha szükséges! Köszönettel: petibá
petiba Posted February 20, 2008 Posted February 20, 2008 Kedves Balázs! Talán jól is jött, hogy nem tudtál válaszolni, mert addig próbálkoztam egyedül megoldani a kódolási részt, ami - úgy érzem - sikerült! Az ötletedet felhasználva a következõképp okoskodtam: - Beépítettem egy plusz inputot, ahol az általad javasolt kis összeadásra kell válaszolni (a számokat egy gif-képrõl lehet leolvasni, tehát "nyomtalan") és a mezõbe az eredményt kérem, de nem számmal, hanem betûvel beírva. - Ezután az eredményt két karakterre(jellemzõ) ellenõriztetem. Hasonlóan, mint amikor az email-mezõ "@" és "." karaktereinek meglétét is ellenõrizzük. Nos, kipróbáltam és mûködik!!! Bár a freewebre még nem jöttek meg a levelek, de a késés sajnos ennél a szolgáltatónál nem rendkívüli, viszont egy másik webhelyen szépen "dolgozik". Remélem a spamek elkerülnek a jövõben. Újfent megköszönöm a segítségedet! "Halat is adtál, s egy kicsit ezáltal horgászni is tanultam" Bár azért ettõl még simán éhenhalnék "php-országban"! Üdvözlettel: petibá
Kiskalóz Posted February 21, 2008 Posted February 21, 2008 Egyébként sok ingyenes, és könyen hgasználható chapcha-t találni a neten ha rákeresel.
petiba Posted February 21, 2008 Posted February 21, 2008 Köszi. Rákerestem, de rengeteg a "propán-bhután" a találatok között. Amit találtam eleddig az pedig egy külön programmal kezelhetõ csak, ami 300 Megát kérne a gépemtõl és gyalkorlatilag fogalmam sincs, hogyha telepíteném is mit kezdjek vele? --------------------- Ma csak 1 spam jött be (eddig), tehát amit tegnap megoldásnak hittem, az mára érvénytelen. Ezzel a megoldással dolgozom: <?php $cimzett = "magam@freeweb.hu"; if (isset($fanev)) { $hiba = ""; $fanev = chop ($fanev); $faemail = chop ($faemail); $uzenet = chop ($uzenet); $ellen = chop ($ellen); . . . . . . 4+5=? --> eredményt kérek BETÛVEL egy input(text) mezõbe, (a mûvelet egy gif-képen látható) majd küldés elõtt ellenõrzések: ... ... ... if (!strstr($ellen, "k") || !strstr($ellen, "c")) $hiba .= " Kódmezõ hiba!"; //...a kilenc két karakterére kérdezek rá...(a kitöltetlen mezõ is blokkolva van, tehát üresen sem jöhet el az ûrlap) No, ezt az ellenõrzési kódolást kellene szerintem láthatatlanná tenni és akkor megoldódna a dolog. Viszont én ehhez kevés vagyok...Ha estleg...hm....valaki...segítene.
Kiskalóz Posted February 21, 2008 Posted February 21, 2008 Pedig elég sok van. Csak keresni kell tudni. Link (bár én is hibásan írtam ide) ------------------------ Láthatatlanná?? Azt hogy érted? PHP kódot nem lehet megnézni forrásban.
petiba Posted February 21, 2008 Posted February 21, 2008 Láthatatlanná?? Azt hogy érted? PHP kódot nem lehet megnézni forrásban. Eddig én is így tudtam, de azóta már újabb két spam beszivárgott, tehát valahogy "kifundálja valami", hogy - az egyébként 6 karakterre korlátozott - input mezõben szerepelnie kell a "k" és "c" karaktereknek! Ezek szerint próbálgat?
similabda Posted February 21, 2008 Posted February 21, 2008 (edited) Kedves Mezõfi István! <?php if(isset($_POST["nev"])){ if( trim($_POST["nev"]) !=="" AND trim($_POST["posta"]) !=="" AND trim($_POST["email"]) !==""){ //Írd be az email-címedet: $mymail = "freewebsablon@cjb.hu"; /* HTML levél küldése a Content-type fejléc megadásával */ $targy = "Értesítés"; $fejlec = "MIME-Version: 1.0\n"; $fejlec .= "Content-type: text/html; charset=iso-8859-2\n"; /* további fejlécek Itt beállithatod mit írjon feladónak */ $fejlec .= "From: ".trim($_POST["nev"])."<".trim($_POST["email"]).">\n"; /* üzenet */ $uzenet= '<HTML><HEAD><TITLE>Üzenet</TITLE> <STYLE type=text/css> body { font-family: Arial, Verdana, Tahoma; font-size: 13px; text-align: justify; margin-left: 20px; padding: 10px 0 10px 0; .center{ vertical-align:top; } } </STYLE> <META http-equiv=Content-Type content="text/html; charset=iso-8859-2"> <META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD> <BODY>'; //Az üzenet tartalma //Megszólítás $uzenet.="Hali!<br/><br/>"; $uzenet.="Oldaladról a következõ email érkezett.<br/>Szöveg: ".trim($_POST["szöveg"]); $uzenet.="<br/>Küdte: ".trim($_POST["nev"])."<br/>"; $uzenet.="<br/>Posta címe :".trim($_POST["posta"]); $uzenet.="<br/>Email címe :".trim($_POST["email"]); $uzenet.="</BODY></HTML>"; if(@mail($mymail,$targy,$uzenet,$fejlec)) { $uzenet="A levél sikeresen elment."; } else { $hiba="Szerver hiba! A levelet nem sikerült elküldeni!"; } }else{ $hiba="Sajnos valamely mezõ üresen maradt!"; } } ?> <!-- ****************************************** * A php és mysql scripteket írta: * * Mezõfi István * * [url=http://www.mezofi.com/segedletek.htm]http://www.mezofi.com/segedletek.htm[/url] * ****************************************** --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" /> <script type="text/javascript" language="javascript"> function checkmail(hol) { if(hol.nev.value ==""){ alert('Üres a név mezõ'); hol.nev.focus(); return false; } if(hol.posta.value ==""){ alert('Üres a posta mezõ'); hol.posta.focus(); return false; } var re_mail=/^([a-zA-Z0-9_\.\-])+@([a-zA-Z0-9_\-\.])+(\.[a-zA-Z]{2,4})$/; var mailfield = document.getElementsByName("email"); if(!re_mail.test(mailfield[0].value)) { alert('Nem megfelelõ az e-mail cím, vagy üresen hagytad a beviteli mezõt! !'); hol.email.focus(); return false; } } </script> </head> <body> <?php if(!isset($_POST["nev"]) || isset($hiba)){ if(isset($hiba)){ echo $hiba; } ?> <form action="index.php" method="post" name="mailer" onsubmit="return checkmail(this);"><br/> <fieldset><label accesskey="n" for="id_nev"><strong>Ide írja a nevét:</strong><br/> <input id="nev" type="text" name="nev" value="<?php echo $_POST["nev"]; ?>" /><br /><br/> </label><label accesskey="f" for="posta"><strong>Postacím:</strong><br /><br/> <input id="posta" type="text" name="posta" value="<?php echo $_POST["posta"]; ?>"/><br /><br /> </label><label accesskey="e" for="id_email"><strong>Ide írja az e-mail címét:</strong>;<br/> <input id="email" type="text" name="email"value="<?php echo $_POST["email"]; ?>" /><br /> </label><label accesskey="u" for="id_uzi"><strong>Ide írja az esetleges üzenetét:</strong><br/> <textarea id="uzi" name="uzi" rows="5" cols="20" /><?php echo $_POST["uzi"]; ?></textarea><br /></label><br /> <input type="submit" name="rendeles" value="Üzenet küldése" accesskey="s" /><br/> </fieldset> </form> <?php }else{ print($uzenet); } ?> </body></html> Ezt a kódot tettem bele egy üres lapba. A lapot átneveztem index.php-nek, feltettem az oldalra. Nagyszerûen mûködik, csupán a szöveg mezõ üresen marad. Mi lehet az oka? Mit csinálok rosszul? Elõre köszönöm a válasz. Péter Edited February 21, 2008 by h.arpad
petiba Posted February 21, 2008 Posted February 21, 2008 Uhhhh...most néztem csak meg, hogy a spam-ek nem a php-mailformon jöttek be.....oooops....hanem a "szokásos nyilvánosság ürügyén"...Hááát ez a szokás hatalma, sajnos ---> a kéretleneket szerintem mindannyian olvasatlanul töröljük - mentségemre. Akkor még van remény..... :) ...kitartok... Azért köszönöm a chaptcha ügyet! Lehet, hogy majd mégis felhasználom.
Mycronet Posted October 10, 2008 Posted October 10, 2008 Befecskendezéses Támadás Megakadályozása! A legjobb módja az e-mail-befecskendezéses támadás megálításának a bevitt adatok ellenõrzésére. Az alábbi kóddal ellenõrizzük az e-mail mezõt. <html> <!-- Created on: 2008.10.10. --> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> <title>proba</title> <meta name="description" content=""> <meta name="keywords" content=""> <meta name="author" content="Unregistered User"> <meta name="generator" content=""> </head> <body> <?php function spamcheck($field) { return eregi("to:",$field) || eregi("cc:",$field); } if (isset($_REQUEST['email'])) { $mailcheck = spamcheck($_REQUEST['email']); if ($mailcheck==TRUE) { echo "Invalid input"; } else { $email = $_REQUEST['email']; $subject = $_REQUEST['subject']; $message = $_REQUEST['message']; mail("mycronet@freemail.hu", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } } else { echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subject: <input name='subject' type='text' /><br /> Message:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; } ?> <form action="" method="post"> Küldõ Neve: <input type="text" name="name" value="<?php print $_POST['name']; ?>"><br/> <p> Küldõ Email címe: <input type="text" name="email" value="<?php print $_POST['email']; ?>"><br/> <p> Üzenet Targya: <input type="text" name="subject" value="<?php print $_POST['subject']; ?>"><br/> <p> Milyen ügyben érdeklõdne:<br/> <textarea name="message" cols="40" rows="5"><?php print $_POST['message']; ?></textarea><br/> <input type="submit" value="küldés"><br/> <input type="hidden" name="mail"> </form> </body> </html>
h.arpad Posted October 10, 2008 Posted October 10, 2008 Hát, ha jól látom a script feltételezi, hogy mindenki/minden, aki/ami csalni akar a form-mal "cc:"-t vagy "to:"-t (vagy ennek tetszőleges kis/nagybetűs változatait) írja be saját, valódi e-mail címe helyére. Mondjuk, hogy ezeket kiszűrjük. De akkor is lehet még egy rakás érvénytelen e-mail címet írni a formba. De nézd csak, mit találtam! <?php if (! filter_var ( $field, FILTER_VALIDATE_EMAIL ) ) { print "E-mail is not valid"; } else { print "E-mail is valid"; } ?> http://www.w3schools.com/php/php_ref_filter.asp http://www.charles-reace.com/blog/2008/07/...validate_email/
Kiskalóz Posted October 13, 2008 Posted October 13, 2008 Annyira nem tökéletes. nev@akarmi.g -t már helyes címnek írja. Pedig valóban nem helyes. Jobbak a JS-es scriptek.
cibi21 Posted January 19, 2009 Posted January 19, 2009 (edited) Sziasztok.. Ez a php file tokeletesen mukodik.. Viszont szeretnem lementeni az adatokat egy txt fileba... uw.hu tarra ftp-re Valami ilyesmi lenne szerintem A tárolás: session_start(); $_SESSION['valami']=$_POST['valami'], és a kiírás: <input ..... value="<?=(isset($_SESSION['valami'])?$_SESSION['valami']:"";?>"> Itt a php <!-- ****************** űrlap innen ******************** --> <form name="mailform" action="mailto:dolgozz_otthon@extra.hu?subject=jelentkezés" method="post" enctype="text/plain"> <!-- ** készült a ThomasWebműhely űrlap varázslójával ** --> <!-- **** [url=http://mitglied.lycos.de/thomaswebmuhely/]http://mitglied.lycos.de/thomaswebmuhely/[/url] **** --> <input name="targy" value="Jelentkező" type="hidden"> <table align="center" bgcolor="#fffacd" border="4" bordercolor="#ff0000" width="400"> <caption><b></b></caption> <tbody> <tr> <td> név: </td> <td> <input name="nev" size="20" value="Neve" type="text"></td> </tr> <tr> <td> email: </td> <td> <input name="email" size="20" value="E-mail címe" type="text"></td> </tr> <tr> <td> szöveg: </td> <td><textarea name="szoveg" rows="5" cols="20">Részletes tájékoztatást szeretnék </textarea></td> </tr> <tr> <td> </td> <td> <input value="elküld" type="submit"><input value="töröl" type="reset"></td> </tr> </tbody> </table> </form> <!-- ******************* űrlap eddig ******************* --> Edited January 19, 2009 by cibi21
zauber Posted November 17, 2010 Posted November 17, 2010 Egy kis segítséget szeretnék kérni: ezt készítettem! És ez a gondom vele! Nagyon nem tetszenek ezek a hieogrifák! Légyszi nézzétek meg mit ronthattam el. Esetleg a kódolásban nem stimmel valami? <?php if(isset($_POST['mail'])){ if($_POST['name'] && $_POST['email'] && $_POST['targy'] && $_POST['message']!=""){ $name=trim($_POST['name']); $email=trim($_POST['email']); $telo=trim($_POST['targy']); $message=trim($_POST['message']); $sajatmail="tervezes@vipmail.hu"; //ide irod a saját címed ahova kéred a levelet $header = 'MIME-Version: 1.0' . "\r\n"; $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $header .= 'FROM: Tõlem <tervezes@vipmail.hu>' . "\r\n"; $uzenet = "Ezeket az adatokat küldték a weboldalon keresztül:<br><br>"; $uzenet .= "$name<br>$email<br>$telo<br>$message<br>"; mail($sajatmail, 'Visszaigazolás!',str_replace("\\\"","\"",$uzenet),$header); echo"<script language=\"JavaScript\">alert('Üzenetet elküldtük!'); </SCRIPT>"; }else { //ha valamelyik mezõt nem töltötte ki echo"<script language=\"JavaScript\"> alert('Minden mezõ kitöltése kötelezõ!'); </SCRIPT>"; } } ?><style type="text/css"> <!-- body { background-color: #000; } --> </style> <form action="" method="post"> <div align="center"> <table border="0" style="font-family:Verdana,sans-serif; font-size:8pt;"> <tr valign="top"> <td height="22"><strong><font color="white">Neved:</font></strong></td> <td height="22"><input name="name" type="text" id="name" style="color:white; background-color:black;" onchange="msg(this.form)" value="<?php print $_POST['name']; ?>" size="42" /></td> </tr> <tr valign="top"> <td height="16"><strong><font color="white">Email címed:</font></strong></td> <td height="16"><input name="email" type="text" id="email" style="color:white; background-color:black;" onchange="msg(this.form)" value="<?php print $_POST['email']; ?>" size="42" /></td> </tr> <tr valign="top"> <td height="13"><font color="white"><strong>Tárgy:</strong></font></td> <td height="13"><input name="targy" type="text" id="targy" style="color:white; background-color:black;" onchange="msg(this.form)" value="<?php print $_POST['targy']; ?>" size="42" /></td> </tr> <tr valign="top"> <td><strong><font color="white">Megjegyzés:</font> </strong> <p><font color="white"> </font></p></td> <td><textarea name="message" cols="32" rows="2" wrap="virtual" onchange="msg(this.form)" style="color:white; background-color:black;" id="message"><?php print $_POST['message']; ?></textarea></td> </tr> <tr> <td><p align="center"> </p></td> <td><input name="submit" type="submit" style="color:rgb(255,153,0); background-color:#000000; background-image:url('index_files/alja01.gif');" value="Üzenet elküldése" /> <input name="reset" type="reset" style="color:rgb(255,153,0); background-color:#000000; background-image:url('index_files/alja01.gif');" value="Töröl" /></td> </tr> </table> </div> <input type="hidden" name="mail"> </form> <p> </p>
payskin Posted November 17, 2010 Posted November 17, 2010 Sok a baj. 1. A PHP oldalad teljesen szabálytalan weboldalt hoz létre. Nincs DTD, nincs , nincs stb, ennél fogva karakterkódolás sincs definiálva. Az első feladat tehát az volna, hogy ezt kijavítsd. Figyelj arra, hogy maga a PHP állomány, amit szerkesztesz ugyanolyan kódolású legyen, mint amit majd beállítasz a -ben, ez nyilván attól is függ, mivel szerkeszted ezt a PHP állományt. 2. A <script> tagnek nincs language attribútuma. (Ezt, azt hiszem, még nem mondtam senkinek. ) 3. Ha a <script> kisbetűvel íródott, vajon miért íródik naggyal a ? 4. Miért kell \" jelekkel küzdeni, amikor a PHP-ban van sima és dupla idézőjel is? 5. A kód teljesen olvashatatlan. A kódblokkok elkülönítése, tagolása, beljebb rakása (például az if-en és else-en belül) elég fontos volna. 6. Ezekre miért van szükség? <input type="hidden" name="mail"> <p> </p> 7. A weboldalak készítésénél egyetlen egy dologra használunk táblázatot: a táblázatokhoz! Ez pedig nem az! Óvatosan kérdezem, hogy nem esel-e véletlenül abba a hibába, hogy még a HTML-t sem tanultad meg rendesen, de már webprogramozással foglalkozol? Két-három dolgot félig tudni nem biztos, hogy jobb, mint egy dolgot rendesen. Hm?
zauber Posted November 17, 2010 Posted November 17, 2010 a <script> tagnek nincs language attribútuma Bocss! Igen olvastam, hogy már az aláírásodba is ki akartad rakni! Köszönöm az észrevételezést! Igyekszem javítani az olvasottak alapján! Ami a táblázatot illeti a könnyebb pozicionálásra szoktam csak használni, persze lehet, hogy van más megoldás is erre Még 1 kérdés: Ha egy file-ba /mail.php/ pakolok be mindent akkor a html rész és a php rész egymáshoz való viszonya hogy alakul? Elõl a html rész majd azt követõen a php vagy? Ha két különbözõ file-om lenne akkor egyértelmû, mert van egy html rész amiben /form action="mail.php"/meghívom a teljesen különálló php-t. /legalább is gondolom/
payskin Posted November 17, 2010 Posted November 17, 2010 Kicsit átfogalmaztam, mert helyenként bántónak találtam, és nem akartam így hagyni. Elnézést. persze lehet, hogy van más megoldás is erre Persze, hogy van. A weboldalkészítő suli a 18-as részétől foglalkozik egy szép nagy form elkészítésével teljesen táblázatmentesen. A tiédet 15 perc alatt össze lehetne rakni egy sima ul-li listába, szabályosan, tagekkel, utána már csak egy kis CSS-t kell hozzákeverni és kész is vagy.
zauber Posted November 17, 2010 Posted November 17, 2010 Nem értek a PHP-hez /még eddig/, ezt tervem van pótolni! A levélküldõt ez a rész "ihlette" Sajna a benne levõ hibákkal együtt is mint kiderült! A kódokat Dreamveawer programban nézem, szerkesztem. /mivel elsõdlegesen grafikus vagyok/ innen van ez a nagy grafikai ragaszkodás! De ha van javaslatod jobb kódszerkesztõre, ahol az if-en és else-en belüli blokkcsúszásokat jobban észrevenni azt szívesen veszem! weboldalkészítõ suli a 18-as részétõ Konkrétan melyikre gondoltál? Esetleg van egy linked hozzá?
kléni Posted November 17, 2010 Posted November 17, 2010 Weboldalkészítõ suli Érdemesebb lenne elõbb megtanulni a nyelvet, mint nézni a kódot. Ha nagyon kell most az email küldõ, inkább keress a neten valamit, és amikor már tudod a nyelvet, írsz sajátot.
zauber Posted November 18, 2010 Posted November 18, 2010 Köszi a tippet! @Spányik Balázs Köszönöm a segítséged! ...javítottam a kódon a tanácsod szerint, most mûködik tökéletesen! Ami a pozicionálást /hiányosságokat/ illeti utána nézek és javítom azt is!
payskin Posted November 18, 2010 Posted November 18, 2010 Az -okban levő onchange="msg(this.form)" attribútumot ki kéne venni. Egyrészt azért, mert 2010-ben nem használunk HTML-be ágyazott JS-et, másrészt azért, mert nincs az oldalon msg() függvényt megvalósító JS, ezért abban a pillanatban, ahogy begépelsz valamit a mezőkbe, JS-errort dob az oldal. Arra is figyelj, hogy a DTD előtt kiment a HTML forrásba 4-5 üres sor. Lehet, hogy most nem okoz problémát, de más esetben okozhat, sőt, akár a karakterkódolást is elronthatja, mert ilyenkor a PHP azonnal leküldi a HTML headert, így gyakorlatilag a ... közé eső rész figyelembevétele a böngésző jóindulatán múlik.
zauber Posted November 19, 2010 Posted November 19, 2010 A javasolt változtatást elkészítettem! Igyekeztem a pozicionáláson is egy kicsit csiszolni: itt Sajna ebbe is becsúszott egy táblázat. Mivel a már kész ûrlapot másképpen nem tudtam középre tájolni. /a buttonok-ról nem is beszélve/ Arra is figyelj, hogy a DTD elõtt kiment a HTML forrásba 4-5 üres sor. Nagyrészben <br> mivel a levelezõmbe formailag így érkezik a levél/nem ömlesztve egy sorba hanem sortöréssel/: Ezeket az adatokat küldték a weboldalon keresztül: Próba Péter nemtudom@holvan.hu szenespitli Nem tudom, hogy hol van a szenespitli! A többi üres sor a PHP kód elemei, ami nem tudom mi miatt lehetnek, talán rossz helyen van a kódrészlet, vagy épp egy " megfelelõ karakter hiányzik a megfelelõ helyrõl!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now