Kitöltetlen e-mail formot ne küldje el, hogyan?

Kitöltetlen e-mail formot ne küldje el, hogyan?
2009-10-07T20:58:43+02:00
2009-10-08T18:42:21+02:00
2022-11-15T06:30:35+01:00
B.Laci
Sziasztok,

Egy újabb kérdésem lenne, van egy kis 3 mezőt tartalmazó e-mail form. Az adatok ellenőrzését egy prototype.js végzi el. De van egy kis probléma. Ha nem írok semmit egyik mezőbe sem az elküld gomb megnyomására igaz, hogy megjeleníti a figyelmeztető üzenetet. Azonban elküldi üresen az emailt, a beállított email címre.
Hogyan lehet megoldani, hogy ha semmit nem ír be a felhasználó azzal együtt, hogy kiírja a hiba üzeneteket, ne küldje el az üres formot?

Köszönettel

B.Lacko

A források:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Title</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" /> <meta name="keywords" content="" /> <meta name="description" content="" /> <meta name="verify-v1" content="CSD1GZYEC3vOZ0kPJdNSw1AeIXrYReVD3Qr1g9rcPQo=" /> <script src="scriptaculous/lib/prototype.js" type="text/javascript"></script> <script src="scriptaculous/src/effects.js" type="text/javascript"></script> <script type="text/javascript" src="fabtabulous.js"></script> <script type="text/javascript" src="validation.js"></script> <link rel="stylesheet" type="text/css" href="stylus.css" /> <link rel="stylesheet" href="images/mm_training.css" type="text/css" /> <style type="text/css"> </style> </head> <body bgcolor="#64748b"> <table align="center" border="0" cellpadding="0" cellspacing="0" width="95%"> <tbody> <tr> <td class="style13"> <p class="style1" align="left"> <center><h2><font color="#FF5B0D">Itt tudsz kapcsolatba l&eacute;pni velem!</font></h2></center> </p> </td> </tr> <tr> <td> <div id="container"> <form style="margin-left: 60px;" id="test" action="kapcsolat.php" method="post"> <h3><font color="#FF5B0D">Küldj üzenetet nekem!</font></h3> <div class="form-row"> <div class="field-label"><label for="field1">N&eacute;v</label>:</div> <div class="field-widget"><input name="field1" id="field1" class="required" title="&Iacute;rd be a neved"></div> </div> <div class="form-row"> <div class="field-label"><label for="field22">E-mail</label>:</div> <div class="field-widget"><input name="field22" id="field22" class="required validate-email" title="Add meg az e-mail c&iacute;med"></div> </div> <div class="form-row"> <div class="field-label"><label for="field5">&Uuml;zeneted</label>:</div> <div class="field-label"> <textarea name="field5" rows="7" cols="27" class="required" title="&Iacute;rd ide az &uuml;zeneted"></textarea></div> </div> <br> <br> <div style="margin-left: 70px;"><input name="submitForm" value="Elk&uuml;ld&ouml;m" type="submit"></div> </form> <?php $tart = ''; foreach($_POST as $param => $ertek) $tart .= $param . ' --> ' . $ertek . "\n"; $targy = "levél tárgya"; $fejlec = "MIME-Version: 1.0\n"; $fejlec .= "From: Weblap\n"; mail("email@gmail.com",$targy,$tart,$fejlec); ?> <br> <script type="text/javascript"> function formCallback(result, form) { window.status = "valiation callback for form '" + form.id + "': result = " + result; } var valid = new Validation('test', {immediate : true, onFormValidate : formCallback}); </script> </div> <br /> </tbody> </table> </body> </html>
Mutasd a teljes hozzászólást!
Ha megnézed a forrást, amit küldött:
azzal az erővel, ahogy kiteszi a formot, összegyűjti a $_POST elemeit, és elküldi levélben. És még nem is submitolt semmit sem.
Mutasd a teljes hozzászólást!

  • Szia!!

    Próbáld meg ezt a sort berakni a mail függvényed elé:


    if( !empty(trim($_POST['field1']))&&!empty(trim($_POST['field22']))&&!empty(trim($_POST['field5'])))

    Nem ellenőriztem, de csak akkor fut le a küldés ha minden mező ki van töltve.

    üdv. Karesz
    Mutasd a teljes hozzászólást!
  • mivel minden lapfrissítéskor lefut a mail küldés.

    használd az isset() avagy empty() függvényeket, hogy ellenőrizd elposztolt-e az adott változód.


    if(isset($_POST["mezo1"] , $_POST["mezo2"] , $_POST["mezo3"])) { ide kerül a php mail küldés }
    Mutasd a teljes hozzászólást!
  • Ha még az elküldés előtt akarod ellenőrizni, és szükség esetén megakadályozni a form elküldését, akkor használd a <form> tag onsubmit eseményét. Vagyis akkor a te formod eleje így fog kinézni:

    <form style="margin-left: 60px;" id="test" action="kapcsolat.php" method="post" onsubmit="return validate();">

    Úgy kell megírni a validate(), vagy akármilyen más függvényt javascript-ben, hogy true vagy false értéket adjon vissza. Ha false-t ad vissza, akkor a kliens (a böngésző) nem továbbítja a form adatokat a feldolgozónak.

    Ja igen! A submit típusú gombok esetén is van onsubmit esemény, de én inkább a <form> tagba tenném bele.
    Mutasd a teljes hozzászólást!
  • Ha megnézed a forrást, amit küldött:
    azzal az erővel, ahogy kiteszi a formot, összegyűjti a $_POST elemeit, és elküldi levélben. És még nem is submitolt semmit sem.
    Mutasd a teljes hozzászólást!
  • Szia,

    Akkor ezt egy külön fájlba kellene tenni és a küldésgombra kattintva hívódna meg?


    <?php $tart = ''; foreach($_POST as $param => $ertek) $tart .= $param . ' --> ' . $ertek . "\n"; $targy = "levél tárgya"; $fejlec = "MIME-Version: 1.0\n"; $fejlec .= "From: Weblap\n"; mail("email@gmail.com",$targy,$tart,$fejlec); ?>
    Mutasd a teljes hozzászólást!
  • érdemes a programod elejére tenni, hogy előtte ne legyen még kimenet, ha helyesen kitöltötted a formot, elirányíthassad az oldalt/frissíthesd a lapot.
    <?php if(isset($_POST["submit"])) { // ide kerül a feldolgozó rész } ?>
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd