• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Unverständliches Problem Kontaktformular?!

alfons485

Neues Mitglied
Hey Leute!

Ich habe eine etwas mysteriöse Sache:

Folgender php-code

<?php


$strEmpfaenger = '[email protected]';


$strFrom = "$_POST[Name] <$_POST>";


$strSubject = 'Anfrage über Kontaktformular';


$strReturnhtml = 'Danke-Kontakt.html';


$strDelimiter = ":\t";



if($_POST)
{
$strMailtext = "";

while(list($strName,$value) = each($_POST))
{
if(is_array($value))
{
foreach($value as $value_array)
{
$strMailtext .= $strName.$strDelimiter.$value_array."\n";
}
}
else
{
$strMailtext .= $strName.$strDelimiter.$value."\n";
}
}

if(get_magic_quotes_gpc())
{
$strMailtext = stripslashes($strMailtext);
}

mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
or die("Die Mail konnte nicht versendet werden.");
header("Location: $strReturnhtml");
exit;
}

?>[/quote]HTML-Code

[quote]<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post" name="Anfrage" id="Kontakt">

<label><span class="Stil1">Name:</span><br />
<input name="Name" type="text" id="Name" size="40" />
<br>
Vorname<br>
<input name="Vorname" type="text" id="Vorname" size="40" />
<br />
<span class="Stil1">Telefon<br />
<input name="Telefon" type="text" id="Telefon" size="40" />
<br />
Email</span><br />
<input name="Email" type="text" id="Email" size="40" />
<br />
<br>
<br />
</label>
<p>
<label>Betreff:
<select name="Betreff" id="Betreff">
<option value="Redaktioneller Beitrag">Redaktioneller Beitrag</option>
<option value="Verletzung Urheberrecht">Verletzung Urheberrecht</option>
<option value="Link hinzuf&uuml;gen">Link hinzuf&uuml;gen</option>
<option value="Allgemeine Anfrage" selected>Allgemeine Anfrage</option>
</select>
</label>
</p>
<p><span class="Stil6">Meine Nachricht</span><br />
<label>
<textarea name="Meine Nachricht cols="60" rows="8" id="Meine Nachricht"></textarea>
</label>
</p>
<label><br />
</label>
<p>
<input type="submit" value="Senden" />
<input type="reset" value="Zurücksetzen" />
</p>
</form> [/quote]



SO....leider wird aber nicht an die "Danke"-Seite weitergeleitet!
Es erscheint einfach nur 1 weißer Bildschirm und das wars! Die Danke Seite ist vorhanden und auch der Pfad 100% korrekt! Und das geile dabei, heute vormittag ging es noch^^

Aber es wird noch besser: Genau das gleiche Kontaktformular habe ich auf einer anderen Seite eingebaut! Sogar der Provider ist der gleiche! Und da geht es! Getestet mit verschiedenen Browser - alle der gleioche Effekt - daran kann es also nicht liegen!

Wo ist das Problem? Wie kann das sein? Was kann ich an dem Formular ändern, daß es zuverlässig funktioniet und nicht zwischendurch mal und dann wieder nicht^^

Sehr komische Sache.....

:?::?::?:

Ach und nochwas:


Warum springt bei Firefox der Cursor immer wieder in das erste Eingebafeld?
Es lassen sich über die Maus keine Eingaben in den drunter liegenden Feldern eingeben, ohne das der Cursor wieder in das erste Feld springt :(

Das Problem hat aber nur Firefox!
Und wenn ich die Umschalttase benutze, dann geht es^^

Irgendwie sehr mysteriös^^
Woran liegt das?
 
Zuletzt bearbeitet von einem Moderator:
Änder mal die header-Funktion um:

PHP:
header("Location: ".$strReturnhtml);

MfG Icy
 
Das mit dem Cursor könnte an Deiner falschen Umsetzung des Labels liegen. <label> dient dazu, ein LABEL auszuzeichnen. Ein Label ist die Bezeichnung für ein Eingabefeld, nicht auch noch das Eingabefeld:
Code:
<label for="name">Bitte Name eingeben:</label>
<input id="name" type="text" />
<label for="email">Bitte Mailadresse eingeben:</label>
<input id="email" type="text" />
Das Label hat den Sinn, dass wenn man darauf klickt, der Cursor sich im dazugehörigen (Attribut "for") Feld positioniert. Bei Check- oder Radiobuttons wird dadurch das Anklicken erleichtert, wenn man nicht mehr in diese Miniaturbuttons klicken muss.

@Icy: Das macht keinen Unterschied, da Variablen innerhlab von Anführungszeichen aufgelöst werden.
 
@Efchen---danke--das war der Fehler....
Jetzt weiß ich auch das und es jetzt funktioniert das zumindest schonmal ;)


