2009-03-25 9 views
5

Wenn ich folgendes in den Browser eingeben:PHP-Variablen als Schlüssel erhalten ohne Wert zugewiesen

http://domain.com/script.php?1234 

Und script.php hat das folgende Skript:

$key=array_keys($_GET); 
    echo $key[0]; 

Der Ausgang wird:

(Ich versuche, das hässliche zu beseitigen? R = 1234 und wenn das funktioniert, wird es perfekt sein.)

Meine Frage ist, ist das offiziell richtig oder es ist schlechte Programmierung?

Antwort

4

Sie auch

echo $_SERVER['QUERY_STRING'] 

tun könnten wie für freundlichen URLs zu schaffen, gibt es bessere Möglichkeiten zu TU es.

Siehe z.B .: $_GET and URL Rewriting for PHP

1

Nichts kann offiziell korrekt sein, wenn es für Sie funktioniert, dann verwenden Sie es auf jeden Fall. Btw das Problem damit ist, was Wert ist was zusammen.

Wenn Sie example.com?1234&4567 haben Dann haben Sie zwei Werte ohne Schlüsselname, um Ihnen zu sagen, was was ist.

Aber wenn Sie mit hässlichen URLs weg zu tun, sollten Sie mod_rewrite Blick in

Beginners guide

Another beginners guide

1

Sie diesen Ansatz nicht verwenden sollten. Wenn Sie nicht möchten, dass Ihre Variablen angezeigt werden, können Sie URL rewrite verwenden, damit die URL gut aussieht. Vergessen Sie auch nicht, Ihr $ _GET zu bereinigen.

In Ihrem Beispiel ist 1234 die Variable, die Sie über GET senden, ohne Wert, wenn Sie so aussehen möchten.

1

Das ist richtig. Die Variable heißt 1234 und hat keinen Wert. Das heißt

GET['1234'] == ''; 

Sie könnten auch http://example.com?1234=10 schreiben Dann wäre das Ergebnis

GET['1234'] == '10'; 
+0

besser nutzen Sie die offizielle http://example.com das nächste Mal, siehe http://tools.ietf.org/html/rfc2606#section-3. –

+0

Danke, wusste nicht, dass es einen RFC dafür gab – soulmerge

0

Meine Frage ist, dann ist dies offiziell korrekt oder ist es eine schlechte Programmierung?

Abfrage-Parameter-ohne-Wert ist nicht dokumentiert, um zu funktionieren, obwohl es wahrscheinlich in der Praxis weitergehen wird.

Wenn Sie die gesamte Abfrage-String wollen, ohne es als Parameter Parsen, das Beste, was zu tun wäre, zu sagen, so direkt nur greifen:

echo $_SERVER['QUERY_STRING'] 

(Was auch immer Sie tun, echo nicht direkt tue aber entweder den Wert bereinigen durch zB.konvertiert es in eine ganze Zahl, oder, wenn Sie eine beliebige Zeichenfolge zulassen möchten, Ausgabe es passend für JavaScript, durch Backslash-Escaping-Anführungszeichen und Backslashes.)

Verwandte Themen