JavaScript geht nicht!?

Gespenst
Hallo,

mein Überprüfungs JavaScript geht nicht:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
<html><head>
<script language="javascript">
<!--
function setfocus() {
document.form1.email.focus();
}

// --></script>
<script>
function check()
{
var email=document.form1.email.value, betreff=document.form1.betreff.value, text=document.form1.text.value;
var cemail="",cbetreff="",ctext="";

if (email!="")
{
if (document.form1.email.value.indexOf('@',0)==-1 || document.form1.email.value.indexOf('.',0)==-1)
cemail="Die eingegebene E-Mail-Adresse ist nicht gültig!\n";
}
else
var cemail="Bitte geben Sie eine E-Mail-Adresse ein!\n";

if (betreff=="")
var cbetreff="Bitte geben Sie einen Betreff an!\n";

if (text=="")
var ctext="Bitte geben Sie einen Text an!\n";

if (cemail!="" || cbetreff!="" || ctext!="")
{
alert(cemail+cbetreff+ctext)
return false;
}
else
return true;
}
</script>
<title>Kontakt-Formular schreiben</title></head><body>
<table border="1" bordercolor="black"><form name="form1" onSubmit="return check()" action="send.php" method="post">
<tr><td colspan="2"><center><font face="arial" size="3"><b>Kontakt-Formular</b></font></center></td></tr>
<tr><td width="200"><font face="arial" size="2"><b>Vor- und Nachname:</b></font></td><td><input type="text" size="32" maxlength="32" name="Name" value=""></td></tr>
<tr><td width="200"><font face="arial" size="2"><b>E-Mail-Adresse:</b></font></td><td><input type="text" size="32" maxlength="32" name="Email" value=""></td></tr>
<tr><td width="200"><font face="arial" size="2"><b>Anschrift:</b></font></td><td><input type="text" size="32" maxlength="32" name="Anschrift" value=""></td></tr>
<tr><td width="200"><font face="arial" size="2"><b>PZL und Ort:</b></font></td><td><input type="text" size="32" maxlength="32" name="PZLuOrt" value=""></td></tr>
<tr><td width="200"><font face="arial" size="2"><b>Telefonnummer:</b></font></td><td><input type="text" size="32" maxlength="32" name="Tel" value=""></td></tr>
<tr><td width="200"><font face="arial" size="2"><b>Faxnummer:</b></font></td><td><input type="text" size="32" maxlength="32" name="Fax" value=""></td></tr>
<tr><td width="200"><font face="arial" size="2"><b>Betreff:</b></font></td><td><input type="text" size="32" maxlength="32" name="Betreff" value=""></td></tr>
<tr><td colspan="2"><textarea cols="50" rows="12" name="text"></textarea></td></tr><tr><td colspan="2"><center><input type="submit" value="Nachricht absenden">
<input type="reset" VALUE="Alle Angaben löschen"></center></td></tr>
</table></body></html>


Weiss einer was ich da falsch machen?

Danke im Vorraus!! smile

Gespenst
Shr522
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
<html><head>
<script language="javascript">
<!--
function setfocus() {
document.form1.email.focus();
}

// --></script>
<script>
function check()
{
var email=document.form1.email.value, betreff=document.form1.betreff.value, text=document.form1.text.value;
var cemail="",cbetreff="",ctext="";

if (email!="")
{
    if (document.form1.email.value.indexOf('@',0)==-1 || document.form1.email.value.indexOf('.',0)==-1)
    cemail="Die eingegebene E-Mail-Adresse ist nicht gültig!\n";
}
else
    var cemail="Bitte geben Sie eine E-Mail-Adresse ein!\n";

if (betreff=="")
    var cbetreff="Bitte geben Sie einen Betreff an!\n";

if (text=="")
    var ctext="Bitte geben Sie einen Text an!\n";

if (cemail!="" || cbetreff!="" || ctext!="")
{
    alert(cemail+cbetreff+ctext)
    return false;
}
else
    return true;
}
</script>
<title>Kontakt-Formular schreiben</title></head>
<table border="1" bordercolor="black"><form name="form1" onSubmit="check()" action="send.php" method="post">
<tr><td colspan="2"><center><font face="arial" size="3"><b>Kontakt-Formular</b></font></center></td></tr>
<tr><td width="200"><font face="arial" size="2"><b>Vor- und Nachname:</b></font></td><td><input type="text" size="32" maxlength="32" name="Name" value=""></td></tr>
<tr><td width="200"><font face="arial" size="2"><b>E-Mail-Adresse:</b></font></td><td><input type="text" size="32" maxlength="32" name="email" value=""></td></tr>
<tr><td width="200"><font face="arial" size="2"><b>Anschrift:</b></font></td><td><input type="text" size="32" maxlength="32" name="anschrift" value=""></td></tr>
<tr><td width="200"><font face="arial" size="2"><b>PZL und Ort:</b></font></td><td><input type="text" size="32" maxlength="32" name="plzuort" value=""></td></tr>
<tr><td width="200"><font face="arial" size="2"><b>Telefonnummer:</b></font></td><td><input type="text" size="32" maxlength="32" name="tel" value=""></td></tr>
<tr><td width="200"><font face="arial" size="2"><b>Faxnummer:</b></font></td><td><input type="text" size="32" maxlength="32" name="bax" value=""></td></tr>
<tr><td width="200"><font face="arial" size="2"><b>Betreff:</b></font></td><td><input type="text" size="32" maxlength="32" name="betreff" value=""></td></tr>
<tr><td colspan="2"><textarea cols="50" rows="12" name="text"></textarea></td></tr><tr><td colspan="2"><center><input type="submit" value="Nachricht absenden">
<input type="reset" VALUE="Alle Angaben löschen"></center></td></tr>
</table></body></html>