ABER: Was ist das mit der $strReturnhtml" ???

Hab das mal trotzdem verändert wie Icy das geschrieben hat - muss ja alles testen, da es schon komisch genug ist, daß es so nicht richtig funktioniert...hat aber keine Auswirkung :(

Ich meine - so wie es im php-Bereich steht ist es doch korrekt oder wie?
Und warum kommt nur ein weißer Bildschirm? Keine Fehlermeldung, daß die angegebene Seite nicht zu erreichen ist oder sonstwas..einfach weiß und das wars dann^^

Er zeigt auch im Browser nicht die Seite an, die erscheinen soll....er bleibt bei der Kontakt.php kleben.....

Weiß keiner was Schlaues drauf?

Aber das $strReturnhtml = ''; ist doch soweit richtig oder wie?

Mod-Edit: Doppelpost zusammengeführt - Heee, kein Mehrfachposting, schon zum zweiten Mal zusammengefügt... (XraYSoLo)
 
Zuletzt bearbeitet von einem Moderator:
Wenn er auf der Seite stehen bleibt, dann führt er zumindest header() nicht aus.
Wird denn die Mail verschickt? Denn das ist ja das Kommando, was er direkt davor ausführt. Wenn ja, dann weißt Du, dass es am Aufruf von header() liegt. Lass Dir halt mal ausgeben, was er an der Stelle an header übergibt, also z.B. so:
Code:
print("Location: $strReturnhtml");
header("Location: $strReturnhtml");
Dann sollte er "Location: Danke-Kontakt.html" ausgeben und anschließend einen PHP-Fehler mit "cannot modify HTTP-headers" oder so, weil ja vor header() keine Ausgabe erfolgen darf.

Wenn gar nichts zu kommen scheint, guck in den Quellcode, nicht dass die Textausgabe in der gleichen Farbe erfolgt, wie die Hintergrundfarbe.

Und dann checke bitte noch, ob das Script wirklich "Danke-Kontakt.html" heißt (Groß-/Kleinschreibung beachten!) und ob es sich im selben Verzeichnis befindet, wie das Script, in dem der header()-Aufruf ist.

Wenn das alles passt, versuch mal einen absoluten Pfad bei header(), mit oder ohne "http://" und Servername.
 
So....wieder da..sorry, hat nen bissl gedauert.


JA! Er schmeißt mir aus:

Location:
Warning: Cannot modify header information - headers already sent by (output started at /home/u0088629688/public_html/Kontakt2.php:3) in /home/u0088629688/public_html/Kontakt2.php on line 4
Und das sagt mir was? Muss der Header an eine bestimmte Position innerhalb des Codes? Stoße nun an meine Grenzen und komm da auf keine Idee, obwohl ich schon viel probiert habe zuvor.



Wird denn die Mail verschickt?

Yo! Von der Sache her funktioniert das Formular.....^^

Wenn gar nichts zu kommen scheint, guck in den Quellcode, nicht dass die Textausgabe in der gleichen Farbe erfolgt, wie die Hintergrundfarbe.

Ist nicht der Fall

Und dann checke bitte noch, ob das Script wirklich "Danke-Kontakt.html" heißt (Groß-/Kleinschreibung beachten!) und ob es sich im selben Verzeichnis befindet, wie das Script, in dem der header()-Aufruf ist.

Ist geprüft und stimmt überein.

Wenn das alles passt, versuch mal einen absoluten Pfad bei header(), mit oder ohne "http://" und Servername.

Selbst das hab ich getestet - geht nicht :(



Kannst du helfen?


Habe soeben nochmal bei Google was gefunden wo es hieß, das Leerräume vor und nach den <?php Probleme machen können, diese beseitigt.
Ebenfalls hab ich den Header nach ganz oben gesetzt. AKtueller Stand des Codes:

PHP:
<?php
header("Location: ".$strReturnhtml);
$strEmpfaenger = '[email protected]';
$strFrom       = "$_POST[Name] <$_POST[Email]>";
$strSubject    = 'Anfrage über Kontaktformular';
$strReturnhtml = 'Danke-Kontakt.html';
$strDelimiter  = ":\t";

if($_POST)
{
 $strMailtext = "";

 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }
 if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }
mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 exit;
}
?>
Aber weiterhin keine Lösung dieses Problems :(
 
Zuletzt bearbeitet:
Wenn er das
Code:
Location:
Warning: Cannot modify header information - headers already sent by (output started at /home/u0088629688/public_html/Kontakt2.php:3) in /home/u0088629688/public_html/Kontakt2.php on line 4

bei

PHP:
print("Location: $strReturnhtml");
header("Location: $strReturnhtml");

ausgibt, war $strReturnhtml leer!

Und ganz nach oben kannst du den header in deinem Fall nicht packen, da $strReturnhtml dann noch nicht gesetzt ist - womit ich nicht sagen will, dass ein header() nicht am Anfang der Datei, vor einer Ausgabe, gesendet werden muss.

Aber das $strReturnhtml = ''; ist doch soweit richtig oder wie?

Nein, das ist es eben nicht. $strReturnhtml muss einen Dateinamen mit relativem oder absolutem Pfad erhalten.

Versuch es mal so

PHP:
if(get_magic_quotes_gpc())
{
  $strMailtext = stripslashes($strMailtext);
}
mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
header("Location:Danke-Kontakt.html");
exit;

Dabei musst du natürlich sicherstellen, dass Danke-Kontakt.html auch wirklich existiert! Es könnte zu deiner "weißen" Seite kommen, wenn die Datei keinen Inhalt hat.

Wenn das alles nichts hilft, poste nochmal deinen jetzigen Code und sämtliche Informationen und Fehlermeldungen zum aktuellen Stand!
 
Hallo und danke schonmal für die Hilfe!

Aktueller Stand:


php:

PHP:
<?php


$strEmpfaenger = '[email protected]';

$strFrom       = "$_POST[Name] <$_POST[Email]>";

$strSubject    = 'Anfrage-über-Kontaktformular';

$strReturnhtml = 'Danke-Kontakt.html';

$strDelimiter  = ":\t";


if($_POST)
{
 $strMailtext = "";

 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

if(get_magic_quotes_gpc())
{
  $strMailtext = stripslashes($strMailtext);
}
mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
header("Location:Danke-Kontakt.html");
exit; 
}

?>
Im Body:
PHP:
<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post" name="Anfrage" id="Kontakt">
            
<label><span class="Stil1">Name:</span><br /></label>
            <input name="Name" type="text" id="Name" size="40" />
            <br>
<label>Vorname<br></label>
<input name="Vorname" type="text" id="Vorname" size="40" />
            <br />
            <label><span class="Stil1">Telefon<br/></span></label>
            <input name="Telefon" type="text" id="Telefon" size="40" />
            <br />
            <label>Email<br/></label>
            <input name="Email" type="text" id="Email" size="40" />
            <br />
            <br>
            <br />

<p>
  <label>Betreff:
  <select name="Betreff" id="Betreff">
    <option value="Redaktioneller Beitrag">Redaktioneller Beitrag</option>
    <option value="Verletzung Urheberrecht">Verletzung Urheberrecht</option>
    <option value="Link hinzuf&uuml;gen">Link hinzuf&uuml;gen</option>
    <option value="Allgemeine Anfrage" selected>Allgemeine Anfrage</option>
      </select>
  </label>
</p>
<p><span class="Stil6">Meine Nachricht</span><br />
  <label>
  <textarea name="Meine Nachricht" cols="60" rows="8" id="Meine Nachricht"></textarea>
  </label>
</p>
<label><br />
    </label>
<p>
            <input type="submit" value="Senden" />
            <input type="reset" value="Zurücksetzen" />
    </p>
  </form>




Funktioniert leider weiterhin nicht!





1. Danke-Kontakt.html zu 100% vorhanden und auch aufrufbar - somit korrekt!

2. Selbst mit direkter http-Adresse der Danke-Kontakt.html funktioniert es nicht!

3. Bei Angabe einer Seite / Adresse unter
, die gar nicht existiert, ändert sich auch nichts, was bedeuten muss, daß er ja gar nicht erst dazu kommt, das
auszuführen, da er nicht einmal den Fehler ausgibt, daß die angegebene Seite nicht zu erreichen ist (da nicht existend)

Fehlermeldungen unter Angabe von:

PHP:
print("Location: $strReturnhtml");
header("Location: $strReturnhtml");
Location:
Warning: Cannot modify header information - headers already sent by (output started at /home/u0088629688/public_html/Kontakt.php:3) in /home/u0088629688/public_html/Kontakt.php on line 4
----Erscheint bei dem Kontaktformular.

Location:
Warning: Cannot modify header information - headers already sent by (output started at /home/u0088629688/public_html/Kontakt.php:3) in /home/u0088629688/public_html/Kontakt.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /home/u0088629688/public_html/Kontakt.php:3) in /home/u0088629688/public_html/Kontakt.php on line 42
----Erscheint beim drücken des Button's "senden"


Nun schaue ich mir die line 4 und 42 an:

4:
PHP:
header("Location: $strReturnhtml");
Das ist der Teil aus dem:
print("Location: $strReturnhtml");
header("Location: $strReturnhtml");



42:
PHP:
 header("Location:Danke-Kontakt.html");
Tjaaaa....und nu?...ich weiß echt nicht weiter :(

Liegt es eventuell doch am Body-Bereich?
Wie gesagt - rein technisch funktioniert das Formular und auf einer anderen Seite von mir funktioniert dieses Formular inkl. der Weiterleitung auch Problemlos, obwohl es eine exakte 1zu1 Kopie ist des hier dargestellten Codes und es daher für mich auch keinen Sinn ergibt, warum es da geht und hier plötzlich nicht mehr, zumal es am Anfang ging! Providerprobleme sind ausgeschlossen - habe ich geklärt!
 
Zuletzt bearbeitet:
header("Location:Danke-Kontakt.html");
Ich weiß nicht, ob es wichtig ist, dass hinter "Location:" ein Leerzeichen kommt.

Danke-Kontakt.html zu 100% vorhanden und auch aufrufbar - somit korrekt!
Oben ist angegeben, dass es sich im selben Verzeichnis befindet, wie das aktuelle Script. Ist das auch richtig?

Bei Angabe einer Seite / Adresse unter , die gar nicht existiert, ändert sich auch nichts, was bedeuten muss, daß er ja gar nicht erst dazu kommt, das auszuführen
Das lässt sich ja mit einer Ausgabe vor dem Befehl ganz einfach überprüfen, ob er da noch hin kommt.

Fehlermeldungen unter Angabe von:
Beide Male (wichtig ist aber nach dem Absenden) sieht man, dass der String leer ist. Natürlich kann dann auch die Weiterleitung nicht funktionieren.

Tjaaaa....und nu?...ich weiß echt nicht weiter :(
Dein Code, den Du gepostet hast, passt auf jeden Fall nicht zu den Fehlermeldungen. Deswegen können wir das nicht weiter überprüfen.
Fakt ist, wenn nur "Location: " ausgegeben wird, dass die Variable leer ist, und wenn die leer ist, wird natürlich nicht weitergeleitet.
 
Ich weiß nicht, ob es wichtig ist, dass hinter "Location:" ein Leerzeichen kommt.

Habs mal getestet---interessiert ihn nicht^^

Oben ist angegeben, dass es sich im selben Verzeichnis befindet, wie das aktuelle Script. Ist das auch richtig?

ja...auf jeden Fall!

Beide Male (wichtig ist aber nach dem Absenden) sieht man, dass der String leer ist. Natürlich kann dann auch die Weiterleitung nicht funktionieren.

Das verstehe ich nicht - was genau heißt das? Wo muss ich das im Code ändern?

Dein Code, den Du gepostet hast, passt auf jeden Fall nicht zu den Fehlermeldungen. Deswegen können wir das nicht weiter überprüfen.
Fakt ist, wenn nur "Location: " ausgegeben wird, dass die Variable leer ist, und wenn die leer ist, wird natürlich nicht weitergeleitet.

Was soll ich dazu sagen - der Code ist aber der richtige....


Das lässt sich ja mit einer Ausgabe vor dem Befehl ganz einfach überprüfen, ob er da noch hin kommt.

Wieder mit
PHP:
print("Location: $strReturnhtml");
vor
PHP:
$strReturnhtml = 'Danke-Kontakt.html';
?


*verzweifel :sad:
 
Zurück
Oben