Variable übergeben
Joy
- php
0 Wilhelm Turtschan0 Joy0 Wilhelm Turtschan
hi,
ich ein kontaktformular gebastelt. eine eine html seite mit den formularen die per js gecheckt werden. sind diese in ordnung werden die werte an ein mail.php gesendet, die die daten dann zur einer mail verarbeiten und diese mail auch versenden. nun ist es so theoretisch kann man ja nun diese mail.php einfach so aufrufen, und sie sendet dann mails. deswegen möchte ich eine abfrage einbauen. praktisch die formdatei auch als php datei anlegen, dieser dann eine variable geben, und nur wenn diese per post mitübergeben wurde soll die mail.php ihren job machen sonst nicht.
oder vielleicht kann man ja auch der mail.php irgendwie sagen, nur wenn du deinen informationen von der form.html bekommen hast mache deine arbeit.
weiss jemand wie ich das am besten realisieren kann. ich dachte halt per php mit einer versteckten variablen mit einem bestimmten wert, und der wird dann gecheckt in der mail.php, und nur wenn diese i.o. ist dann leg los.
thx
joY
habe d'ehre Joy
ich ein kontaktformular gebastelt. eine eine html seite mit den formularen die per js gecheckt werden. sind diese in ordnung werden die werte an ein mail.php gesendet, die die daten dann zur einer mail verarbeiten und diese mail auch versenden. nun ist es so theoretisch kann man ja nun diese mail.php einfach so aufrufen, und sie sendet dann mails.
Pruefe einfach von wo Deine mail.php aufgerufen wird. Eine formdatei.php generiert auch nur wieder HTML.
man liest sich
Wilhelm
Danke, aber wie mach ich das, ich nicht so die versierte.
joY
habe d'ehre Joy
Danke, aber wie mach ich das, ich nicht so die versierte.
Pruefe, ob in der Variable $_SERVER['HTTP_REFERER'] der Name der Formularseite enthalten ist.
if(ereg('abcdefgh', $_SERVER['HTTP_REFERER']))
// sende Mail ab
else
// zeige einen Fehler
abcdefgh waere deine formdatei.html
man liest sich
Wilhelm
Hallo Wilhelm.
Pruefe, ob in der Variable $_SERVER['HTTP_REFERER'] der Name der Formularseite enthalten ist.
if(ereg('abcdefgh', $_SERVER['HTTP_REFERER']))
Dafür ist aber kein regulärer Ausdruck erforderlich. Ich empfehle daher folgende Variante:
if (isset($_SERVER['HTTP_REFERER']) and [link:http://de2.php.net/manual/en/function.strpos.php@title=strpos]($_SERVER['HTTP_REFERER']', name-der-formularseite') !== false) {
# Mail versenden
} else {
# Fehlerroutine
}
Einen schönen Montag noch.
Gruß, Ashura
habe d'ehre Ashura
if(ereg('abcdefgh', $_SERVER['HTTP_REFERER']))
if (isset($_SERVER['HTTP_REFERER']) and [link:http://de2.php.net/manual/en/function.strpos.php@title=strpos]($_SERVER['HTTP_REFERER']', name-der-formularseite') !== false) {
# Mail versenden
} else {
# Fehlerroutine
}
Ich will ja jetzt nicht Korinthenkacken bzgl. des Codeumfanges, aber da ja heute Lernstunde zu sein scheint, erlaeutere mir doch jetzt noch den Vorteil Deines Vorschlages.
Dafuer gehe ich dann auch brav in die Heia.
man liest sich
Wilhelm
uebrigens meckert er bei den [code] immer die Sprache an. ;-)
Hallo Wilhelm.
Ich will ja jetzt nicht Korinthenkacken bzgl. des Codeumfanges, aber da ja heute Lernstunde zu sein scheint, erlaeutere mir doch jetzt noch den Vorteil Deines Vorschlages.
Er dürfte praktisch immer schneller sein, da der Parser hier eine einfache Zeichenkettenoperation ausführt, anstatt einen regulären Ausdrück anwenden zu müssen. (Benchmarking-Scripts liegen im Archiv herum.)
Einen schönen Montag noch.
Gruß, Ashura
habe d'ehre Ashura
Er dürfte praktisch immer schneller sein, da der Parser hier eine einfache Zeichenkettenoperation ausführt, anstatt einen regulären Ausdrück anwenden zu müssen. (Benchmarking-Scripts liegen im Archiv herum.)
Wieviel laengere Bruchteile von Nanosekunden wird das wohl ausmachen? :-) Natuerlich, wenn 500.000 User gleichzeitig das Formular abschicken ....
man liest sich
Wilhelm
Hallo Wilhelm.
Er dürfte praktisch immer schneller sein, da der Parser hier eine einfache Zeichenkettenoperation ausführt, anstatt einen regulären Ausdrück anwenden zu müssen. (Benchmarking-Scripts liegen im Archiv herum.)
Wieviel laengere Bruchteile von Nanosekunden wird das wohl ausmachen?
Natürlich macht diese eine Stelle im gesamten Programm nicht sonderlich viel aus. Aber du weißt ja: die Summe machts.
Einen schönen Montag noch.
Gruß, Ashura
habe d'ehre Ashura
if (isset($_SERVER['HTTP_REFERER']) and strpos($_SERVER['HTTP_REFERER']', name-der-formularseite') !== false)
und vor allem so:
if (isset($_SERVER['HTTP_REFERER']) and strpos($_SERVER['HTTP_REFERER'], 'name-der-formularseite') !== false)
man liest sich
Wilhelm
Danke Wilhelm,
damit hat es geklappt, man brauch über haupt kein else, wenn man die seite so aufruft wird sie zwar gezeigt aber der php code wird nicht ausgeführt, sprich es wird keine mail generiert und versendet.
so kann man das nicht so einfach mißbrauchen.
thx
habe d'ehre Joy
damit hat es geklappt
Haette ich mir meinen Roman sparen koennen. :-)
man liest sich
Wilhelm
Hallo,
und was ist nun, wie Cheatah schon angedeutet hat, wenn der Referer nicht übermittelt wird?
Mit freundlichem Gruß
Micha
habe d'ehre derletztekick
und was ist nun, wie Cheatah schon angedeutet hat, wenn der Referer nicht übermittelt wird?
Das was ich angebe zu tun, wenn der Ausdruck nicht zutrifft.
Ich zitiere mal von ereg():
Gibt die Länge der übereinstimmenden Zeichenkette zurück, falls in Zeichenkette eine Übereinstimmung mit Suchmuster gefunden wurde oder FALSE, wenn keine Übereinstimmung gefunden wurde oder *wenn ein Fehler aufgetreten ist*.
</cite>
man liest sich
Wilhelm
Hallo Wilhelm Turtschan,
und was ist nun, wie Cheatah schon angedeutet hat, wenn der Referer nicht übermittelt wird?
Das was ich angebe zu tun, wenn der Ausdruck nicht zutrifft.
Also das:
if(ereg('abcdefgh', $_SERVER['HTTP_REFERER']))
// sende Mail ab
else
// zeige einen Fehler
Dann können also alle keine Mail versenden, wenn diese keinen Referer übermitteln.
man liest sich
Ich hoffe ;)
Mit freundlichem Gruß
Micha
Hi,
so kann man das nicht so einfach mißbrauchen.
doch. Warum denkst Du, ändert das etwas?
Du setzt an der falschen Stelle an. Javascript kann lediglich eine Vorabprüfung durchführen. Es ist Aufgabe des Mailscripts, die Daten vor dem Versand (nochmals) zu prüfen und dann ggfls. eine Fehlermeldung nebst dem bereits ausgefüllten Formular zurückzuliefern.
freundliche Grüße
Ingo
Leider ghet beides nicht, noch einer ne Idee ?
joY
habe d'ehre Joy
Leider ghet beides nicht, noch einer ne Idee ?
Ja, zeige Deinen Code. Die Glaskugel hat zur Zeit jemand anderer.
man liest sich
Wilhelm
<?php
$MailTo="info@adstudios.de";
$inhalt = "ALLGEMEIN:\n\nTitel: $anrede\nNachname: $nname\nVorname: $vname\n\nStrasse: $strasse\nPLZ/Ort: $plz $ort\n\nTelefon: $tel\nFAX: $fax\n\nE-Mail: $email\nInternetadresse: $web\n\n";
$inhalt .= "Die Seite kenne ich über:\n";
$inhalt .= "$aufm\n";
$inhalt .= "\n\n\n";
$inhalt .= "ZUSÄTZLICHE ANGABEN:\n\n";
if ($priv) {
$inhalt .= "- Ich bin privater Interessent\n";
}
if ($gewerb) {
$inhalt .= "- Ich bin gwerbliche Interessent\n";
}
if ($priv_gewerb) {
$inhalt .= "- Ich bin sowohl privat als auch gewerblich interessiert.\n";
}
$inhalt .= "\n";
$inhalt .= "Unternehmen: $firma\nFunktion: $funktion\n";
$inhalt .= "\n";
$inhalt .= "Erbitte Rückruf zwecks:\n";
if ($ig) {
$inhalt .= "- Informationsgespräch\n";
}
if ($ba) {
$inhalt .= "- Beratung und/oder Analyse\n";
}
if ($bt) {
$inhalt .= "- Beratung und Termin bei Ihnen im Hause\n";
}
if ($bto) {
$inhalt .= "- Beratung und Termin vor Ort\n";
}
if ($si) {
$inhalt .= "- Spezielle Informationen\n";
}
$inhalt .= "\n";
if ($im) {
$inhalt .= "- Bitte senden Sie mir Informationsmaterial zu.";
}
$inhalt .= "\n\n";
$inhalt .= "Persönliche Nachricht:\n$nachricht";
mail($MailTo, "Kontaktformular Internet", $inhalt, "From: $email");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
habe d'ehre Joy
<?php
$MailTo="info@adstudios.de";
.....
mail($MailTo, "Kontaktformular Internet", $inhalt, "From: $email");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
1.) Du hast keine Abfrage nach der Herkunft eingebaut!
2.) Ich nehme an, dass $gewerb ein Formularfeld ist. Wenn auf dem Server die Einstellung register_globals=off gesetzt ist, erhaeltst Du keinen Wert. Die korrekte Variable wuerde dann $_POST['gewerb'] heissen. Bei register_globals=on empfehle ich Dir dringend eine Nachfrage bei Deinem Provider oder ein Nachlesen der FAQs Deines Providers wie Du diese Einstellung auf OFF setzen kannst.
3.) Ich vermute mal, dass hier im Anschluss irgendeine Dankeseite ausgegeben wird. Versuche den Mischmasch von HTML und PHP zu vermeiden. Ich weiss, es ist diese Einfachheit von PHP dies zu gestatten, aber es fuehrt auch zur Unuebersichtlichkeit. Schreibe entweder Deinen HTML-Teil auch via PHP (echo) oder verwende nach Abarbeitung Deines Skriptes die Funktion header zur Weiterleitung auf eine andere Seite. Ich bevorzuge diese Trennung
4.) Du scheinst den Mailbody irgendwie in Spalten aufzubauen. Sehe Dir dazu mal str_pad an.
if(ereg('abcdefgh', $_SERVER['HTTP_REFERER'])) {
oder if (isset($_SERVER['HTTP_REFERER']) and strpos($_SERVER['HTTP_REFERER'], 'name-der-formularseite') !== false)
//Dein PHP-Code
header("LOCATION: http://www.blub.blub/deinSeite");
}
else {
die('eine Fehlermeldung');
}
man liest sich
Wilhelm
Hi,
Pruefe, ob in der Variable $_SERVER['HTTP_REFERER'] der Name der Formularseite enthalten ist.
Du solltest eventuell noch erwähnen, dass das Script dann weder verlässlich funktioniert, noch Missbrauch ausgeschlossen ist.
Cheatah
habe d'ehre Cheatah
Du solltest eventuell noch erwähnen, dass das Script dann weder verlässlich funktioniert, noch Missbrauch ausgeschlossen ist.
Hundertprozentig weiss ich nur, dass irgendwann die Eigenschaften/Werte aus der Sig vom Kollegen wahsaga auch auf mich zutreffen.
man liest sich
Wilhelm