|
 |
|
| Autor |
Nachricht |
EvaMarie Stammuser [User]

Anmeldung: 20.02.05 Beiträge: 34 Wohnort: Remagen
|
Verfasst am: 04.05.2006, 18:20 Titel: Kontaktformular mit PHP - lustige Fehlersuche |
|
|
Sooo... Nochmal bezugnehmend auf Ostern... Hat vielleicht irgendwer noch nicht genug vom Suchen und mag mir hier mal meine Fehler raussuchen? Kann sogar ziemlich sicher versprechen, dass es mehr als einer ist... Sollte doch eigentlich einen Anreiz darstellen, oder?
Neee... Im Ernst: Habe mir den Quelltext für das Formular von irgendner Tutorial-Seite runtergefischt... Aber irgendwie wills nach meiner CSS und XHTML-Anpassung nicht mehr so ganz klappen, wie ich will. (Obwohl ich jetzt nicht weiß, obs vorher überhaupt geklappt hat;o)) Und da ich nicht mal annähernd Ahnung habe, wie PHP funktioniert... Würde mir jemand mal nen Tipp geben, was ich abändern muss, damits läuft?
Stelle euch den Code mal ein... Wäre echt lieb...
Lieber Gruß,
Eva-Marie
Das ganze wird per <?php include("texte/contact_de.php"); ?> in eine andere php-Datei eingebunden. Dann muss ich fürs ändern der einzelnen Inhalte nicht immer in meiner HTML-Struktur rumpfuschen... Falls es daran liegen sollte...
| Code: |
<div>
<?php
function check_email($email) //Emailadresse prüfen (Keine Umlaute etc.)
{
if( !preg_match("/^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}|museum$/i", $email) ) return true;
return false;
}
// Allgemeine Variablen
$name_tag[0] = "Sonntag";
$name_tag[1] = "Montag";
$name_tag[2] = "Dienstag";
$name_tag[3] = "Mittwoch";
$name_tag[4] = "Donnerstag";
$name_tag[5] = "Freitag";
$name_tag[6] = "Samstag";
$num_tag = date( "w");
$day = $name_tag[$num_tag];
$year = date("Y");
$day_num = date("d");
$month = date("m");
$time = (date("H:i"));
$empfaenger = "contact@eva-marie-becker.net"; //Die eigene emailadresse
$subject01 = "Kontaktformular"; //Der Betreff der Email
$subject02 = "Kontaktaufnahme mit Eve-Marie Becker"; //Betreff der Bestätigungsmail
if ($flag==1) //Wenn das Fromular ausgefüllt wurde.
{
//Die Eingaben prüfen
if(!$namer){$fehler="Bitte Namen eingeben<br>";}
if(!$vorname){$fehler.="Bitte Vornamen eingeben<br>";}
if(check_email($email) & $email!="") {$fehler.="Emailadresse ist ungültig<br>";}
if(!$email) {$fehler.="Bitte die Emailadresse eingeben<br>";}
if(!$text) {$fehler.="Bitte eine Nachricht eingeben<br>";}
if($fehler) //Bei Fehlern, Meldung ausgeben
{
$meldung="" .$fehler. "";
unset($flag);
echo "Es sind folgende Fehler aufgetreten: <br/><br/> " .$meldung. "";
}
else //Wenn es keine Fehler gibt kann ja gemailt werden.
{
//Der Body für die Mail
$body01 = "Nachricht gesendet am $day, $day_num.$month.$year um $time:
----------------------------------------------------------------
Vorname : $vorname
Name : $namer
eMail : $email
----------------------------------------------------------------
Nachricht:
$text";
//Body für die Bestätigungsmail
$body02 = "Hallo $vorname $namer!
Ihre Email über das Kontaktformular auf http://www.eva-marie-becker.net ist soeben übermittelt worden. Ich habe folgende Nachricht von Ihnen erhalten:
-----------------------------------------------------------------------------------
Name : $namer
Vorname : $vorname
eMail : $email
-----------------------------------------------------------------------------------
Nachricht:
$text
-----------------------------------------------------------------------------------
Ihre Mail wird so schnell wie möglich bearbeitet.
Liebe Grüße,
Eva-Marie Becker";
//Nun kann gemailt werden
//Erst die Mail an den Webmaster
mail ($empfaenger, $subject01, $body01, "From:$email");
//Dann die Bestätigungsmail
mail ($email, $subject02, $body02, "From:$email");
echo "Die Mail wurde gesendet.";
}
}
if(!$flag) //Formular noch nicht abgesendet
{
?>
<form action="contact_de.php" method="post" enctype="multipart/form-data" name="form" id="form">
<input type="hidden" name="flag" id="flag" value=1>
<div style="position:absolute; top:0px; left:0px;">
Name:
<span style="position:absolute; left: 100px;">
<input name="namer" type="text" id="namer" maxlength="30" size="25" value='<?php echo $namer; ?>'>
</span>
</div>
<div style="position:absolute; top:30px; left:0px;">
Vorname:
<span style="position:absolute; left: 100px;">
<input name="vorname" type="text" id="vorname" maxlength="30" size="25" value='<?php echo $vorname; ?>'>
</span>
</div>
<div style="position:absolute; top:60px; left:0px;">
Email:
<span style="position:absolute; left: 100px;">
<input name="email" type="text" id="email" maxlength="50" size="25" value='<?php echo $email; ?>'>
</span>
</div>
<div style="position:absolute; top:90px; left:0px; width:100px;">
Nachricht:
<span style="position:absolute; left:100px;">
<textarea name="text" cols="50" rows="10"><?php echo $text; ?></textarea>
</span>
</div>
<div style="position:absolute; top:280px; left:457px;">
<input type="submit" name="Submit" value="Senden">
</div>
</form>
<?php
}
?>
</div>
|
|
|
| Nach oben |
|
 |
