hallo,ich habe mal wieder eine frage,
habe ein Shop Installiert, da muss ich safe_mode off und register_globals auf off stellen, dann klappt aber mein Kontaktformular nicht mehr, woran liegt das.
g
topkick
safe_mode
-
-
Ja, moment, wo ist meine geheimnisvolle Code-Kugel schon wieder ... achja, die ist ja auf der letzten Fete kaputt gegangen ... so ein Mist.
Zu Deutsch: Wenn du uns den Code deines Formulars nicht zeigst, dann könnten wir hier auch Samba tanzen, das wär genau so hilfreich.
Aber ich setze einfach mal darauf, dass du einfach $name anstatt [/i]$_POST['name'][/i] genommen hast.
-
natürlich seit Ihr keine Hellseher
hier ist das send Script
=========================
<?php$fehler="";
$absenderemail=trim($absenderemail);
$absenderemail=str_replace(" ","",$absenderemail);
$svorkommen=strrpos($absenderemail, "@");
$svorkommen2=strrpos($absenderemail, ".");
if ($svorkommen==0 OR $svorkommen2==0)
{
$fehler.="Keine richtige Email-Adresse !!!
";
}
if (strlen($absenderemail)<10)
{
$fehler.="Bitte Email-Adresse prüfen
";
}
if (($aname=="ja") AND (strlen($absendername)<6))
{
$fehler.="Bitte Name angeben
";
}
if (($telefon=="ja") AND (strlen($absendertelefon)<6))
{
$fehler.="Bitte Telefonnummer angeben
";
}
if (strlen($absendermitteilung)<10)
{
$fehler.="Bitte im Feld Mitteilung etwas schreiben
";
}
if (strlen($fehler)>1)
{
echo '<font color="#FF0000">Ihre Eingaben sind falsch oder unvollständig !
</font>';
echo $fehler;
echo '<a href="javascript:history.back()">';
echo "Ich möchte meine Angaben vervollständigen";
echo "</a>";
exit;
}
$betreff="Anfrage von ";
if ($aname=="ja")
{
$betreff.=$absendername;
$betreff.=" / ";
}
$betreff.=$absenderemail;
$absendermitteilung=nl2br($absendermitteilung);
$text=$absendermitteilung;
$text.="
";
$text.="Grund der Anfrage:";
$text.=$absendergrund;
$text.="
";if ($aname=="ja")
{
$text.="Im Formular angegebener Name: ";
$text.=$absendername;
$text.="
";}
if ($adresse=="ja")
{
$text.="Im Formular angegebene Adresse: ";
$text.=$absenderstrasse;
$text.=" / ";
$text.=$absenderort;
$text.="
";}
if ($telefon=="ja")
{
$text.="Im Formular angegebene Telefonnummer: ";
$text.=$absendertelefon;
$text.="
";}
$header="From:";
$header.=$absenderemail;
$header.="\r\nContent-Type:text/html";
mail($emailempfaenger, $betreff, $text, $header);
echo '<font size="+4">Versendet</font>
';echo "Danke für Ihren Event er wird in kürze hier erscheinen.
";echo " ";
echo "
";
exit;
?>
hier das Formular Script:
=====================
<?php $emailempfaenger="meine adresse"; $name="ja"; $adresse="ja"; $telefon="nein"; $name=strtolower($name); $name=trim($name); $adresse=strtolower($adresse); $adresse=trim($adresse); echo '<font size="+1">Kontaktformular - Große und Kleine Events</font>
'; echo '<form action="formular-senden.php" method="post" >'; echo '<input type="Hidden" name="emailempfaenger" value="'; echo $emailempfaenger; echo '">'; echo '<input type="Hidden" name="aname" value="'; echo $name; echo '">'; echo '<input type="Hidden" name="adresse" value="'; echo $adresse; echo '">'; echo '<table >'; echo '<tr>'; echo '<td>'; if ($name=="ja") { echo "Ihr Name:"; } echo '</td>'; echo '<td>'; echo '<input type="Text" name="absendername" size="40" maxlength="40">'; echo '</td>'; echo '</tr>'; echo '<tr>'; echo '<td>'; echo "Ihre Email Adresse:"; echo '</td>'; echo '<td>'; echo '<input type="Text" name="absenderemail" size="40" maxlength="80">'; echo '</td>'; echo '</tr>'; echo '<tr>'; echo '<td>'; echo "Event melden:"; echo '</td>'; echo '<td>'; echo '<select name="absendergrund" size="1">'; echo '<option value="event melden">Ihr Event</option>'; echo '</select>'; echo '</td>'; echo '</tr>'; echo '<tr>'; echo '<td>'; echo "Wo-Wann:"; echo '</td>'; echo '<td>'; echo '<textarea name="absendermitteilung" cols="35" rows="10"></textarea>'; echo '</td>'; echo '</tr>'; echo '</table>'; echo '<font size="-2">'; echo ' </font>
'; echo '<input type="Submit" name="" value="Absenden">'; echo '</form>'; ?>g
topkick -
So sollte es Funktionieren:
PHP
Alles anzeigen<?php $fehler=""; $absenderemail=trim($_POST['$absenderemail']); $absenderemail=str_replace(" ","",$absenderemail); $svorkommen=strrpos($absenderemail, "@"); $svorkommen2=strrpos($absenderemail, "."); if ($svorkommen==0 OR $svorkommen2==0) { $fehler.="Keine richtige Email-Adresse !!! "; } if (strlen($absenderemail)<10) { $fehler.="Bitte Email-Adresse prüfen "; } if (($_POST['aname']=="ja") AND (strlen($_POST['absendername'])<6)) { $fehler.="Bitte Name angeben "; } if (($_POST['telefon']=="ja") AND (strlen($_POST['absendertelefon'])<6)) { $fehler.="Bitte Telefonnummer angeben "; } if (strlen($_POST['absendermitteilung'])<10) { $fehler.="Bitte im Feld Mitteilung etwas schreiben "; } if (strlen($fehler)>1) { echo '[b]<font color="#FF0000">Ihre Eingaben sind falsch oder unvollständig ! </font>[/b]'; echo $fehler; echo '<a href="javascript:history.back()">'; echo "Ich möchte meine Angaben vervollständigen"; echo "</a>"; exit; } $betreff="Anfrage von "; if ($_POST['aname']=="ja") { $betreff.=$_POST['absendername']; $betreff.=" / "; } $betreff.=$_POST['absenderemail']; $absendermitteilung=nl2br($_POST['$absendermitteilung']); $text=$absendermitteilung; $text.=" "; $text.="Grund der Anfrage:"; $text.=$_POST['absendergrund']; $text.=" "; if ($_POST['aname']=="ja") { $text.="Im Formular angegebener Name: "; $text.=$_POST['absendername']; $text.=" "; } if ($adresse=="ja") { $text.="Im Formular angegebene Adresse: "; $text.=$_POST['absenderstrasse']; $text.=" / "; $text.=$_POST['absenderort']; $text.=" "; } if ($telefon=="ja") { $text.="Im Formular angegebene Telefonnummer: "; $text.=$_POST['absendertelefon']; $text.=" "; } $header="From:"; $header.=$absenderemail; $header.="\r\nContent-Type:text/html"; mail($_POST['emailempfaenger'], $betreff, $text, $header); echo '<font size="+4">[b]Versendet[/b]</font> '; echo "Danke für Ihren Event er wird in kürze hier erscheinen. "; echo " "; echo " "; exit; ?>
-
Jup, genau wie ich vermutete.
Du hast nun 2 Möglichkeiten.
Entweder du benutzt extract($_POST); oder du schreibst alle Variablen, die vom Formular gesendet werden, das erste Mal in $_POST['variable'] um.
Beispiel:In PHP stehen alle Werte, die mittels POST an das Script übergeben wurden im Array $_POST[] zur Verfügung.
Bei register_globals kann man auch so drauf zugreifen, aber das ist eine Sicherheitslüscke.Ich hoffe du hast verstanden, was ich meine, andernfalls erkläre ich es morgen ausführlicher =)
Edit: Zu spät ...
-
-
Die Antwort von Dark ist eigentlich besser als meine, auch wenn sie später kommt =) Davon hat er mehr gelernt.
die Methode mit extract($_PHP); gefällt mir =) Hätte viel Tipparbeit gespart.
-
Nein, Elvis, aber ich bin knapp 2 Jahre im Forum, da lernt man schon die Probleme anhand der fehlenden Informationen der Fragesteller zu erraten xD
lukasn: extract() ist zwar schön und gut, stellt aber auch ein hohes Sicherheitsrisiko da.
-
Stimmt, man kann ja auch von nem externen Script darauf zugreifen. Naja, ich stoppe meine Offtopic sünden gleich wieder, sonst wird das ein kurzer besuch auf dem Forum
Gute nacht,
-Lukas -
danke erst einmal ich melde mich, wenn es geklappt hat.
g
topkick