Der beste Weg, ein zufälliges Wort für eine Captcha-Skript in PHP zu erhalten

StackOverflow https://stackoverflow.com/questions/1216010

  •  06-07-2019
  •  | 
  •  

Frage

ich auf einen neuen Captcha-Skript arbeitete und es ist fast abgeschlossen, außer ich eine Liste von Worten zum Beispiel haben möchte sagen sie mal ich eine Liste von 300 5 Buchstaben-Worten, die ich mag würde für den Captcha Bild-Text verwenden .

Was wäre der beste Weg für die Leistung auf einem hohen Verkehr Ort sein mit dieser Liste für sie zu behandeln?

Lesen Sie die Wörter aus einer Textdatei auf jeder Last
Shop in einem Array
andere?

War es hilfreich?

Lösung

eine feste Liste von Wörtern verwenden könnte Ihr Check Captcha schwach machen, da sie die Anzahl der Variationen beschränkt nur auf n ! / ( n - k )! Optionen. Mit n = 300 Wörter und k = 2 verschiedene Wörter pro Captcha wäre es nur 89.700 Optionen sein, egal wie lange die Worte sind.

Wenn Sie eine Folge von vier zufälligen Buchstaben verwenden würden (az) Sie weitere Optionen erhalten (genau n ^ k = 26 ^ 4 = 456.976).

Andere Tipps

Wenn Sie nur 300 hundert Worte wollen von wählen, würde ich sie einfach alle in einem Array in geraden PHP-Code und ziehe eine zufällig aus. Das wäre die beste Leistung.

Die beste Option für die Leistung

  1. Am besten wäre es, setzen Liste von Zufallszahlen im Speicher (APC oder Memcache => google / Stackoverflow Suche nach APC oder Memcache), um die beste Leistung zu erhalten, da Scheibe IO, was machen Ihre Website ist langsam meistens. Dazu sollten Sie eine Box mit genügend Speicher (> = 128 MB) und Sie können Software (APC / Memcache) installieren. Wenn Sie auf einem hohen Traffic Website gute Leistung wollen, sollten Sie bereit sein, zu zahlen !!!

  2. Wenn Sie auf einem Shared-Hosting-Provider sind (aber dann werden Sie nicht die beste Leistung erhalten), dann wäre es am besten, die Worte in einem Array in der gleichen Datei zu setzen, weil jede Aussage erfordert holen wird die Datei von der Platte.

Rückkehr Zufallswort

Wie glücklich die Sie eine Zufallszahl holen können, durch einen einfachen Rand Funktionsaufruf

return ($words[rand(0, count($words)-1);

Wo $ Wörter ist das Array mit allen Wörtern.

VPS-Hosting

Dies sind einige billige VPS-Hosting ich mit Google gefunden, aber ich denke, Sie sollten etwas mehr Forschung tun, um die beste VPS finden für Ihre High-Performance-Hosting-Website.

Anstelle von 300 Worten, Sie könnten einfach eine Zufallszahl generieren und anzuzeigen. Keine Notwendigkeit für eine Liste oder eine Liste laden, oder die Verwaltung der Liste, ....

Wie viele Anmeldungen pro Sekunde brauchen Sie zu umgehen? Dies scheint nicht wie der richtige Ort, um Zeit in der Optimierung zu verbringen. So gut wie jede Art und Weise finden Sie das Zufallswort sollte in Ordnung sein, vor allem, wenn Ihre Wortliste nur 300 Worte sind.

Ich würde beginnen mit einem einfach Textdatei, ein Wort pro Zeile, und nur etwas tut einfach wie

$words = file("wordlist.txt");
return ($words[rand(0, count($word)-1);

und nur, wenn es wirklich erweist mich als Engpass sein würde ich es eine zufällige fseek () oder einen anderen „High Performance“ Trick zu tun ändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top