Wie generiert man eindeutige URL-Variablen, die mit einem Datenbankeintrag übereinstimmen?

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

Frage

Ich möchte in der Lage sein, URL-Variablen wie diese zu generieren:

http://example.com/195yq
http://example.com/195yp
http://example.com/195yg
http://example.com/195yf

Die Variablen stimmen mit einem MySQL-Eintragssatz überein, sodass ich ihn abrufen kann.Zum Zeitpunkt der Erstellung dieses Datensatzes möchte ich diesen Schlüssel dafür erstellen.

Wie kann ich das machen?Wie geht das am besten?Gibt es bestehende Klassen, die ich nutzen kann?

Vielen Dank an alle

War es hilfreich?

Lösung

Grundsätzlich müssen Sie eine Hash-Funktion von einer Art.

Dies kann SHA-1 seine Funktion, eine MD5-Funktion (als altCogito) oder andere Daten über Sie in der Aufzeichnung und kodiert sie.

Wie viele Datensätze glauben Sie, haben wird? Seien Sie vorsichtig bei der Auswahl der Lösung als eine Hash-Funktion groß genug sein muss, Sie gut zu decken, aber zu groß und Sie erstellen eine größere Datenbank als Sie benötigen. Ich habe verwendet SHA-1 und gestutzt auf 64 oder 32 Bit, je nach Bedarf.

Auch Blick auf REST. Bedenken Sie, dass die URL möglicherweise nicht so geheimnisvoll sein ...

Andere Tipps

Das ist ziemlich einfach sein kann in ein paar Arten erfolgen:

  • Verwenden Sie einen Hash, wie MD5 . (Wäre lang)
  • Base-64 eine bestimmte ID oder ein Stück Daten kodieren

Wenn Sie sich fragen, ob es etwas gibt, dass diese bereits mit MySQL Aufzeichnungen des Fall ist, ich bin nicht sicher, dass Sie etwas als Design-weise zu finden, Daten sind wirklich, wirklich konzeptionell weit weg von dem URLs in Ihre Website, auch in Frameworks wie Grails. Die meisten haben nicht einmal versucht, Front-End- und Datenzugriffsfunktionalität in einem einzigen Stück einpacken.

In welchem ​​Kontext werden Sie dies verwenden?Warum nicht einfach Post-Variablen übergeben?Es ist viel sicherer und ordentlicher.Sie finden die Nummer weiterhin in der URL, z. B. id=195yq, und es gibt eine Möglichkeit, sie auszublenden, indem Sie Ihre php.ini-Datei konfigurieren.

Ich hoffe, das kann Ihnen helfen.

Bitte beachten Sie dies.Wenn Sie Variablen in der Adressleiste übergeben, kann jemand die Variable leicht ändern und auf Informationen zugreifen, auf die er möglicherweise nicht zugreifen soll.

In den Beispielen Sie gab, sieht es aus wie du bist Base64-kodiert den numerischen Primärschlüssel. Das ist, wie ich es tun würde und habe es in der Vergangenheit getan, aber ich bin nicht sicher, es ist besser als die ID in den klaren vorbei, weil Base64-Dekodierung trivial ist.

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