PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kontaktformular


Steffi_P
29.03.2006, 17:34:40
Hallo,

Ich bin ein absoluter php-Neuling und habe es nach einigem Herumprobieren endlich geschafft,
ein eigenes Kontaktformular zu programmieren.

Mein Problem: Auf meinem Laptop funktioniert alles bestens, aber wenn ich die Seite auf einem
anderen Rechner betrachte, passiert folgendes:

Sobald auf den Senden-Button geklickt wird, obwohl noch nicht alle Formularfelder ausgefüllt sind,
verschwindet das komplette Formular und es erscheint eine weiße Seite. Normalerweise sollte in
dieser Situation über dem Formular die Meldung erscheinen “Bitte xy ausfüllen“. Wie gesagt, auf
meinem Laptop funktioniert alles…
Sind alle Felder ausgefüllt, funktioniert die Übertragung der Formulardaten übrigens.

Hier mein Skript:

<?php
$submit= $_POST['submit'];
$name= $_POST['name'];
$email= $_POST['email'];
$text= $_POST['text'];

//testen, ob das Formular abgeschickt wurde
if ($submit=="abschicken")
{
//Entfernen von Leerzeichen
$name=trim ($name);
$email=trim ($email);

//Testen, ob alle Felder ausgefüllt wurden und ggf. Fehlermeldungen ausgeben
//und $submit löschen, damit das Formular erneut angezeigt wird
if (!$name AND $email AND $text)
{echo "Bitte geben Sie Ihren Namen an!"; unset($submit);}
if (!$email AND $name AND $text)
{echo "Bitte geben Sie Ihre Email-Adresse an!"; unset($submit);}
if (!$text AND $name AND $email)
{echo "Bitte geben Sie Ihre Nachricht an!"; unset($submit);}
if (!$text AND !$name AND !$email)
{echo "Bitte geben Sie Ihen Namen, Ihe Email-Adresse und Ihre Nachricht an!"; unset($submit);}
if (!$name AND !$email AND $text)
{echo "Bitte geben Sie Ihren Namen und Ihre Email-Adresse an!"; unset($submit);}
if (!$name AND !$text AND $email)
{echo "Bitte geben Sie Ihren Namen und Ihre Nachricht an!"; unset($submit);}
if (!$email AND !$text AND $name)
{echo "Bitte geben Sie Ihre Email-Adresse und Ihre Nachricht an!"; unset($submit);}
}
?>

<?php
//Testen, ob alle Felder ausgefüllt wurden. Wenn ja, die Email vorbereiten und versenden
if ($name AND $email AND $text)
{
//den Nachrichtentext der Email für HTML-Mail zusammenbauen
$message="<html><body>";
$message.="<p>Name: ";
$message.=$name;
$message.="<br>Email: ";
$message.=$email;
$message.="<br>Nachricht: ";
$message.=$text;
$message.="</b></p></body></html>";

//den Header der Email erstellen
$header="\n Content-Type: text/html";

//Email versenden. Wenn kein Fehler auftritt, wird eine Erfolgsmeldung ausgegeben, andernfalls eine Fehlermeldung
if (mail("info@stephaniepankalla.de", "Email von meiner Website", $message, $header))
{
//Erfolgsmeldung ausgeben
echo "<strong><br>Vielen Dank f&uuml;r Ihre Nachricht!</strong><br><br>Ich werde mich schnellstm&ouml;glich bei Ihnen melden.";
}
else
{
//Fehlermeldung ausgeben
echo "<strong>Die Informationsübermittlung ist fehlgeschlagen, bite versuchen Sie es später noch einmal.</strong>";
//$submit löschen, damit das Formular erneut angezeigt wird
unset($submit);
}
}