Metaman Power-Poster [User]


Anmeldung: 20.11.05 Beiträge: 636
|
Verfasst am: 04.05.2006, 18:29 Titel: |
|
|
da wäre es schon vorteilhaft wenn du dazu schreibst was nicht geht....
also syntaxfehler sehe ich da keine.
das einzigste was sehe wäre die Zeile
| Code: | | <form action="contact_de.php" method="post" enctype="multipart/form-data" name="form" id="form"> |
das enctype="multipart/form-data"
kannst Du weglassen, ist meiner Meinung nach nur erfoderlich wenn für Dateiuploads
das hauptproblem wird warscheinlich sein, das wenn Du auf den Senden Buton klickst, das dann nichts pasiert.
wenn das so ist, liegt es daran das Du das per include lädst..
dann kannst du aber ganz einfach bei
form action="contact_de.php"
das contact_de.php weglassen, damit wird dann sozusagen das Formular an sich selbst gesendet.. _________________
Webmaster Lexikon
Schnäppchensuche
Wenn Du einen Clan Sponsor suchst, schreibe mich NICHT an!!!
|
|
| Nach oben |
|
 |
EvaMarie Stammuser [User]

Anmeldung: 20.02.05 Beiträge: 34 Wohnort: Remagen
|
Verfasst am: 04.05.2006, 18:54 Titel: |
|
|
Hmm... Habe die zwei Sachen mal geändert. Tut sich aber nix.
Also wirklich gar nix. Man kann die Formularfelder vollständig und unvollständig ausfüllen, auf absenden klicken, dann leeren sich die Felder und das wars dann auch schon. Es kommt weder ne Bestätigungsmail an, noch die Weiterleitung des Kontaktformulars an mich und Fehlermeldungen bzw die Meldung "wurde versendet" (oder so) gibt er auch nicht aus
Ich habs Testweise mal hier hochgeladen.
|
|
| Nach oben |
|
 |
Metaman Power-Poster [User]


