PHP Formular funktioniert nur in Chrome (nicht Firefox, nicht IE)

RPS

Cadet 4th Year
Registriert
Sep. 2005
Beiträge
64
Habe folgendes Formular erstellt, was jetzt leider nur mit Google Chrome funktioniert, nicht aber mit Firefox oder IE. Leider finde ich einfach nicht die Lösung. Das ganze Formular besteht aus drei Seiten, wobei der Upload funktioniert und der Code zum ausführen des E-Mail Versandes auf Seite 2 ist. Problem muss eigentlich hier liegen.

Code:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250"/>
<title>W&uuml;rzburger Studentenkalender 2015 - Bewirb dich jetzt!</title>
</head>
<body topmargin="0" bottommargin="0">

<table width="753px" border="0" cellspacing="0" cellpadding="0" align="center" height="100%">
  <tr height="100%">
    <td height="100%" width="565px" valign="top"><br><br><img src="titel.png"><br><br>
    <font face="Arial, Verdana, Geneva, sans-serif" style="text-transform: uppercase; font-size: 12px; color: #666;">Vielen Dank! Und jetzt noch ein paar Bilder, die nicht gebrauchten Felder bitte einfach freilassen.</font>
<br>

<?php
if (isset($_POST["submit"]))
{
 
// Sammeln der Formulardaten
$an = "fotografie@schwarz-kneitz.de";
$vorname = $_POST['vorname'];
$nachname = $_POST['nachname'];
$hausnr = $_POST['hausnr'];
$plz = $_POST['plz'];
$ort = $_POST['ort'];
$email = $_POST['email'];
$fach = $_POST['fach'];
$geb = $_POST['geb'];
 
// Mailheader UTF-8 fähig machen
$mail_header = 'From:' . $email . "n";
$mail_header = 'Content-type: text/plain; charset=UTF-8' . "rn";
 
// Nachrichtenlayout erstellen
$message = "
Name:        $nachname
Vorname:	$vorname
Email:      $email
Adresse:  $hausnr - $plz - $ort
Fach:  $fach
Geburtstag: $geb
";
 
// Verschicken der Mail
mail($an, $nachname, $message, $mail_header );
};
?>
<br>
<form action="index3.php" method="post" enctype="multipart/form-data">
<p>
<input type="file" name="pictures[]" /><br>
<input type="file" name="pictures[]" /><br>
<input type="file" name="pictures[]" /><br>
<input type="file" name="pictures[]" /><br>
<input type="file" name="pictures[]" /><br>
<input type="file" name="pictures[]" /><br>
<input type="file" name="pictures[]" /><br>
<input type="file" name="pictures[]" /><br>
<input type="file" name="pictures[]" /><br>
<input type="file" name="pictures[]" /><br><br>
<input id="submit" name="submit" type="image" src="senden2.png" value="Absenden" />
</p>
</form>

    
    
    <br><br>
    <img src="logos1.png"><a target="_blank" href="http://tamaki-photography.de/"><img src="logos2.png"></a><br><img src="logos3.png"><br><img src="logos4.png"><a target="_blank" href="http://schwarz-kneitz.de"><img src="logos5.png"></a><br><br>
    </td>
    <td height="100%" valign="top">&nbsp;&nbsp;</td>
    <td height="100%" bgcolor="#48d1d6" valign="top"><br><br><img src="img1.png"><br><img src="img2.png"><br><img src="img3.png"></td>
  </tr>
</table>







</body>
</html>

Vielen Dank!
 
Schwer zu sagen, wo es hängen könnte. Aber ich hatte mal ein ähnliches Verhalten mit dem AVG LinkScanner gehabt, der sich als Addon aber nur in den IE und Firefox geladen hatte. Deshalb hatte es seinerzeit bei mir auch nur im Chrome funktioniert. Laufen denn irgendwelche Virenscanner oder andere Sicherheitsprogamme beim Testen? Falls ja, dann mal ohne Probieren, vielleicht liegt es daran.
 
Brich das Ding doch lieber mal auf eine einzelne Seite runter, statt ein mehrstufiges Formular zu erzeugen. Wenn du so etwas machst, dann eh als One-Page - Layout mit AJAX-Requests, nicht mit separaten Seitenaufrufen.

Ich vermute das Problem eher in der Stufe vor der obigen.

Was außerdem ins Auge sticht:
- <table> für nicht-tabellarische Daten... so etwas tut man nicht!
- <font>? ernsthaft? 1990 will seine Elemente zurück
- dasselbe gilt für den ganzen Kram wie topmargin="0"

Ansonsten: Schreib dir ein paar Logging-Routinen. Überprüf die Error.log des Webservers. Check deinen Netzwerkverkehr.
 
Auslöser deines Problems ist der unterschiedliche Umgang der Browser-Engines mit Image-Inputs. Ich habe es mal mithilfe eines simplen Formulars getestet:
Code:
<form method="get" action="">
    <input name="image1" value="image1_value" type="image" src="img.png">
    <input name="submit1" value="submit1_value" type="submit"> <!-- dient der Kontrolle -->
</form>
Unter Chrome erhalte ich nach dem Absenden des Formulars mithilfe des Bilds folgende URL:
file.html?image1.x=13&image1.y=3&image1=image1_value
Wohingegen Firefox den Parameter komplett ignoriert:
file.html?image1.x=13&image1.y=3

Dementsprechend sollte dein Problem behoben sein, wenn du "submit" mithilfe eines Hidden-Inputs übermittelst:
Code:
<input type="hidden" name="submit" value="whatever">
<input type="image" src="senden2.png"/>
 
Hm... interessante Geschichte.
Alternativer Lösungsansatz: Keine Image-Buttons machen, sondern Text-Buttons, deren Text man per CSS durch das gewünschte Bild ersetzt. Ist deutlich flexibler als type="image". Den SCheiß hab ich seit Jahren nicht mehr gesehen.
 
Daaron hat da durchaus recht. Nen Image zu missbrauchen, um nen Form abzusenden ;)
Achja und bitte sag mir, dass das Formular so NICHT im internet zu finden ist, sonst dauert es nicht allzulange, bis jemand deinen Server munter als Mail-Schleuder verwendet.
 
Tion1392 schrieb:
Daaron hat da durchaus recht. Nen Image zu missbrauchen, um nen Form abzusenden ;)
Nun ja, um das zu relativieren: Es ist zumindest valider Code, kann man von dem Rest ja nicht unbedingt behaupten.
Ändert natürlich nix daran, dass man so etwas einfach nicht macht.

Hier gilt wie immer: Wendet euch gefälligst an Profis, nehmt Geld in die Hand. Alles andere ist nur Gestümper und verunstaltet die Welt mit NOCH MEHR Sicherheitslücken.

Wenn das hier schon ein Studentenkalender werden soll... warum fragt ihr nicht in der Info-Fakultät herum, ob euch jemand professionell zur Seite stehen kann? Für ein paar Bier und ne gestopfte Bong wird sich sicher jemand finden, der durchaus Ahnung von der Problematik hat und den Kram für euch auf einem akzeptablen Niveau löst.
 
Zurück
Oben