2012-11-09 14 views
12

Eventuali duplicati:
Undefined variable problem with PHP functionerrore Variabile non definita in PHP file include

Qualcuno può dirmi il motivo per cui continuo a ricevere messaggi di errore variabile non definiti nel mio PHP includono file?

<?php 

$page = 1; 

if (isset($_REQUEST['page'])) { 
    $page = $_REQUEST['page']; 
} 

function phpRocks() { 
    require("includes/dostuff.php"); 
} 

if ($search) { 
    phpRocks(); 
} 

?> 

Poi nel dostuff.php:

<?php echo $page; ?> 

Questo è l'errore che sto ricevendo:


Avviso: Undefined variable: pagina in /dostuff.php on line

Attin down elettori/chiudi chiudi: non mostra alcuno sforzo di ricerca? Come mai? Cos'altro avrei dovuto aggiungere? Sono stato fermato per mezz'ora e non riesco a trovare altri post che rispondano a questa domanda. Devo essere un esperto di PHP per poter inviare domande (quindi non invierò alcuna domanda!) ??

+2

portata variabile. Si sta dichiarando nell'ambito globale, ma si apre il modello da una funzione con il proprio ambito var locale. – mario

+0

sei sicuro che '$ page' sta per essere impostato? – sgroves

+1

Dove viene chiamato 'phpRocks()'? –

risposta

9

mario ce l'ha. A questo scopo:

function phpRocks() { 
    global $page; 

    require("includes/dostuff.php"); 
} 
+2

Era proprio quello di cui avevo bisogno. Grazie! – Zoolander

+0

Leggi su scope Zoolander, ecco il tuo problema qui – zomboble

2

aggiungere var globale si funzione come quella

function phpRocks() { 
    global $page; 
    require("includes/dostuff.php"); 
} 
7

Si sta includendo il file all'interno di una funzione. Pertanto l'ambito di tutto il codice incluso è lo scopo della funzione. La variabile $page non esiste all'interno della funzione. Passare in:

function phpRocks($page) { 
    require "includes/dostuff.php"; 
} 

phpRocks($page); 
+5

Perché sono l'unico qui a fare il tifo per l'iniezione piuttosto che gli spaghetti "globali"? – deceze

+1

Tutti gli altri hanno inserito il commento di Mario in un modulo di risposta per la facile reputazione. Sei l'unico che ha effettivamente aggiunto qualcosa di rilevante. –

+0

Non sono sicuro che questa sia la soluzione migliore. '$ page' _should_ essere una variabile globale qui IMO ... è una variabile creata nell'ambito globale che un file incluso deve usare. La chiamata alla funzione non ha nulla a che fare con questo. Inoltre, potrebbe voler passare argomenti "reali" alla funzione in futuro, da utilizzare al di fuori di 'dostuff.php'. Ciò evita la confusione tra i due. – sgroves

1

È necessario dichiarare la variabile al globale come questo:

function phpRocks() { 
global $page;   //set variable to global 
require("includes/dostuff.php"); 
} 
Problemi correlati