Escaping Datum Zeichenfolge in URL mit WordPress

Ich erstelle eine WordPress-Seite, die Beiträge anhand einer Datumsvariablen durchsucht, die über eine _GET-Variable festgelegt wird. Ich möchte sicherstellen, dass ich das auf die bestmögliche Weise mache und dass ich die Eingabe korrekt berichtige. Ich habe nicht viel mit dem Desinfizieren von PHP gearbeitet. Hier ist der Code, den ich habe und es funktioniert richtig. Das Format, in dem ich die Variable brauche, ist “Montag, der 17. Dezember 2012”. Gibt es mehr, was ich tun sollte, um die Variable GET zu bereinigen? Lassen Sie es mich wissen, wenn ich etwas weiter erklären muss. Danke im Voraus!

if ( isset ( $_GET['new_date'] ) ) { $display_date =$_GET['new_date']; } else { $display_date = date( 'l F j Y'); } $next_date = date('l F j Y', strtotime('+1 Day', strtotime($display_date) ) ) ; $prev_date = date('l F j Y', strtotime('-1 Day', strtotime($display_date) ) ) ; ?> 

<a class="prev-day" href="https://wordpress.stackexchange.com/questions/76400/escaping-date-string-in-url-with-wordpress/"> <a class="next-day" href="https://wordpress.stackexchange.com/questions/76400/escaping-date-string-in-url-with-wordpress/">

Solutions Collecting From Web of "Escaping Datum Zeichenfolge in URL mit WordPress"

strtotime gibt false zurück, wenn Sie ihm seltsame Informationen geben.

 echo strtotime(' 

Wenn Sie jedoch tun, was Sie tun, und zwei Aussagen verschachteln, erhalten Sie möglicherweise nicht, was Sie erwarten.

 echo strtotime('+1 day',strtotime(' 

Und date gibt den Anfang des Universums zurück, den Tag der Schöpfung - 1. Januar 1970 - wenn man seltsame Daten erhält.

 echo date('1 F j Y',strtotime('+1 day',strtotime(' 

Also, ich glaube nicht, dass Sie wirklich ein Desinfektionsproblem haben, aber es funktioniert vielleicht nicht so, wie Sie es wollen.

Das heißt, ich würde jedes Zeichen entfernen, das nicht in der Datumszeichenkette sein sollte, nur für den Fall. Könnte sein...

 $display_date = preg_replace('/[^A-Za-z0-9+]*/','',$display_date); // assuming that you are encoding the spaces with a "+" 

Das wird einen langen Weg in Richtung lähmender Injektionen bringen, aber Sie werden keine vernünftigen Daten geben.

Ich sehe nirgends, dass du etwas an die DB schickst. Sie sollten Ihre Seitenausgabe nicht bereinigen (obwohl die Bereinigungsausgabe gut ist) und erwarten, dass sie übernommen wird, wenn das Formular verarbeitet oder der Link angeklickt wird. Sie sollten dies kurz vor dem Ausführen der Abfrage bereinigen (und mit prepare ), aber ich sehe diesen Teil des Codes überhaupt nicht.