if (!$submit)
{
?>
<div id="formular">
<form action="kontakt.php" method="post">
<input type="hidden" name="sent" value="1">
<fieldset><legend>Ansprechpartner</legend>
Name<br><input type="text" name="name" value="<?php echo $name; ?>" size="20"><br>
Email<br><input type="text" name="email" value="<?php echo $email; ?>"size="20">
</fieldset>
<fieldset id="nachricht"><legend>Text</legend>
Ihre Nachricht<br><textarea input type="text" name="text" rows="10" cols="40"></textarea>
</fieldset>
<fieldset id="senden"><legend>Mail senden</legend>
<button type="submit" name="submit" class="submit" value="abschicken" >Senden</button>
</fieldset>
</form>
</div>

Das Formular findet ihr unter www.stephaniepankalla.de/kontakt.php

Ich hoffe, ihr könnt mir weiterhelfen!

Vielen Dank und Grüße,
Steffi

Heinrich
29.03.2006, 18:02:35
Hi Steffi,

nur mal auf den ersten Blick (auf den unteren Teil des Scripts):
if (!$submit)
{
?>
Da geht's dann mit HTML weiter. Wieso sollte PHP diese if-Bedingung auch richtig ausführen, wenn es gleich beendet wird (?>), bevor was kommt. Wenn's nicht beendet wäre, würde es überigens meckern, weil die "{" nirgends abgeschlossen wird. Oder fehlt da nur was in deinem Posting?

Gruß aus Darmstadt
Heinrich

Steffi_P
30.03.2006, 10:08:42
Hi Heinrich,

Sorry, ich habe im Posting den schließenden php Tag vergessen. In meinem Skript steht nach dem HTML-Teil:
<php
}
?>

Grüße
Steffi

z0iD
30.03.2006, 13:05:38
@Heinrich:
wieso? folgende codes haben doch das gleiche ergebniss:

<?
if ($bla)
{?>
hello world!
<?}

und

if ($bla)
{
echo "hello world!";
}

Heinrich
30.03.2006, 23:20:28
Hi Steffi,

dann bringt mir auch das Fernrohr keinen Fehler. Also du testest das von verschiedenen PC's auf dem (gleichen) Server? Vielleicht könnten dann Browsereinstellungen (Cache, klingt aber nicht überzeugend) verschieden sein.

Mit dem unset() habe ich noch nichts probiert. Ich biete halt alternativ einen Link an, um zurück zu kommen (hier halt, die gleiche Seite neu zu laden).

Wenig Erhellendes - sorry.

Viele Grüße
Heinrich

z0iD
30.03.2006, 23:43:09
ich bin grad dabei nochmal nach dem fehler zu suchen (habe heute mittag schon einemal einen blick drauf geworfen aber nix hilfreiches gefunden, daher nicht soviel gepostet ... allerdings erstmal zwei dinge vorweg...
bitte bitte editier deinen post und pack da [ P H P ] und [ / P H P ] tags drum ... dann kann man das besser lesen.

der fehler könnte hiermit zusammenhängen (warum es auf dem client geht und auf dem anderen nicht ist mir dennoch schleierhaft):
?>

<?php
ich bin nicht mehr echt sicher was das betrifft aber ich meine mich erinnern zu können dass php dazwischen die variablen freigibt ... nimms doch mal raus ...

sorry mehr seh ich jetzt erstmal auch nicht, vllt morgen ;)

Opendix
31.03.2006, 01:23:17
hmm.... ich glaub ich hab das problem nicht verstanden...
also wenn ich auf deine seite gehe, dann funktioniert das formular so wie du das oben beschrieben hast... füllt man nicht alle felder aus kommt ein fehler und das formular, füllt man alle aus so kommt formular versendet bla bla...

wo liegt den das Problem? :S

einzig was nicht funktioneirt ist, dass wenn man namen oder email leer lässt, dass dann wohl der fehle rkommt aber der eingegebene text verloren geht!

Heinrich
31.03.2006, 17:27:05
Tja, bei mir funktioniert es auch (müsstest eine Nachricht von mir haben).

Gruß
Heinrich

Steffi_P
01.04.2006, 10:36:22
Danke für eure vielen Posts!

@ Opendix:
Mein Problem ist, dass diese Fehlermeldung (wenn nicht alle Felder ausgefüllt sind) nicht immer und nicht auf allen Rechnern erscheint. Du scheinst einer von den glücklichen zu sein, bei denen es funktioniert... ;-)

@ Heinrich:
Ja, ich teste das Formular von verschiedenen PC´s auf dem gleichen Server. Auf manchen PC´s funktioniert es, auf anderen nicht.
Erscheint bei dir die Fehlermeldung, wenn du nicht alle Felder ausfüllst?
Deine Nachricht ist übrigens angekommen=)

Also wenn es bei euch beiden funktioniert, dann liegt es vielleicht wirklich einfach an den Browsereinstellungen von meinem Testrechner...?

Opendix
01.04.2006, 12:01:49
es kann nicht sein, dass verschiedene clients andere meldungen bekommen... das script läuft ja auf dem server... :S

