Mir ist dabei klar, dass das vom Absender auch wieder gelöscht werden kann. Daher stelle ich mir vor, dass man die Information "Aufruf von ...." in ein verstecktes Feld (<input type="hidden"....) schreiben könnte.
Nur: Geht das, und wenn ja: Wie???
Ja und nein, das geht mit den hier vorgeschlagenen Methoden nicht, denn:
* JavaScript könnte abgeschaltet sein
* Referrer können unterdrückt werden (machen manche PFWs und wahrscheinlich jeder Browser im Privat-Modus).
* Auch Inputfelder vom Typ "hidden" können manuell verändert, hinzugefügt, entfernt oder sonst was werden, der User entscheidet darüber was er dir sendet und was nicht.
Wenn es also doch nicht "oben drauf" ist kommen die o.g. Vorschläge nicht in Frage, dann ist die einzige(?) sichere(?) Lösung:
Sessions!
Auf den Seiten, die zum Kontaktformular führen erstellst du eine Session. Im Zweifel kann das irgendeine zufällige Zeichenfolge sein, im Grunde gibst du dem Besuch(er) einen internen Namen.
Diese Zeichenfolge speicherst du zusammen mit einem "Verfallsdatum" auf dem Server ab (Datei, Datenbank, Arbeitspeicher... irgendwo) und gibst sie auch dem User mit auf den Weg.
Dem User mitgeben: Entweder via GET indem du die Zeichenfolge einfach in die Link-URLs schreibst oder via POST indem die Links keine Links sondern Formulare sind oder via COOKIE.
Dann gelangt der User zum Kontaktformular. Wenn du die Session per GET oder POST übertragen hast musst du sie wieder irgendwie ins Formular bringen. Als hidden-Input oder u.U. als GET-Parameter im target-Attribut des Formulars.
Der Benutzer füllt das Formular aus und schickt es ab. Der Server nimmt das Formular wie auch die Session-ID entgegen. Prüft ob die Session gültig ist (in seiner Datenbank, Datei, whatever) und falls dem so ist stellt er den Kontakt her (verschickt wahrscheinlich eine Email oder schreibt den Inhalt auch in eine Datenbank) und löscht die Session aus der Datenbank (oder was auch immer). Ist die Session-ID ungültig, z.B. weil der Benutzer sie verändert hat oder von einer unberechtigten Seite aus auf das Kontaktformular gelinkt wurde wird ein Fehler zurück gegeben (du kannst diese Prüfung auch schon beim Aufruf des Formulars durchführen aber du _musst_ sie beim Empfang durchführen).
Sporadisch kannst oder solltest du abgelaufene Sessions aus deiner Datenbank (etc.) entfernen. Kann man auch lassen, aber dann wird sie unnötig voll.
Viele Sprachen bieten spezielle Session-Module, die kannst du dafür nutzen oder alles von Hand machen.
--
sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(