Anmeldung: 20.11.05 Beiträge: 636
|
Verfasst am: 04.05.2006, 19:13 Titel: |
|
|
liegt warscheinlich an deiner PHP Version
denn die verarbeitung der Formulardaten erfolgt ab der Zeile | Code: | | if ($flag==1) //Wenn das Fromular ausgefüllt wurde. |
dein Server ist sicher so geschaltet das man Variablen nicht direkt übergeben kann,
das heißt man müste das $flag in $_POST['flag'] ändern
und auch alle anderen Variablen...
aber wenn es wirklich an dem liegt, gehts auch einfacher
füge mal in der dritten Zeile
also vor dem function check_email
folgenden Code ein
| Code: | foreach($_GET as $getkey => $getvalue) $$getkey = $getvalue;
foreach($_POST as $postkey => $postvalue) $$postkey = $postvalue; |
_________________
Webmaster Lexikon
Schnäppchensuche
Wenn Du einen Clan Sponsor suchst, schreibe mich NICHT an!!!
|
|
| Nach oben |
|
 |
EvaMarie Stammuser [User]

Anmeldung: 20.02.05 Beiträge: 34 Wohnort: Remagen
|
Verfasst am: 04.05.2006, 19:32 Titel: |
|
|
Also einen Teil der Meldungen zeigt er jetzt an... Danke:)
Die Emails sind allerdings noch nicht angekommen und eine Fehlermeldung wird nur angezeigt, wenn man das Nachrichtenfeld nicht ausfüllt, ansonsten erscheint immer die Meldung "Die Mail wurde gesendet". Laut Quelltext sollte das aber ja eigentlich anders sein*am kopf kratz*
|
|
| Nach oben |
|
 |
Metaman Power-Poster [User]


Anmeldung: 20.11.05 Beiträge: 636
|
Verfasst am: 04.05.2006, 19:41 Titel: |
|
|
abwarten...
bei manchen Providern werden solche Mails auch gesammelt und nur einmal pro Stunde oder so verschickt....
ich geh mal davon aus das deine Emailadressen stimmen die Du dafür benutzt hast..
wenn da weiterhin nichts ankommen, dann nimm die die beiden Zeilen für den Mailversand vor | Code: | mail ($empfaenger, $subject01, $body01, "From:$email");
//Dann die Bestätigungsmail
mail ($email, $subject02, $body02, "From:$email"); |
und ändere die in
| Code: | mail("$empfaenger", "$subject01", "$body01", "From:$email\n\n");
//Dann die Bestätigungsmail
mail("$email", "$subject02", "$body02", "From:$email\n\n"); |
_________________
Webmaster Lexikon
Schnäppchensuche
Wenn Du einen Clan Sponsor suchst, schreibe mich NICHT an!!!
|
|
| Nach oben |
|
 |
800XE Bekannter [Mod]


Anmeldung: 24.10.04 Beiträge: 1499 Wohnort: Speyer
|
Verfasst am: 05.05.2006, 02:58 Titel: |
|
|
| Metaman hat folgendes geschrieben: | | Code: | mail("$empfaenger", "$subject01", "$body01", "From:$email\n\n");
//Dann die Bestätigungsmail
mail("$email", "$subject02", "$body02", "From:$email\n\n"); |
|
kann es sein, das der Provider das komisch findet (spamming?) wenn from+to die selbe Adresse ist und die mail deswegen nicht ankommt .....
@Eva
schreib mal vor die mail Befehle ein eche ....
| Code: |
echo("<br>sending #$empfaenger#$email#");
mail("$empfaenger", "$subject01", "$body01", "From:$email\n\n");
//Dann die Bestätigungsmail
mail("$email", "$subject02", "$body02", "From:$email\n\n");
|
_________________
Seien wir realistisch, versuchen wir das Unmögliche!
CMS800 :::::::::: Andy 800XE Zmuda :::::::::
ich bin nicht unhöflich, ich bin binär
|
|
| Nach oben |
|
 |
EvaMarie Stammuser [User]

Anmeldung: 20.02.05 Beiträge: 34 Wohnort: Remagen
|
Verfasst am: 05.05.2006, 14:26 Titel: |
|
|
Hmmm... Alles ausprobiert... Tut sich nix 
|
|
| Nach oben |
|
 |
Tuemmel User [User]


