Domanda

Prendi questo codice:

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

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

E quindi accedi al file con? action = test Esiste un modo per impedire che $ action venga automaticamente dichiarata dal GET? Oltre ovviamente ad aggiungere

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

Perché dovrei voler dichiarare la variabile per me?

È stato utile?

Soluzione

Controlla php.ini per l'impostazione register_globals. Probabilmente è acceso, lo vuoi spegnere.

  

Perché dovrei voler dichiarare la variabile per me?

No. È un orribile rischio per la sicurezza. Rende globali le variabili Environment, GET, POST, Cookie e Server (Manuale di PHP) . Queste sono alcune variabili riservate in PHP.

Altri suggerimenti

Sembra che register_globals nel tuo php.ini sia il colpevole. Dovresti disattivarlo. È anche un enorme rischio per la sicurezza averlo.

Se utilizzi l'hosting condiviso e non riesci a modificare php.ini, puoi utilizzare ini_set () per disattivare register_globals.

Disattiva register_globals su off, se capisco la tua domanda. Vedi http://us2.php.net/manual/en/language .variables.predefined.php

se non si ha accesso a php.ini , un ini_set('register_globals', false) nello script php non funzionerà (le variabili sono già state dichiarate) Un .htacces s con:

php_flag register_globals Off

a volte può aiutare.

Puoi verificare se tutte le variabili sono dichiarate correttamente girando il livello di log di PHP in PHP.INI su

error_reporting  =  E_ALL 

Il tuo frammento di codice ora dovrebbe generare un AVVISO.

Ad un certo punto della storia di php hanno preso la controversa decisione di disattivare register_globals di default in quanto si trattava di un enorme rischio per la sicurezza. Dà a chiunque il potenziale di iniettare variabili nel tuo codice, creare conseguenze impensabili! Questa & Quot; caratteristica & Quot; viene persino rimosso in php6

Se noti che è attivo, contatta il tuo amministratore per disattivarlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top