Pregunta

Tome este código:

<?php
if (isset($_POST['action']) && !empty($_POST['action'])) {
    $action = $_POST['action'];
}

if ($action) {
    echo $action;
}
else { 
    echo 'No variable';
}
?>

Y luego acceder al archivo con? Action = test ¿Hay alguna forma de evitar que la acción $ sea declarada automáticamente por el Get?Aparte de, por supuesto, agregar

&& !isset($_GET['action'])

¿Por qué querría que se declarara la variable por mí?

¿Fue útil?

Solución

Verifique su php.ini para ver register_globals configuración.Probablemente esté encendido, lo quieres quitar.

¿Por qué querría que se declarara la variable por mí?

No lo haces. Es un riesgo de seguridad horrible.Hace que las variables de Entorno, GET, POST, Cookie y Servidor sean globales (Manual de PHP).Estos son un puñado de variables reservadas en PHP.

Otros consejos

Parece register_globals en tu php.ini es el culpable.Deberías desactivar esto.También es un gran riesgo para la seguridad tenerlo puesto.

Si estás en un hosting compartido y no puedes modificar php.ini, puedes usar ini_set() para desactivar Register_globals.

Desactive Register_globals si entiendo su pregunta.Ver http://us2.php.net/manual/en/language.variables.predefinido.php

si no tienes acceso al php.ini, a ini_set('register_globals', false) En el script PHP no funcionará (ya se declaran variables) un .htaccess con:

php_flag register_globals Off

a veces puede ayudar.

Puede probar si todas las variables están declaradas correctamente cambiando el nivel de registro de PHP en PHP.INI a

error_reporting  =  E_ALL 

Su fragmento de código ahora debería generar un AVISO.

En algún momento de la historia de php, tomaron la controvertida decisión de desactivar Register_globals de forma predeterminada, ya que representaba un gran peligro para la seguridad.Le brinda a cualquiera la posibilidad de inyectar variables en su código y crear consecuencias impensables.Esta "característica" incluso se elimina en php6

Si nota que está activado, comuníquese con su administrador para desactivarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top