Hogyan lehet egy e-mail küldést vissza küldeni a dolgot ha valami nem jó? (lejebb is van)
Van egy E-mail küldőm. kiírja a hibát ha valami nem jó de tovább engedi az e-mailt tehát rosszul töltöm ki a dolgokat a Javascrpt kiírja a hibát de az e-mail tovább megy...
ezt hogyan lehetne megszüntetni? hogy ne menjen tovább az e-mail hiba esetén
hiba van...
hiba = true;
if hiba==true
nem küld
else
küld
Szerintem az nem Javascript :p.. mivel PHP ban van megoldva szerintem...
És az előttem levő megírta,ha tudod értelmezni akkor könnyen megy.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript" language="javascript">
function ellenoriz(){
var send = true
var message = document.ell.message.value;
var subject = document.ell.subject.value.length;
var name = document.ell.name.value.length;
var mail = document.ell.mail.value.length;
var kukac = document.ell.mail.value.indexOf('@'); var kukac_elött = document.ell.mail.value.substr(0,kukac);
var kukac_utan = document.ell.mail.value.substr(kukac,pont);
var pont = document.ell.mail.value.indexOf('.');
if(name<4){
alert("A neved túl rövid!");
send = false;
}
if(name>15){
alert("A neved túl hosszú!");
send = false
}
if(mail<6){
alert("Az E-mail címed túl rövid!");
send = false
}
if(mail>27){
alert("Az E-mail címed túl hosszú!");
send = false
}
if(kukac_elött.length<5){
alert("az E-mail ben a kukac elött túl kevés karakter van!");
send = false
}
if(kukac_elött.length>20){
alert("az E-mail ben a kukac elött túl sok karakter van!");
send = false
}
if(subject==0){
alert('Nem adtál meg tárgyat!');
send = false
}
if(message=="Ide ird az üzeneted..."){
alert('Nen írtál üzenetet!!');
send = false
}
if(send){
alert("Az üzenetet sikeresen elküldtük")
}else{
ÉS AKKOR IDE MIT íRJAK??
}
}
</script>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<table style="margin-left: 200px;" border="0">
<tbody>
<tr>
<form method="post" action="e-mail.php" name="ell"></form>
</tr>
<tr>
<td>Neved:</td>
<td> <input name="name" type="text" width="auto"></td>
</tr>
<tr>
<td>E-mail címed: </td>
<td><input name="mail" type="text" width="auto"></td>
</tr>
<tr>
<td>Tárgy: </td>
<td><input name="subject" type="text" width="500"></td>
</tr>
<tr>
<td>Üzeneted: </td>
<td><textarea name="message" rows="10" cols="55" color="grey">Ide ird az üzeneted...</textarea>
</td>
</tr>
<tr>
<td><input value="Küldés" onclick="ellenoriz()" type="button"></td>
<td><input value="Visszaállít" type="reset"></td>
</tr>
</tbody>
</table>
amúgy ahogy mondod php-ban tudnál kódot is írni??
<?
$name = $_POST["name"];
$message = $_POST["message"];
$subject = $_POST["subject"];
$from = $_POST["mail"];
mail("valami@gmail.com", "$subject" , " $from, $name ,$message ", "from: $from");
?>
A formot még az űrlapelemek előtt lezárod, így az inputok nem képezik annak részét.
Ez így nem jó:
<form method="post" action="e-mail.php" name="ell"></form>
A zárótaget a form végére tedd!
Csak átfutottam a kódot, és ezt is így kéne:
<form method="post" action="e-mail.php" name="ell"onsubmit="return ellenoriz()">
Ha nem hívod meg az ellenőriz föggvényt akkor persze, hogy nem ellenőriz semmit.
Amit eddig csináltál szinte semmit nem ér, ha az adatokat nem ellenőrzöd szerveroldalon is.
Ez csak annyira jó, hogy bekapcsolt javascript esetén, hibás űrlapkitöltéskor nem küldi el az adatokat a szervernek, tehát csak a fölösleges kommunikációt kerülöd vele el.
Ebből következik, ugyanezt az ellenőrzést végig kell játszani PHP-vel is.
Még egyszer végigfutottam a kódodat, és én még ezeket javítanám.
ezt
<input value="Küldés" onclick="ellenoriz()" type="button">
erre
<input value="Küldés" type="submit">
mert az adatokat valahogy el is kell küldeni.
Ha már a formnál ott az onsubmit, akkor itt nem kell az onclick
A mail függvényed sem jó, mivel a változók is stringként vannak benne:
Inkább így próbáld meg!
mail("valami@gmail.com", $subject, $from."\n".$name."\n" ,$message ", "from: ".$from);
Így legalább kicsit tagolt is lesz az üzenet.
Bocsi. A mailben még mindig maradt egy hiba:
Remélem ez már jó:
mail("valami@gmail.com", $subject, $from."\n".$name."\n" ,$message, "from: ".$from);
A küldés gombnak még adnék egy nevet, hogy ellenőrizni tudd php-vel akár azt is, hogy ráklikkeltek-e vagy sem.
Én annyit tennék még hozzá, hogy a formod akkor is elposztol, ha hibát talál, mivel nincs return false. Ha onclickre meghívsz valamit, akkor a fv hívás után a default eseménykezelő fut le, ami ugye form gombja esetében elküldi a formot. Te ezt hiba esetén nem akarod, tehát egy return false-al mondod meg a gombnak, hogy a js fv-ed után ne fusson le a postolás, tehát oda, ahol azt írod, hogy ide mit írjak kell egy return false;
De az nem az igazi, hogy alertet raksz ki, hogy sikerült a küldés, inkább az kéne, hogy az if(send) ... helyett return send, és ha php-ben is ellenőriztél és elküldöd a levelet irányítsd át egy olyan oldalra, ahol kiírod, hogy sikerült elküldeni az üzenetet.
kicsit változtattam is:
<script type="text/javascript" language="javascript">
function ellenoriz(){
var send = true;
var message = document.ell.message.value;
var subject = document.ell.subject.value.length;
var name = document.ell.name.value.length;
var mail = document.ell.mail.value.length;
var kukac = document.ell.mail.value.indexOf('@');
var kukac_elött = document.ell.mail.value.substr(0,kukac);
var kukac_utan = document.ell.mail.value.substr(kukac,pont);
var pont = document.ell.mail.value.indexOf('.');
if(name<4){
document.getElementById('error').innerHTML=' A neved túl rövid!';
send = false;
}
if(name>15){
document.getElementById('error').innerHTML=' A neved túl hosszú!';
send = false
}
if(mail<6){
document.getElementById('error').innerHTML=' Az e-mail címed túl rövid!';
send = false
}
if(mail>30){
document.getElementById('error').innerHTML=' Az e-mail címed túl hosszú!';
send = false
}
if(kukac_elött.length<5){
document.getElementById('error').innerHTML=' Az e-mail címed helytelen!';
send = false
}
if(kukac_elött.length>20){
document.getElementById('error').innerHTML=' Az e-mail címed helytelen!';
send = false
}
if(subject==0){
document.getElementById('error').innerHTML=' Nem adtál tárgyat a levélnek!';
send = false
}
if(message=="Ide ird az üzeneted..."){
document.getElementById('error').innerHTML=' Nem írtál üzenetet';
send = false
}
if(message.length<5){
document.getElementById('error').innerHTML=' Az üzeneted túl rövid <i>(minimum 5 karakter)</i>';
send = false
}
if(message.length>300){
document.getElementById('error').innerHTML=' Az üzeneted túl hosszú';
send = false
}
if(send){
document.getElementById('ok').innerHTML=' küldöm az üzenetet';
document.getElementById('error').innerHTML='';
}else{
return ellenoriz();
document.getElementById('ok').innerHTML='';
}
}
</script>
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!