Ich mache ein Registrierungsformular für eine Website und da bin ich mir sicher alle wird ein bisschen Kauderwelsch in die Eingabe der Geheimen Antwort eingehen (das mache ich selbst), Ich möchte diesen Wert programmatisch testen, um zu sehen, ob es wahrscheinlicher ist um eine gute Antwort zu sein.
Ich habe mir eine Funktion angesehen, die Markov-Ketten (siehe unten) in PHP erzeugt, aber ich Ich weiß nicht, wie man eine Zeichenkette gegen das Array dieser Ketten testen kann, um sie tatsächlich zu erkennen die% Genauigkeit der gegebenen Antwort.
Hat jemand hier etwas ähnliches gemacht? Wie hast du es gelöst oder hast du es gegeben? hoch?
Danke
%Vor%Bearbeiten 2011-02-04:
Ich habe eine einfache Lösung gefunden. Ich glaube, dass die Buchstaben in einem Kauderwelsch höchstwahrscheinlich immer wieder dieselben Buchstaben enthalten. Ich habe diese kleine Funktion entwickelt:
%Vor%Was denkt ihr?
Lassen Sie den Benutzer die geheime Antwort noch einmal eingeben (wie beim Festlegen neuer Kennwörter). Verstecken Sie den eingegebenen Text auch wie bei Passwörtern [input type="password"]. Dies wird es unmöglich machen, die Antwort zu kopieren und in das Feld "Wiederholen" einzufügen. Der beste Ausweg ist also eine geheime Antwort, die für sie Sinn macht.
Ich denke nicht, dass eine algorithmische Art, nach Kauderwelsch zu suchen, sehr genau wäre, weil "Kauderwelsch" relativ ist:)
Obwohl die folgende Technik nicht sehr genau wäre, meiner Meinung nach , könntest du eine Reihe von englischen Regeln sammeln und gegen sie vergleichen.
Der einzige Weg, den ich hier sehe, ist (und auf alle Fälle keine perfekte Lösung) ein System, das bestimmte Flags auslöst, wenn etwas verdächtig ist.
Englisch (und jede Sprache) hat bestimmte Besonderheiten und wenn Sie sehen, dass sie nicht erfüllt werden, könnte dies ein Hinweis auf Kauderwelsch sein.
Ich würde "würde" ein System machen, das Punkte hinzufügt, wenn ein Kriterium erfüllt ist, und nach einigen Punkten würde der Benutzer eine Warnung erhalten.
Einige Beispiele:
Konsekutive Konsonanten:
(Das Punktesystem ist natürlich ein Beispiel!)
Das gleiche gilt für aufeinanderfolgende Vokale .
Sonderzeichen:
Dies sollte einige Punkte hinzufügen, wenn sie angezeigt werden und nicht in der Sprache der Site enthalten sind.
(| # ¢ ∞¬ ÷ "≠) usw.
Da sie Tippfehler wegen Kauderwelsch sein könnten.
Länge:
Nach einer gewissen Länge sollte jeder Buchstabe Punkte hinzufügen. Ein 28-stelliges Wort ist nicht so wahrscheinlich wie ein 7-stelliges.
Dies sind diejenigen, die mir in den Sinn kommen, das ist natürlich keine exakte (oder sogar gute) Wissenschaft.
Du könntest auch ein "Gemeines Kauderwelsch" ausprobieren :
Sie könnten nach Kombinationen suchen wie:
qwerty asdfg zxcvb UIOP oder was auch immer.
Natürlich ist diese letzte völlig zufällig und wird wahrscheinlich sehr wenige Fälle abdecken, aber Sie könnten so viel machen wie Sie wollen.
Das ist also das Beste, was ich jetzt sagen könnte, ich bin mir sicher, dass es viel mehr englische Grammatikregeln und Besonderheiten gibt, die Sie zu Ihrem Vorteil nutzen könnten, aber das wird Ihnen nur eine gewisse Wahrscheinlichkeit geben, also würde ich nicht t mache deine Regeln auf jeden Fall verpflichtend !! auf jeden Fall etwas wie eine Warnung: "Wenn Sie eine völlig zufällige Antwort eingeben, erinnern Sie sich vielleicht später nicht daran" .
Das ist ein sehr komplexes Thema, aber sehr interessante Frage IMO, meine Antwort deckt natürlich nur einen sehr kleinen Teil ab, der einige Antworten wie "ksfjdngssjk" vermeiden würde, obwohl es sehr einfach wäre, ein solches System einzurichten mit PHP und probiere es aus.
Viel Glück !!
Tags und Links php validation markov-chains