Entwickler-Ecke

Programmiersprachen (Server) - [Hilfe] Formular funktioniert nicht


m1sc - Di 02.07.13 20:52
Titel: [Hilfe] Formular funktioniert nicht
Hallo, ich bin seit 1 Woche dabei ein Formular zu machen für meine Homepage, was mich zum verzweifeln bringt. Da ich kein PHP/JS kann versuche ich mich durch bereits fertige Codes zu schlängeln, diese einigermaßen zu verstehen und abzuändern. Allerdings scheint irgendetwas nicht mit der Syntax zu stimmen da ich ein String error in Zeile 121 bekomme, hier einmal der Code, es sind sicherlich noch andere Fehler drin hilfe wäre toll:


PHP-Quelltext
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:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
<head>

    <script type="text/javascript">
    // Kontaktformular vor dem absenden überprüfen
    var fehlerfarbe = "#FFFFDD";
    function check() {
  if (document.getElementsByTagName("input").length < 1) {return false;}
  else if (document.Form.name.value == "") {document.Form.name.style.backgroundColor=fehlerfarbe; document.Form.name.focus(); return false;}
  else if (document.Form.mailfrom.value == "") {document.Form.mailfrom.style.backgroundColor=fehlerfarbe; document.Form.mailfrom.focus(); return false;}
  else if (document.Form.zip.value == "") {document.Form.zip.style.backgroundColor=fehlerfarbe; document.Form.zip.focus(); return false;}
  else return true;
     }
    function check2(ziel) {
      if (ziel.value == "") {
      ziel.style.backgroundColor=fehlerfarbe;
     }
     else {
      ziel.style.backgroundColor="#FFFFFF";
     }
     }
     </script>  
     
     
</head>

<body>


          <article id="textbox">
        
   <?php


//E-Mail-Adresse
$mailto = "support@meinepage.de";

//Link zur Startseite nach dem absenden
$url = "http://www.meinepage.de";

// Fortgeschrittene Anwender können ab hier Änderungen vornehmen.
error_reporting(0);
$eingabefehler = ""// Bitte leer lassen!
$name = isset($_POST["name"]) ? $_POST["name"] : "";
$mailfrom = isset($_POST["mailfrom"]) ? $_POST["mailfrom"] : "";
$text = isset($_POST["text"]) ? $_POST["text"] : "";
// Spamschutz: Rechenaufgabe
$zufallszahl1 = mt_rand(190);
$zufallszahl2 = mt_rand(19);
$ergebnis = md5($zufallszahl1 + $zufallszahl2);
$code = "&#" . (48 + $zufallszahl2) . ";";
        
// Formular erstellen
$formular = "<form name='Form' action='" . $_SERVER["SCRIPT_NAME"] . "' method='post' onsubmit='return check();'>
 
 
  <table class="
kontakttable">
  <tr>
  <td>Name</td>
  <td><input name="
name" type="text" size="40" maxlength="30" value="" . $name .  "' id="Name"></td>
  </tr>
  <tr>
  <td>E-Mail</td>
  <td><input name="email" type="text" size="40" maxlength="40" value="" . $mailfrom . "'
 id="Email"></td>
  </tr>
  <tr>
  <td>Text</td>
  <td><textarea name="text" cols="70" rows="8" value="" . $text . "' id="Text"></textarea></td>
  </tr>
  <tr>
  <td>
  <label for='Spamschutz'>Spamschutz: <span class='pflichtfeld'>*</span></label>   <em>"
 . $zufallszahl1 . " + " . $code . "</em> = 
 <input type='text' name='zip' size='3' id='Spamschutz'><input type='hidden' name='zip2' value='"
 . $ergebnis . "'> <small>(Rechenaufgabe lösen)</small>
 </td>
  </tr>
  <tr>
  <td></td>
  <td><input  class="
submit" type="submit" value="Absenden" name='sendung' title='Formular absenden'/></td>
  </tr>
  </table>
  
  
  </form>
  
 if (isset(
$_POST["sendung_x"])) {
 // Pflichtfelder überprüfen
 if (strlen(
$name) <= 2) $eingabefehler .= "• Name fehlt!<br/>";
 if (!preg_match("
/^([_a-z0-9-äöüß])(([-_a-z0-9-äöüß._])*([_a-z0-9-äöüß]))*@([_a-z0-9-äöüß])(([_a-z0-9-äöüß-])*([_a-z0-9-äöüß]))+(.([_a-z0-9-äöüß])([-a-z0-9_-])?([_a-z0-9-äöüß])+)+$/i", $mailfrom)) {
  
$eingabefehler .= "• Fehler in der E-Mail-Adresse!<br/>";
 }
 if (md5(
$_POST["zip"]) != $_POST["zip2"]) $eingabefehler .= "• Der Spamschutz ist leider falsch!<br/>";
 if (
$eingabefehler == "") {
  // Diese Nachricht wird an Ihre E-Mail-Adresse gesendet (\n = neue Zeile)
  
$datum = date("d.m.Y H:i");
  
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
  
$text = "
   Datum: $datum n

   ====

   Name: $name n

   E-Mail: $mailfrom n 
   
   Text: $text n

   ====";
  // E-Mail versenden
  @mail(
$mailto$betreff$text, "From: " . $mailfrom);
  // Bestätigung der E-Mail
  echo "
<p class='hintergrund danke'>" . 
  "
Vielen Dank, Ihre Nachricht wurde versendet.<br/><br/>";
  // Link zur Startseite
  echo "
<a href='" . $url . "' target='_top'>Weiter zur Startseite</a></p>";
 }
 else {
  // Eingabefehler und Formular ausgeben
  echo str_replace("
<!-- Fehleranzeige -->",
  "
<strong>Die Nachricht wurde aus folgendem Grund nicht gesendet:</strong><br/>" .
  
$eingabefehler$formular);
 }
}
else {
 // Formular ausgeben
 echo 
$formular;
}
?>

 
          </article>





</body>
</html>


Moderiert von user profile iconNarses: Quote- durch PHP-Tags ersetzt


Christian S. - Di 02.07.13 23:15

Wenn Du einen String hast, den Du mit " einleitest, dann darf in dem String dieses Zeichen nicht mehr vorkommen, ohne dass Du es escapest. Also das geht nicht:


PHP-Quelltext
1:
$foo = "<table class="kontakttable">";                    

Das hier schon:

PHP-Quelltext
1:
$foo = "<table class=\"kontakttable\">";                    

Beachte die Backslashes, mit denen die Anführungszeichen im String escaped wurden.

Das geht bei Dir gerade ziemlich durcheinander, habe ich den Eindruck.

Generell sollte man sich mittels Tutorials oder Büchern schonmal in die Grundlagen von sowas einarbeiten, sonst kommt man nicht wirklich weit :nixweiss: