Fehlermeldung in Kontaktformular php

robertmd

Cadet 4th Year
Registriert
Sep. 2007
Beiträge
121
Moin moin,

wir haben heute ein neues Kontaktformular erstellt.
Dieses ist per IFrame eingebunden.

Beim Aufruf kommt die Fehlermeldung:
"Parse error: syntax error, unexpected '[' in /var/www/web1090/html/kontakt.php on line 49 "

HIer der betreffende Abschnitt:

46 $anrede = isset($_POST["anrede"]) ? $_POST["anrede"] : ""; // Anrede
47
48 // Auswahlliste: Anrede
49 $array = [
50 "",
51 "Frau",
52 "Herr",
53 "div",
54 ];
55 $anredeAW = "<select name='anrede' size='1'>";
56 foreach ($array as $value) {
57 $anredeAW .= "\n <option value='" . $value . "'" .
58 ((isset($_POST["anrede"]) ? $_POST["anrede"] : "") == $value ?
59 " selected='selected'" : "") . ">" . $value . "</option>";
60 }
61 $anredeAW .= "\n </select>";

Hat jemand eine Idee, was das Problem ist?

Dank und Gruß
Robert
 
Laut Anbieter (Alfahosting)


PHP-Version(en):5.6, 7.0 bis 7.3
Perl-Version:5.20
MySQL-Version:5.7
 
Ich würde ein Array niemals mit $array als Variablennamen benennen, auch wenn dies möglich ist. "array" ist ein reserviertes Wort. Die kurze Schreibweise sollte eigentlich ab PHP 5.4 funktionieren, ich würde einfach mal die lange Schreibweise ausprobieren ...
PHP:
$auswahlliste = array("", "Frau", "Herr", "div");
das ist seit PHP 5.4 dasselbe wie
PHP:
$auswahlliste = ["", "Frau", "Herr", "div"];
und dann
PHP:
foreach ($auswahlliste as $value) {
  $anredeAW .= "\n  <option value='" . $value . "'" .
  ((isset($_POST["anrede"]) ? $_POST["anrede"] : "") == $value ?
  " selected='selected'" : "") . ">" . $value . "</option>";
}
 
Zuletzt bearbeitet: (Typo)
Hemm...also ich habs mal versucht umzusetzen, vielleicht kannst du ja schauen, obs so passt:

1. Original:
$anrede = isset($_POST["anrede"]) ? $_POST["anrede"] : ""; // Anrede
// Auswahlliste: Anrede
$array = [
"",
"Frau",
"Herr",
"div",
];
$anredeAW = "<select name='anrede' size='1'>";
foreach ($array as $value) {
$anredeAW .= "\n <option value='" . $value . "'" .
((isset($_POST["anrede"]) ? $_POST["anrede"] : "") == $value ?
" selected='selected'" : "") . ">" . $value . "</option>";
}
$anredeAW .= "\n </select>";

2. überarbeitet:
$anrede = isset($_POST["anrede"]) ? $_POST["anrede"] : ""; // Anrede
// Auswahlliste: Anrede
$auswahlliste = array[
"",
"Frau",
"Herr",
"div",
];
$anredeAW = "<select name='anrede' size='1'>";
foreach ($auswahlliste as $value) {
$anredeAW .= "\n <option value='" . $value . "'" .
((isset($_POST["anrede"]) ? $_POST["anrede"] : "") == $value ?
" selected='selected'" : "") . ">" . $value . "</option>";
}
$anredeAW .= "\n </select>";

Passt das so?

Und falls ja: ich habe noch drei weitere Auswahlfelder. erfolgt dort die gleiche Änderung oder muss ich jeweils "$auswahlliste" ändern z.B. in "$auswahlliste2"?

Danke für die Hilfe
 
Das passt nicht. Wenn Du die Funktion array verwendest, dann müssen die Werte in runde Klammern.

Wenn Du die Werte von $auswahlliste jedesmal neu setzt, dann ist es egal, ob Du immer dieselbe Variable verwendest. Warum schreibst Du das Array über 6 Zeilen und nicht hintereinander in dieselbe Zeile?
 
Ah ok...ich schleife die Klammern dann mal rund ;)

MIt den Zeilen...ja weiß nicht...wurde so vom Generator vorgegeben.
Habe den http://www.nof-tutorials.com/Webbausteine-Formular-Generator/ genutzt.
Ergänzung ()

Ich bekomm ne Macke g

DIe ersten Tipps haben dazu geführt, dass diese Fehler scheinbar ausgebügelt sind.

Nun bekomme ich zwei weitere Fehler gemeldet in den Zeilen 125 und 135 grummel

Vielleicht hat da noch jemand einen Tipp?

PHP:
<!DOCTYPE html>
<html lang="de">
 <head>
  <meta charset="UTF-8">
  <title></title>

  <style>
  body, textarea {
   font-family: Verdana, Sans-Serif;
   font-size: 14px;
  }

  span.pflichtfeld {
   font-size: 12px;
   color: Red;
  }

  span.hilfetext {
   font-size: 10px;
   font-style: Oblique;
  }
  </style>

 </head>
<body>

<?php
/*
   Aktion: Formulardaten als E-Mail versenden.
   Formular - PHP 5.4+, Zeichenkodierung: UTF-8

   Erstellt mit dem Formular Generator (03.01.2020) -
   https://www.nof-tutorials.com/Webbausteine-Formular-Generator/formulargenerator.php

   Bitte testen Sie das Formular ausf�hrlich und
   beachten Sie die Hinweise im Quelltext!
*/

// PHP Fehlermeldungen (1 um das Formular zu testen) anzeigen.
error_reporting(1); // (0/1)

// Weiterleitung - Nach dem absenden des Formulars,
// gelangt der Benutzer �ber einen Link auf folgende Seite:
$Weiterleitung = "index.php";

$anrede = isset($_POST["anrede"]) ? $_POST["anrede"] : ""; // Anrede

// Auswahlliste: Anrede
$auswahlliste = array(
"",
"Frau",
"Herr",
"div",
);
$anredeAW = "<select name='anrede' size='1'>";
foreach ($auswahlliste as $value) {
 $anredeAW .= "\n  <option value='" . $value . "'" .
 ((isset($_POST["anrede"]) ? $_POST["anrede"] : "") == $value ?
 " selected='selected'" : "") . ">" . $value . "</option>";
}
$anredeAW .= "\n </select>";

$name = isset($_POST["name"]) ? strip_tags(trim($_POST["name"])) : ""; // Name
$email = isset($_POST["email"]) ? strip_tags(trim($_POST["email"])) : ""; // E-Mail
$telefonnummer = isset($_POST["telefonnummer"]) ? strip_tags(trim($_POST["telefonnummer"])) : ""; // Telefonnummer
$betreff = isset($_POST["betreff"]) ? $_POST["betreff"] : ""; // Betreff

// Auswahlliste: Betreff
$auswahlliste = array(
"",
"Preisanfrage",
"Auftrag",
"sonstiges",
"Kritik/Anregung",
);
$betreffAW = "<select name='betreff' size='1'>";
foreach ($auswahlliste as $value) {
 $betreffAW .= "\n  <option value='" . $value . "'" .
 ((isset($_POST["betreff"]) ? $_POST["betreff"] : "") == $value ?
 " selected='selected'" : "") . ">" . $value . "</option>";
}
$betreffAW .= "\n </select>";

$auftragsobjekt = isset($_POST["auftragsobjekt"]) ? $_POST["auftragsobjekt"] : ""; // Auftragsobjekt

// Auswahlliste: Auftragsobjekt
$auswahlliste = array(
"",
"gewerblich",
"privat",
"sonstiges",
);
$auftragsobjektAW = "<select name='auftragsobjekt' size='1'>";
foreach ($auswahlliste as $value) {
 $auftragsobjektAW .= "\n  <option value='" . $value . "'" .
 ((isset($_POST["auftragsobjekt"]) ? $_POST["auftragsobjekt"] : "") == $value ?
 " selected='selected'" : "") . ">" . $value . "</option>";
}
$auftragsobjektAW .= "\n </select>";

$auftragsort_mit_plz = isset($_POST["auftragsort_mit_plz"]) ? strip_tags(trim($_POST["auftragsort_mit_plz"])) : ""; // Auftragsort mit PLZ
$auftragsumfang = isset($_POST["auftragsumfang"]) ? $_POST["auftragsumfang"] : ""; // Auftragsumfang

// Auswahlliste: Auftragsumfang
$auswahlliste = array(
"",
"einmalige Arbeit",
"einmalige Arbeit mit evtl. Folgeauftrag",
"langfristige Auftragsstellung",
"sonstiges",
);
$auftragsumfangAW = "<select name='auftragsumfang' size='1'>";
foreach ($auswahlliste as $value) {
 $auftragsumfangAW .= "\n  <option value='" . $value . "'" .
 ((isset($_POST["auftragsumfang"]) ? $_POST["auftragsumfang"] : "") == $value ?
 " selected='selected'" : "") . ">" . $value . "</option>";
}
$auftragsumfangAW .= "\n </select>";

$nachricht = isset($_POST["nachricht"]) ? strip_tags(trim($_POST["nachricht"])) : ""; // Nachricht / erw�nschte Arbeiten
$KopieCk = isset($_POST["Kopie"]) ? " checked='checked'" : null; // E-Mail Kopie

// Benutzereingaben �berpr�fen
// Die Meldungen m�ssen hier eventuell angepasst werden.
$Fehler = ["anrede"=>"", "name"=>"", "email"=>"", "nachricht"=>"", "sicherheit"=>""];
if (isset($_POST["submit"])) {
 $Fehler["anrede"] = $anrede == "" ? " Bitte w�hlen Sie einen Eintrag aus!" : "";
 $Fehler["name"] = strlen($_POST["name"]) < 1 ? " Bitte f�llen Sie dieses Feld aus!" : "";
 $Fehler["email"] = strlen($_POST["email"]) < 1 ? " Bitte f�llen Sie dieses Feld aus!" : "";
 $Fehler["nachricht"] = strlen($_POST["nachricht"]) < 10 ? " Bitte f�llen Sie dieses Feld aus (min. 10 Zeichen)!" : "";
 $Fehler["sicherheit"] = (md5($_POST["zip"]) != $_POST["zip2"]) ? "Die Rechenaufgabe ist leider falsch!" : "";
}

// Sicherheitsabfrage - Rechenaufgabe
$Z0 = [mt_rand(1, 9), mt_rand(1, 9)];
$Z1 = max($Z0); $Z2 = min($Z0);
$Spam = $Z1 . " &#43; &#" . (48 + $Z2) . ";";
$Schutz = md5($Z1 + $Z2);

// Formular erstellen
$Formular = "
<form action='" . $_SERVER["SCRIPT_NAME"] . "' method='post'>

<p>
 <label> Anrede:
 <span class='pflichtfeld'>&#10034; " . $Fehler["anrede"] . "</span><br>
 " . $anredeAW . "
 </label>
</p>

<p>
 <label> Name:
<span class='pflichtfeld'>&#10034; " . $Fehler["name"] . "</span><br>
  <input type='text' name='name' value='" . $name . "' size='35'>
 </label>
</p>

<p>
 <label> E-Mail:
<span class='pflichtfeld'>&#10034; " . $Fehler["email"] . "</span><br>
  <input type='text' name='email' value='" . $email . "' size='35'>
 </label>
</p>

<p>
 <label> Telefonnummer:
<br>
  <input type='text' name='telefonnummer' value='" . $telefonnummer . "' size='35'>
 </label>
</p>

<p>
 <label> Betreff: <br>
 " . $betreffAW . "
 </label>
</p>

<p>
 <label> Auftragsobjekt: <br>
 " . $auftragsobjektAW . "
 </label>
</p>

<p>
 <label> Auftragsort mit PLZ:
<br>
  <input type='text' name='auftragsort_mit_plz' value='" . $auftragsort_mit_plz . "' size='35'>
 </label>
</p>

<p>
 <label> Auftragsumfang: <br>
 " . $auftragsumfangAW . "
 </label>
</p>

<p>
 <label> Nachricht / erw�nschte Arbeiten:
 <span class='pflichtfeld'>&#10034; " . $Fehler["nachricht"] . "</span><br>
 <textarea name='nachricht' cols='50' rows='8'>" . $nachricht . "</textarea>
 </label>
</p>

<p>
 <label> Sicherheitsabfrage:
 <span class='pflichtfeld'>&#10034; " . $Fehler["sicherheit"] . "</span><br>
 <em>" . $Spam . "</em> =
 <input type='text' name='zip' size='4' autocomplete='off'>
 </label>
 <input type='hidden' name='zip2' value='" . $Schutz . "'>
 <br><span class='hilfetext'> Bitte l�sen Sie die Rechenaufgabe. </span><br>
</p>

<p>
 <br>
 <input type='submit' name='submit' value='Formular absenden'>
</p>

<p>
 <small>Bitte alle mit <span class='pflichtfeld'>&#10034;</span>
 markierten Felder ausf�llen.</small>
</p>

</form>
";

// Formular abgesendet
if (isset($_POST["submit"])) {

 // Sind keine Benutzer-Eingabefehler vorhanden
 if (implode("", $Fehler) == "") {

  // Daten als E-Mail versenden (Vorschlag) - Bitte anpassen!

  // Zeitzone und das aktuelle Datum setzen
  // https://de3.php.net/manual/de/timezones.europe.php
  date_default_timezone_set("Europe/Berlin");
  $Datum = date("d.m.Y H:i");

  // Empf�nger E-Mail
  $Mailto = "";

  // Inhalt der E-Mail setzen
  $Text = "   Gesendet am: $Datum Uhr
   Anrede: $anrede
   Name: $name
   E-Mail: $email
   Telefonnummer: $telefonnummer
   Betreff: $betreff
   Auftragsobjekt: $auftragsobjekt
   Auftragsort mit PLZ: $auftragsort_mit_plz
   Auftragsumfang: $auftragsumfang
   Nachricht / erw�nschte Arbeiten: $nachricht
  ";

  // E-Mail versenden
  mb_internal_encoding("UTF-8");
  $Betreff = mb_encode_mimeheader($betreff, "UTF-8", "Q");
  $Kopfzeile = "MIME-Version: 1.0;\nFrom: " . mb_encode_mimeheader($name, "UTF-8", "Q") .
   "<" . $email . ">" . "\nContent-Type: text/plain; Charset=UTF-8;\n";

  if (mail($Mailto, $Betreff, $Text, $Kopfzeile)) {

   echo "<p>Vielen Dank, die Nachricht wurde versendet.</p>";
  }
  else {

   // Wenn die Daten nicht versendet werden konnten,
   // wird die E-Mail-Adresse f�r den direkten Kontakt eingeblendet.
   echo "<p>Beim Senden der Nachricht ist ein Fehler aufgetreten!<br>" .
   "Bitte wenden Sie sich direkt an: <a href='mailto:" . $Mailto . "'>" . $Mailto . "</a></p>";
  }

  // E-Mail Kopie versenden (Vorschlag) - Bitte anpassen!
  // Diese Nachricht wird automatisch an die E-Mail-Adresse des Besuchers gesendet.

  // Name/Signatur
  $Signatur = "";

  // Betreff
  $Betreff = "Kopie einer Nachricht";

  // Inhalt der E-Mail setzen
  $Text = "   Vielen Dank f�r Ihren Besuch bei Sauberfuchs.de
  Wir haben folgende Nachricht erhalten:

  Anrede: $anrede
  Name: $name
  E-Mail: $email
  Telefonnummer: $telefonnummer
  Betreff: $betreff
  Auftragsobjekt: $auftragsobjekt
  Auftragsort mit PLZ: $auftragsort_mit_plz
  Auftragsumfang: $auftragsumfang
  Nachricht / erw�nschte Arbeiten: $nachricht

   Mit freundlichen Gr��en
    $Signatur
   ";

  // E-Mail Kopie versenden
  $Betreff = mb_encode_mimeheader($Betreff, "UTF-8", "Q");
  $Kopfzeile = "MIME-Version: 1.0;\nFrom: " . mb_encode_mimeheader($Signatur, "UTF-8", "Q") .
    "<" . $Mailto . ">" . "\nContent-Type: text/plain; Charset=UTF-8;\n";
  if (mail($email, $Betreff, $Text, $Kopfzeile)) {
   echo "<p>Sie erhalten eine Kopie der Nachricht an Ihre E-Mail-Adresse.</p>";
  }

  // Weiterleitung
  echo "<p><a href='" . $Weiterleitung . "' target='_top'>Weiter</a></p>";
 }
 else {

  // Formular und Benutzer-Eingabefehler ausgeben
  echo $Formular;
 }
}
else {

 // Formular ausgeben
 echo $Formular;
}
?>

</body>
</html>
 
Zuletzt bearbeitet: (Mailadresse gelöscht)
Auf den ersten Blick kann ich keinen Fehler in den beiden Zeilen erkennen. Wie lautet jewails die Fehlermeldung?

Hast Du die Datei als UTF-8 gespeichert? Bei mir funktioniert das Gepostete ohne Fehler

/edit: Ich vermute, Du hast sie nicht als UTF-8 gespeichert. Das könnte auch den ersten "Fehler" erklären, denn der Code hätte an und für sich funktionieren müssen.
 
Zuletzt bearbeitet:
Ich hatte alles im Deamweaver bearbeitet und gespeichert. UTF-8? keine AHnung ;)

Hab die php nun mal im Editor geöffnet und mit Codierung UTF-8 gespeichert.
Ändert leider nichts.

Sowohl im Firefox, als auch im IE kommt:

Parse error: syntax error, unexpected '[' in /var/www/web1090/html/kontakt.php on line 125
 
Dieser Fehler kommt nur wegen der falschen Codierung, der php-Code an sich ist richtig. Ich poste mal als Anlage die Version, die bei mir ohne Fehler funktioniert, die ist als UTF-8 gespeichert. Einfach entpacken.
 

Anhänge

Ganz lieben dank dafür, aber...ich verstehs nicht.

Ich habe es nun im Firefox, Internetexplorer und auch auf dem IPhone probiert...die Fehlermeldung bleibt.

Um "Probleme" mit dem Cache auszuscjließen habe ich die Dateien auch unter anderem Dateinamen probiert...es läuft nicht.
 
Für die Seiten an sich Dreamweaver. NIchts besonderes, hatte ich aber noch "zu liegen".

Meine eigene Seite mache ich in Wordpress. INsofern sind die html-Kenntnisse ein wenig verkümmert g
 
Es ist ja nicht wirklich ein html-Problem. Du speicherst anscheinend mit Wordpad in der Codierung Windows 1252. Wenn Du das zum Beispiel mit Notepad++ als UTF-8 speicherst, sollte sich das Problem in Nichts auflösen.
 
So...mit der Hilfe vom Andreas konnte ich die Datei nun ein wenig verbessern.

Nun der aktuelle unbefriedigende Stand:

1. Aufruf der kontakt.html mit kontakt.php als Iframe auf dem Server von Alfahosting: Fehler in Zeile 125
2. Aufruf der direkten kontakt.php als Iframe auf dem Server von Alfahosting: Fehler in Zeile 125
3. Aufruf der kontakt.html mit kontakt.php als Iframe auf dem Server von Strato: Fehler in Zeile 125
4. Aufruf der direkten kontakt.php als Iframe auf dem Server von Strato: Formular wird fehlerfrei angezeigt und funktioniert tadellos
5. Aufruf der kontakt.html auf dem Server von Alfahosting; wobei die kontakt.php im IFram vom Server Strato abgerufen wird: funktionirt optisch und technisch einwandfrei

Ich bin verwirrt...
 

Anhänge

Zurück
Oben