JS ist Case-Sensitive. Groß- und Kleinschreibung beachten!
Gespenst
Hallo,

danke für deine Hilfe!

Dass geht, aber wenn ich keine Mail Adresse angebe (oder keinen
Namen angebe) kommt die Meldung, aber danach springt er jedoch
auf die send.php weiter...

Kannst du mir dass nochmal richtig Coden?
Wäre nett!!

www.office-support-forum.de/test/mail.php

Gespenst
Shr522
Sry, hatte nur check gemacht... Mach wieder dein return check(); an die Stellt mit dem onsubmit
Edit: JS lässt sich aber übergehen - eine entsprechende Schranke in der php-Datei fänd ich weitaus sinnvoller!
Gespenst
<?

if (!empty($email))
{
echo Fehler! Bitte füllen Sie das E-Mail Feld aus!.;
}

if (empty($email))
{
echo "<html><head><title>E-Mail erfolgreich verschickt!</title></head><body><table><tr><td><font face="arial" size"1">
<b>Ihre E-Mail wurde erfolgreich verschickt!</b><br><br>Vielen Dank für Ihre E-Mail. Wir werden uns umgehend
an Sie wenden.<br>Unser Ziel ist es alle Mail in 24 Stunden zu beantworten. Vielen Dank,<br>Ihr Mustermann Firma
Support Team.</font></td></tr></table></body></html>";

<?
$empfaenger = "mail@mail.de";
$sendermail="Webmaster";
$betreff = "Neue Nachricht";
$text = "Hallo,\n
folgende Nachricht wurde über das Kontakt-Formular gesendet:\n\n
---------------------------------------------------\n
Vor- und Nachname: ". $_POST["Name"] ."\n
E-Mail-Adresse: ". $_POST["Email"] ."\n
Anschrift: ". $_POST["Anschrift"] ."\n
PZL und Ort: ". $_POST["PZLuOrt"] ."\n
Telefonnummer: ". $_POST["Tel"] ."\n
Faxnummer: ". $_POST["Fax"] ."\n
Betreff: ". $_POST["Betreff"] ."\n
---------------------------------------------------\n
". $_POST["text"] ."\n\n
---------------------------------------------------\n";
mail($empfaenger, $betreff, $text, "From: $sender <$sendermail>");
?>
}

?>


Geht nicht... Versagt
Tropical
Zitat:
Original von Gespenst
if (!empty($email))
{
echo Fehler! Bitte füllen Sie das E-Mail Feld aus!.;
}

Ich übersetze mal:
if -> Wenn
! -> nicht
empty -> leer
Wenn also das E-Mail Feld nicht leer ist kommt ein Fehler das man dieses ausfüllen soll.
Das ist es bereits, weil es ja nicht leer ist. Deswegen ist deine Bedingung falsch.