Anmeldung: 01.05.06 Beiträge: 19
|
Verfasst am: 05.05.2006, 23:26 Titel: |
|
|
| Code: | mail ($empfaenger, $subject01, $body01, "From:$email");
//Dann die Bestätigungsmail
mail ($email, $subject02, $body02, "From:$email");
echo "Die Mail wurde gesendet."; |
Hallo,
änader das mal in
if( mail ($empfaenger, $subject01, $body01, "From:$email") &&
mail ($email, $subject02, $body02, "From:$email"))
echo "Die Mail wurde gesendet.";
else{
print "Die Mail wurde nicht gesendet.<br />";
print 'empfaenger:'.$empfaenger.'<br />';
print 'subject1:'.$subject01.'<br />';
print 'text1:'.$body01.'<br />';
print 'text2:'.$body02.'<br />';
print 'subject2:'.$subject02.'<br />';
print 'sender:'.$email.'<br />';
}
und schreib, ob was passiert.
btw. Das Script finde ich übrigens nicht so toll. _________________ Suchmaschinen rank tool auf www.maboom.ch/sales/listing.php
neuer Web Counter auf www.fincy.com
auch als download-Version
Bernd R. Rickert
Casa della Pazienza
ch-6545 Selma
|
|
| Nach oben |
|
 |
EvaMarie Stammuser [User]

Anmeldung: 20.02.05 Beiträge: 34 Wohnort: Remagen
|
Verfasst am: 06.05.2006, 10:35 Titel: |
|
|
Hmmm... Wenn ich das so änder, gibt er das
| Zitat: | Die Mail wurde nicht gesendet.
empfaenger:contact@eva-marie-becker.net
subject1:Kontaktformular
text1:Nachricht gesendet am Samstag, 06.05.2006 um 11:31: ---------------------------------------------------------------- Vorname : cmwspvom Name : awndivoä eMail : info@eva-marie-becker.net ---------------------------------------------------------------- Nachricht: vwniopvwssfv
text2:Hallo cmwspvom awndivoä! Ihre Email über das Kontaktformular auf http://www.eva-marie-becker.net ist soeben übermittelt worden. Ich habe folgende Nachricht von Ihnen erhalten: ----------------------------------------------------------------------------------- Name : awndivoä Vorname : cmwspvom eMail : info@eva-marie-becker.net ----------------------------------------------------------------------------------- Nachricht: vwniopvwssfv ----------------------------------------------------------------------------------- Ihre Mail wird so schnell wie möglich bearbeitet. Liebe Grüße, Eva-Marie Becker
subject2:Kontaktaufnahme mit Eva-Marie Becker
sender:info@eva-marie-becker.net |
aus...
Also wenn du irgendne Seite weißt, wo es nen besseres Script gibt, das sogar direkt funktioniert*lach*, immer her damit. Dann bau ich das um. Ich fand nur an dem hier so toll, dass es da ne Bestätigungsmail gibt. So a la "Der Kunde ist König" 
|
|
| Nach oben |
|
 |
Tuemmel User [User]


Anmeldung: 01.05.06 Beiträge: 19
|
Verfasst am: 06.05.2006, 21:26 Titel: |
|
|
Hast du denn auf dem Server schon mal Mails verschickt?
Vielleicht ist der ja gar nicht dafür konfiguriert.
Ich würde jetzt erst mal schauen, ob denn wenigstens eine der beiden Mails verschickt wurde. _________________ Suchmaschinen rank tool auf www.maboom.ch/sales/listing.php
neuer Web Counter auf www.fincy.com
auch als download-Version
Bernd R. Rickert
Casa della Pazienza
ch-6545 Selma
|
|
| Nach oben |
|
 |
EvaMarie Stammuser [User]

Anmeldung: 20.02.05 Beiträge: 34 Wohnort: Remagen
|
Verfasst am: 11.05.2006, 12:14 Titel: |
|
|
Hmm... Keine Mail verschickt. Und das mit dem Mail verschicken über den Server sollte meines Wissens nach klappen...*grmpf*
|
|
| Nach oben |
|
 |
|
|
 |
|
Alle Zeiten sind GMT + 1 Stunde
|
| Seite 1 von 1 |
|  |