-
Seccatura PHP con XAMPPScritto daNon Autenticatoil 2012-02-28 16:45:24.0 alle 2012-02-28 16:45:24.0Ho una pagina che include due script, uno dei quali contiene
if ($_GET['c'] != 'no') ...
e l'altro
if ($_GET['r'] == 'net') $r = '.net'; else $r = '.com';
e XAMPP dà i messaggi d'errore
Notice: Undefined index: c in C:\... on line 29
Notice: Undefined index: r in C:\... on line 10
quando la pagina non viene chiamata appendendo ?c=... e ?r=... (anche ?c= senza specificare alcun valore va bene).
Inoltre
Notice: Undefined index: HTTP_REFERER in C:\... on line 14
in corrispondenza di un'istruzione contenente
$_SERVER['HTTP_REFERER']
Sembra che se ?c= qualcosa, anche stringa vuota viene appeso all'URL della pagina $_GET['c'] è definito, mentre se non viene appeso nulla non risulta vuoto ma indefinito.
Online non succede. In cosa il PHP di XAMPP differisce dal PHP online su byethost? È cambiata qualche specifica?-
Re: Seccatura PHP con XAMPPScritto da:
> Notice: Undefined index: c in C:\... on line 29
>
> Notice: Undefined index: r in C:\... on line 10
>
> quando la pagina non viene chiamata appendendo ?c=... e ?r=... (anche ?c= senza specificare alcun valore va bene).
Prima dell'if, dichiara le variabili aventi valore nullo. Qualcosa del tipo:$r = null; if ($_GET['r'] == 'net') { $r = '.net'; } else { $r = '.com'; }
Inoltre, molto importante, usa sempre "{" e "}"
> Notice: Undefined index: HTTP_REFERER in C:\... on line 14
>
> in corrispondenza di un'istruzione contenente
>
> $_SERVER['HTTP_REFERER']
Si vede che il valore non e' definito. Fai un check:if (isset($_SERVER['HTTP_REFERER'])) { ... }
> Online non succede. In cosa il PHP di XAMPP differisce dal PHP online su byethost? È cambiata qualche specifica?
Forse certi errori vengono mostrati nel log, prima finivano nel Nirvana.`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: Seccatura PHP con XAMPPScritto daNon Autenticatoil 2012-02-28 19:17:10.0 alle 2012-02-28 19:17:10.0> > Notice: Undefined index: c in C:\... on line 29
> >
> > Notice: Undefined index: r in C:\... on line 10
> >
> > quando la pagina non viene chiamata appendendo ?c=... e ?r=... (anche ?c= senza specificare alcun valore va bene).
>
> Prima dell'if, dichiara le variabili aventi valore nullo. Qualcosa del tipo:
>
>> $r = null; > if ($_GET['r'] == 'net') { > $r = '.net'; > } else { > $r = '.com'; > } >
Perché? 'r' è un indice e $r una variabile che viene definita in base al valore di $_GET['r']. Il PHP in funzione sui server si comporta come se $_GET['r'] fosse vuoto per r non definito, quello di XAMPP come se fosse non definito. Dovrei probabilmente modificare il controllo inif (isset($_GET['r'])) { if ($_GET['r'] == 'net') { $r = '.net'; } else { $r = '.com'; } } else { $r = '.com'; }
però è una seccatura modificare tutti gli script.
Con PHP 3 ricordo che controllavo sempre le variabili con isset(), poi dev'essermi parso ridondante. Si leggeva anche sul manuale che PHP per Windows era diverso in certe cose, ma se continua ad esserlo in minuzie come queste è un ostacolo alla portabilità.
> Inoltre, molto importante, usa sempre "{" e "}"
Nell'if? La notazione breve dell'if, quando sta tutto su una riga, è citata sul manuale e non dovrebbe essere scorretta.
> Forse certi errori vengono mostrati nel log, prima finivano nel Nirvana.
Potrebbe essere una differenza con PHP per Windows?-
Re: Seccatura PHP con XAMPPScritto da:
> Perché? 'r' è un indice e $r una variabile che viene definita in base al valore di $_GET['r'].
Mi pare di aver capito che $r viene definita solo se $_GET['r'] esiste.
Piu' avanti, quando cerchi di accedere a $r, PHP potrebbe risponderti "ecchecazzo e' $r
?"
> però è una seccatura modificare tutti gli script.
Se tu avessi fatto Alla Maniera Giusta™ sin dall'inizio, non avresti avuto questo problema
> > Inoltre, molto importante, usa sempre "{" e "}"
>
> Nell'if? La notazione breve dell'if, quando sta tutto su una riga, è citata sul manuale e non dovrebbe essere scorretta.
Quando ero ancora un giovane programmatore implume, ho ricevuto l'importantissimo compito di correggere un bug di una classe scritta da $occhiPallati. Dopo ore e ore e ore e tanta frustrazione, ho scoperto che qualcuno ha aggiunto una seconda riga in un if breve:if (giamboFigo) faiQualcosa; faiQualcosaltro;
Ai tempi non esistevano IDE in ordine, e con solo UltraEdit era difficile trovare l'errore. Per un giovane Giambo, poi ...
Da quel giorno sono diventato un talebano
> > Forse certi errori vengono mostrati nel log, prima finivano nel Nirvana.
>
> Potrebbe essere una differenza con PHP per Windows?
Penso piu' a una differenza di configurazione ... Ma non sono esperto in questo campo !`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: Seccatura PHP con XAMPPScritto daNon Autenticatoil 2012-02-29 11:54:24.0 alle 2012-02-29 11:54:24.0> > Perché? 'r' è un indice e $r una variabile che viene definita in base al valore di $_GET['r'].
>
> Mi pare di aver capito che $r viene definita solo se $_GET['r'] esiste.
> Piu' avanti, quando cerchi di accedere a $r, PHP potrebbe risponderti "ecchecazzo e' $r
?"
>
> > però è una seccatura modificare tutti gli script.
>
> Se tu avessi fatto Alla Maniera Giusta™ sin dall'inizio, non avresti avuto questo problema
Stavo pensando, per il futuro, di scrivere tutte le parti di codice usate da più script sotto forma di funzioni definite dentro script da includere.
Solo che potrebbe dare rogne quando una funzione viene definita due volte, devo soppesare vantaggi e svantaggi.
> > > Inoltre, molto importante, usa sempre "{" e "}"
> >
> > Nell'if? La notazione breve dell'if, quando sta tutto su una riga, è citata sul manuale e non dovrebbe essere scorretta.
>
> Quando ero ancora un giovane programmatore implume, ho ricevuto l'importantissimo compito di correggere un bug di una classe scritta da $occhiPallati. Dopo ore e ore e ore e tanta frustrazione, ho scoperto che qualcuno ha aggiunto una seconda riga in un if breve:
>
>> if (giamboFigo) > faiQualcosa; > faiQualcosaltro; >
>
> Ai tempi non esistevano IDE in ordine, e con solo UltraEdit era difficile trovare l'errore. Per un giovane Giambo, poi ...
> Da quel giorno sono diventato un talebano
>
> > > Forse certi errori vengono mostrati nel log, prima finivano nel Nirvana.
> >
> > Potrebbe essere una differenza con PHP per Windows?
>
> Penso piu' a una differenza di configurazione ... Ma non sono esperto in questo campo !
-
Re: Seccatura PHP con XAMPPScritto da:
> Stavo pensando, per il futuro, di scrivere tutte le parti di codice usate da più script sotto forma di funzioni definite dentro script da includere.
> Solo che potrebbe dare rogne quando una funzione viene definita due volte, devo soppesare vantaggi e svantaggi.
Ci fosse una chiara separazione in classi e "packages", come Java ...`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: Seccatura PHP con XAMPPScritto daNon Autenticatoil 2012-02-29 12:30:52.0 alle 2012-02-29 12:30:52.0> > Stavo pensando, per il futuro, di scrivere tutte le parti di codice usate da più script sotto forma di funzioni definite dentro script da includere.

> > Solo che potrebbe dare rogne quando una funzione viene definita due volte, devo soppesare vantaggi e svantaggi.
>
> Ci fosse una chiara separazione in classi e "packages", come Java ...
Se faccio come ho detto potrebbe però anche succedere che quando aggiorno la funzione, ad uno specifico script va bene la vecchia versione, e me ne accorgo solo quando scopro il baco.
-
-
-
-
-
-