2009-03-25 12 views
5

Si entro lo siguiente en el navegador: tiene la siguiente secuencia de comandosphp obtener las variables clave como sin valor asignado

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

Y script.php:

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

La salida será:

1234 

(estoy tratando de acabar con la fea? r = 1,234 y si esto funciona, será perfecto.)

Mi pregunta es, ¿esto es oficialmente correcto o es una programación deficiente?

Respuesta

1

Nada puede ser oficialmente correcto, si funciona para usted entonces, por supuesto, úselo. Por cierto, el problema con eso es comparar qué valor es qué.

Cuando se tiene example.com?1234&4567, entonces tendrá dos valores sin nombre clave que le diga qué es lo que.

Pero si quieres acabar con URL feo, usted debe buscar en mod_rewrite

Beginners guide

Another beginners guide

1

Usted no debe utilizar este enfoque. Si no desea que se muestren sus variables, puede usar URL rewrite para que la URL se vea bien. Además, no olvide desinfectar su $ _GET :)

En realidad, en su ejemplo, 1234 es la variable que envía a través de GET, sin ningún valor, si desea verlo de esta manera.

1

Esto es correcto. La variable se llama 1234 y no tiene valor. Eso significa

GET['1234'] == ''; 

Usted podría también escribir http://example.com?1234=10 A continuación, el resultado sería

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

utilice mejor la http://example.com oficial la próxima vez, ver http://tools.ietf.org/html/rfc2606#section-3. –

+0

Gracias, no sabía que había un RFC para eso – soulmerge

0

Mi pregunta es, ¿es oficialmente correcta o es mala programación?

Query-parameter-without-value no está documentado para funcionar, aunque probablemente continuará en la práctica.

Si lo que desea es tomar toda la cadena de consulta sin necesidad de analizar como parámetros, la mejor cosa a hacer sería decir de manera directa:

echo $_SERVER['QUERY_STRING'] 

(lo que haga, no echo directamente sin embargo! O bien desinfectar el valor por ej.convirtiéndolo en un entero, o, si desea permitir una cadena arbitraria, la salida escapó adecuadamente para JavaScript, mediante comillas salientes y barras invertidas.)

Cuestiones relacionadas