Hallo,
wenn ich in einem formular-textfeld ausschließen will, dass jemand verlinkungen einträgt, wie mache ich das?
indem du den eingegebenen String prüfst und unerwünschte Eingaben abweist.
Hilft dir das jetzt weiter? ;-)
nein, aber nett gefragt
der folgende teil bei function checkForm() wird nicht anerkannt:
Was meinst du mit "wird nicht anerkannt"? Vermutlich wird die Funktion sogar korrekt ausgeführt - aber ich sehe darin mindestens zwei logische Fehler, deshalb dürfte sie *jede* nur erdenkliche Eingabe abweisen und außerdem bei jedem Aufruf den String "http" ins Eingabefeld eintragen.
if (document.Formular.Text.value = "http" || document.Formular.Text.value = "a href")
Fehler #1: Das Symbol '=' steht für eine Zuweisung, nicht für einen Vergleich. Dieser Code würde also erstmal den String "http" an document.Formular.Text.value zuweisen (und ihn damit in das Textfeld schreiben). Dann stellt Javascript fest, dass das Ergebnis der Zuweisung, also der zugewiesene Wert, im boolschen Sinn true ergibt. Die nachfolgende Oder-Verknüpfung wird daher gar nicht mehr ausgeführt, weil sie das Gesamtergebnis sowieso nicht mehr ändert.
ich hatte dann beim weiteren Ausprobieren so '==' geschrieben, also weiter hier:
Fehler #2: Du prüfst -wenn wir mal den richtigen Operator '==' annehmen- nur auf exakte Übereinstimmung. Wenn "http" aber nur ein Teil der Eingabe ist, wird deine Prüfung nicht anspringen. Du musst also überprüfen, ob der unerwünschte Ausdruck *im String enthalten* ist, nicht unbedingt, ob er mit dem String identisch ist. Schau dir mal die Methoden des String-Objekts an. Für diesen Fall dürfte vor allem indexOf() interessant sein.
das kann ich nicht auf meine Frage übertragen, denn das, was du unten schreibst, stimmt
Und dann noch etwas Generelles: Die beiden Muster, auf die du prüfst, sind keineswegs eindeutige Merkmale für Links. Okay, es ist zwar unwahrscheinlich, dass "http" im normalen Text vorkommt; aber bei der Eingabe "cdibgelhttpxgtfash" würde deine Prüfung auch ansprechen - und das ist ganz bestimmt kein Link. Dagegen würde "<a title='weiter' href='...'>" gar nicht beanstandet. Überlege dir also, wie deine Vergleichsmuster eindeutiger werden.
wenn ich nur http ins Textfeld schreibe, wird das tatsächlich als Fehler gerechnet, aber schon, wenn ich httpa schreibe, lässt sich das Formular ohne weiteres absenden
Und warum willst du überhaupt die Eingabe von Links oder URLs verhindern?
Das soll die Art Spamschutz sein, die ich noch beherrsche. Das Formular sitzt auf der Hoempage eines Kunden, und ich frage so ab:
function checkForm()
{
if (document.Formular.Anrede.value == "")
{
alert("Bitte geben Sie Ihre Anrede an!");
document.Formular.Anrede.focus();
return false;
}
if (document.Formular.Anrede.value == "a href")
{
alert("Bitte geben Sie Ihre Anrede an!");
document.Formular.Anrede.focus();
return false;
}
if (document.Formular.Name.value == "")
{
alert("Bitte geben Sie Ihren ganzen Namen an!");
document.Formular.Name.focus();
return false;
}
if (document.Formular.Strasse.value == "")
{
alert("Bitte geben Sie Ihre Strasse an!");
document.Formular.Strasse.focus();
return false;
}
if (document.Formular.Ort.value == "")
{
alert("Bitte geben Sie Ihren Wohnort an!");
document.Formular.Ort.focus();
return false;
}
if (document.Formular.eMail.value == "")
{
alert("Bitte geben Sie Ihre eMail-Adresse an!");
document.Formular.eMail.focus();
return false;
}
if (document.Formular.eMail.value.indexOf('@') == -1)
{
alert("Das ist keine gültige eMail-Adresse!");
document.Formular.eMail.focus();
return false;
}
if (document.Formular.Telefon.value == "")
{
alert("Bitte geben Sie Ihre Rufnummer an!");
document.Formular.Telefon.focus();
return false;
}
if (document.Formular.Umfrage.value == "spam")
{
alert("Bitte teilen Sie uns mit, wie Sie auf uns aufmerksam geworden sind.");
document.Formular.Umfrage.focus();
return false;
}
if (document.Formular.Text.value == "http" || document.Formular.Text.value == "a href")
{
alert("Bitte keine Verlinkungen eintragen.");
document.Formular.Text.focus();
return false;
}
}
Bis jetzt hat die Umfrageliste (6 Menupunkte zum Auswählen)ganz gut verhindert, dass zuviel Spam kam, aber es kommt natürlich doch was durch. Vor allem die Textfelder sind voller Links und nerven den Kunden. Ich beherrsche kein PHP, darum war das meine Art...
So long,
MartinPS: Nach dem Absenden des Formulars wird die Eingabe serverseitig hoffentlich nochmal geprüft, oder? Denn Javascript kann ja leicht manipuliert oder deaktiviert werden ...
ja, habe ich gemerkt
Danke für Deine ausführliche Antwort! Ich muss weitersuchen, wie ich es mit meinen Möglichkeiten noch hinbekomme
Christiane
Christiane