Zweitens musst du wenn du einen String angibst Anführungszeichen nutzten. Entweder einfache (') oder doppelte (").

Drittens: Haben wir eine Glaskugel? Nein, die hat nur ShadowByte und auch der findet sie laut Signatur gerade nicht. Also sag, was genau der Fehler ist. (Nachdem du die ersten beiden Dinge erfüllt hast natürlich.)
Schweinebacke
Hallo @Gespenst,

@Shr522 meint, das eine Überprüfung php-seiteig besser ist, da es vom User nicht deaktiviert werden kann.

Beispiel:

Im Formular die php-Abfrage <input type="text" name="name" value="<?php if ($name) {echo $name;} ?>"/>

Jetzt wird beim abschicken des Formulars auf dem Server über if (trim($name) == '') geprüft ob der Inhalt überein stimmt.

Wenn nicht gibt es eine Fehlermeldung an $msg

MusterFormular:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
<?php

if ($_POST) {
  extract($_POST);
}

if ($return || $submit) {
  if (trim($name) == '') {
    $msg .= 'Bitte geben Sie Ihren Namen an.<br>';
  }
  if (trim($vorname) == '') {
    $msg .= 'Bitte geben Sie Ihren Vornamen an.<br>';
  }
  if (trim($email) == '') {
    $msg .= 'Bitte geben Sie Ihre E-Mail-Adresse an.<br>';
  }
  else {
    $regex '^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,4}))$';
    if(!eregi($regex$email)){
      $msg .= 'Die E-Mail-Adresse ist nicht korrekt.<br>';
    }
  }

  if (trim($anfrage) == '') {
    $msg .= 'Bitte stellen Sie Ihre Anfrage.<br>';
  }

  $an "me@home.de"// Email-Adresse des Empfängers
  $header "From: $email\n";
  $header .= "Reply-to: $email\n";
  $header .= "Return-path: $email\n";

  $body "Anfrage\n\n";
  $body .= "Name:   ".$name."\n";
  $body .= "Vorname: ".$vorname."\n";
  $body .= "E-Mail:  ".$email."\n";
  if ($anfrage!="") {
   $body .= "ANFRAGE:\n\n".$anfrage."\n\n";
  }
  $sub "Anfrage von der Webseite";

  if (!$msg) {
    mail($an,$sub,$body,$header);
  }
}
?>

<!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>Kontakt</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

<body bgcolor="#FFFFFF">


<form method=post action="<?php echo $PHP_SELF?>">
<h1>Kontakt</h1>

<?php
if ($msg) {
  echo '<p><font color="#FF6600" size="+1">'.$msg.'</font></p>';
}
?>

  <table border="0" cellpadding="3" cellspacing="0">
    <tr>
      <td><b>Name</b></td>
      <td><input type="text" name="name" value="<?php if ($name) {echo $name;} ?>"/>
        </td>
    </tr>
    <tr>
      <td><b>Vorname</b> </td>
      <td><input type="text" name="vorname" value="<?php if ($vorname) {echo $vorname;} ?>"/>
        </td>
    </tr>
    <tr>
      <td><b>E-Mail</b> </td>
      <td><input type="text" name="email"  value="<?php if ($email) {echo $email;} ?>"/>
        </td>
    </tr>


    <tr>
      <td colspan="2"><br><b>Anfrage</b><br />
    <textarea name="anfrage" cols="50" rows="10"><?php if ($anfrage) {echo $anfrage;} ?></textarea></td>
    </tr>

    <tr><td colspan="2"><br>
    <input name="Submit" type="submit" value="Abschicken" />
    <input type="hidden" name="return" value="ok"></td></tr>

</table>
</form>
</body>
</html>
Gespenst
Hallo Schweinebacke,

kannst du dass einmal im meinem Formular einbauen?
Shr522
Hi nochmal,
ich würde dir empfehlen dich etwas mehr mit der Materie auseinander zu setzen, Schweinebacke hat dir eien gute Vorlage geliefert, die du nur noch anpassen musst...
@ Schweinebacke: Ich würde immer preg_match benutzen statt eregi. laut php.net Performancevorteile und Vorgänger...
Außerdem hätte ich eine <ul> gemacht, statt die Fehlermeldungen nur aneinander zu reihen, aber das ist natürlich Geschmackssache Augenzwinkern
Das soll keine Kritik sein, fiel mir nur auf Augenzwinkern
Schweinebacke
kann ich machen.

Stellt sich die Frage ob du eine mail.html unbedingt möchtest. Wenn ja muss die entweder mail.php heißen oder die Prüfung findet erst in send.php statt.

Wo zu zwei Seiten, wenn’s eine auch tut.

Edit:

Zitat:
Das soll keine Kritik sein, fiel mir nur auf [Augenzwinkern]


Wir können uns nur wirklich weiterentwickeln, wenn wir mit Kritik umgehen können. (auch mit schlechter)

Danke für den Hinweis, werde das im Manual nachlesen. Bin noch kein Profi für PHP
Gespenst
Du kannst aus der mail.html eine mail.php machen nur bitte lasse es in denn zwei. Augenzwinkern
Schweinebacke
irgend wie will das nicht so mit den zwei verschiedenen Seiten.

Da mache ich bei der Abfrage wohl ein Gedankenfehler. Kann aber noch werden.

Vorab die mail.php mit allem drin. Wenn es so reicht, dann melde dich.

Ach ja – deine E-Mailadresse musst du wieder reinschreiben. Habe die nicht drin, für den Fall, das es jemand auf seinen Server lädt (steht „hier ändern“ dran).
Gespenst
Freude Freude Freude Danke, so geht es auch. Freude