Zunächst einmal sieht die Idee, maskierte Zeichenfolgen in einer Datenbank zu speichern, seltsam aus. MySQL kann Zeichenfolgen aus beliebigen Zeichen und sogar binäre Sequenzen sicher speichern.
Nun zur Zuordnung von echten Titeln zu hübschen URLs und zurück. Die Idee, den Titel in eine URL-freundliche Zeichenfolge und dann zurück zu konvertieren, ist nicht der übliche Weg, um Ihr Problem zu lösen, da es sehr schwierig ist, eine solche Konvertierung rückgängig zu machen. Der übliche Weg, dieses Problem zu lösen, besteht darin, eine separate Spalte in der Datenbank zu haben, die den Buchtitel enthält, der so geändert wurde, dass er URL-freundlich ist. Auch Werte in diesen Spalten sollten eindeutig sein. Die Tabelle könnte so aussehen:
+-----+-----------------------------+----------------------------+
| BID | book_title | book_title_url |
+-----+-----------------------------+----------------------------+
| 1 | Why Can't I Be You: A Novel | why-can-t-i-be-you-a-novel |
+-----+-----------------------------+----------------------------+
Sie sollten Ihre Tabelle nach diesen Spalten indizieren und sie anstelle von book_title
verwenden in der SQL-Abfrage in Ihrer viewbook.php
Skript wie folgt:
SELECT * FROM books WHERE book_title_url='$booktitle'
Wobei $booktitle
enthält den über $_GET['booktitle']
erhaltenen Buchtitel und ordnungsgemäß maskiert, um SQL-Einschleusungen zu verhindern.
Ihre hübschen URLs sehen also so aus:http://www.example.com/title/why-can-t-i-be-you-a-novel
und sie werden von Apache zu etwas wie http://www.example.com/viewbook.php?booktitle=why-can-t-i-be-you-a-novel
umgeschrieben .
Auch dies ist die übliche Art und Weise, wie hübsche URLs normalerweise implementiert werden. hoffe es funktioniert auch bei dir.
Für vorhandene Datensätze können Sie book_title_url
ausfüllen Spalte etwa so:
UPDATE books SET book_title_url=REPLACE(REPLACE(REPLACE(book_title, " ", "-"), ":", "-"), "'", "-");