Steffi_P
01.04.2006, 15:02:52
Könnte es sein, dass es ein irgendein Windows Problem ist? Ich hab´s auf zwei Windows PC´s probiert und bei beiden funktioniert es nicht. Auf meinem Mac klappt dagegen alles prima...

Opendix
01.04.2006, 15:20:55
ach nee... das ist kein windows problem... das ist ein internet-explorer problemm


ich benutze oper 9tp2 da gehts... ie6 gehts net und ich nehm an auf dem mac hast du safari drauf (glaub ich)... komisch...

Heinrich
01.04.2006, 19:57:38
Hi Steffi,

ja, die Fehlermeldung sind alle brav erscheinen. Hab's mit Firefox getestet.

Könnte mir wirklich nur noch vorstellen, dass bei den Browsern, auf denen es nicht funktioniert (leere Seite) der Cache auf 0 gesetzt ist.

Gruß
Heinrich

Steffi_P
02.04.2006, 15:09:01
Vielen Dank nochmal für eure Hilfe! Ich lasse das Formular jetzt einfach so wie es ist. Es funktioniert anscheinend ja doch öfter als ich angenommen hatte.

Opendix
02.04.2006, 17:42:35
Vielen Dank nochmal für eure Hilfe! Ich lasse das Formular jetzt einfach so wie es ist. Es funktioniert anscheinend ja doch öfter als ich angenommen hatte.

öhm naja... ich glaube rund 80% der user benutzen IE d.h. bei 80% der user funktionierts nicht... deine entscheidung *g*

CharlesT
03.05.2006, 09:48:25
Könnte es sein, dass es ein irgendein Windows Problem ist? Ich hab´s auf zwei Windows PC´s probiert und bei beiden funktioniert es nicht. Auf meinem Mac klappt dagegen alles prima...
Ich habe es gerade vom IE unter Win2000 geschickt - keine Fehlermeldung.

Oder sollte ich einen Fehler durch mangelhaftes Ausfüllen produzieren? OK, also nochmal
Richtig: Da wird kein Fehler angezeigt. Deshalb habe ich am iMac auch lieber den Camino laufen.

Was mir gerade am Script auffällt: Du prüfst nicht, ob der entsprechende String leer, also EMPTY() ist. Das kann bei Windows Probleme machen.

stille_quelle
04.05.2006, 16:12:44
Vielen Dank nochmal für eure Hilfe! Ich lasse das Formular jetzt einfach so wie es ist. Es funktioniert anscheinend ja doch öfter als ich angenommen hatte.


Hallo,
kommt ein bisschen spät, bin aber nunmal eben erst auf Euer Problem gestossen (da ich mich zur Zeit mit etwas vergleichbarem rumschlage):

So wie es aussieht ist der Knackpunkt das $submit.
Ich habe mir die Variable eingangs einfach mal ausgeben lassen und festgestellt, dass Ihr Wert nicht "abschicken" lautet (wie vermutet) sondern "Senden"!!

Wenn man also die Zeile//testen, ob das Formular abgeschickt wurde
if ($submit=="abschicken") ändert, und zwar so://testen, ob das Formular abgeschickt wurde
if ($submit=="Senden")
Dann müsste es eigentlich funktionieren.

(Ich arbeite mit IE 6.0)

Serp
04.05.2006, 20:47:21
Vorschlag: Einfach if(isset[$_POST['submit']) überprüfen, sollte eigentlich funktionieren.

conmunich
04.05.2006, 22:52:54
ich hab das formular mal im original auf meinen server übertragen. was soll ich sagen:
es läuft mit allen mir zur verfügung stehenden browsern (firefox, mozilla, opera, konqueror und links)

vielleicht ist es ein serverseitiges problem.

stille_quelle
06.05.2006, 16:52:17
ich hab das formular mal im original auf meinen server übertragen. was soll ich sagen:
es läuft mit allen mir zur verfügung stehenden browsern (firefox, mozilla, opera, konqueror und links)

vielleicht ist es ein serverseitiges problem.


...na ja, also bei mir war es so, dass das beschriebene, fehlerhafte Verhalten mit IE6 eindeutig nachzuvollziehen war.
Wenn man das Formular nicht vollständig ausfüllt, sollte eigentlich eine Fehlermeldung kommen - es kommt aber mit dem Originalskript nur ein weißer Bildschrim!! Aber die Korrektur von mir (s.o.) müsste eigentlich funktionieren.

Da sich der Author aber nicht meldet, scheint das Problem ja sowieso gelöst zu sein :)