.dsy:it.
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Tech (http://www.dsy.it/forum/forumdisplay.php?forumid=189)
-- [PHP] Undefinied variable (http://www.dsy.it/forum/showthread.php?threadid=14520)


Posted by Flyzone on 26-10-2004 22:52:

[PHP] Undefinied variable

Allora per farla breve, seconda pagina php che scrivo e già mi girano i cosidetti :evil:

prova.php

code:
<html><body> <center> Inserire 2 numeri: <p><table><tr><td align=right> <form action="calcola.php" method="POST"> <p><br><input type="number" name="n1a" size="5"><input type="number" name="n1b" size="5"> <p><input type="submit" value="Invia!"> </form></td></tr></table> </center> </body></html>



file calcola.php
code:
<?php PRINT "Numero, $n1a"; ?>


Risultato: bella pagina con "Numbero, " ma niente numero.
Guardo nei log di apache, mi vedo un bel:
PHP Notice: Undefined variable: n1a in calcola.php on line 2, referer: prova.php

Sarà qualcosa di stupido ma non riesco a vederlo uffa!!! :sighsob:


Posted by holylaw on 26-10-2004 23:04:

hai settato le variabili globali in php.ini?
altrimenti prova con $HTTP_POST_VARS['n1a']

__________________
La mia epoca ed io non siamo fatti l'uno per l'altro:questo è chiaro. Ma è da vedere chi di noi due vincerà il processo di fronte al tribunale dei posteri.
AV MJØDEN VART DU VIS OG KLOK, SÅ DREKKA MER!!!!
Le persone sagge parlano perché hanno qualcosa da dire.
Le persone sciocche perché hanno da dire qualcosa.


Posted by Flyzone on 26-10-2004 23:14:

Originally posted by holylaw
hai settato le variabili globali in php.ini?

Hem :oops:
Ok me lo dico da solo: Flyzone, RTFM!!! :asd:

Grazie!


Posted by DeepBlue on 26-10-2004 23:59:

Originally posted by holylaw
hai settato le variabili globali in php.ini?
altrimenti prova con $HTTP_POST_VARS['n1a']

Attenzione che con le ultime versioni di PHP (> 4.3.2 mi sembra, RTFM), diventa $_POST['n1a']

__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~


Posted by Alf on 27-10-2004 00:00:

Originally posted by DeepBlue
Attenzione che con le ultime versioni di PHP (> 4.3.2 mi sembra, RTFM), diventa $_POST['n1a']


E ovviamente anche $_GET['n1a'] a seconda dei casi :D

__________________
(\ /)
( . .)
c('')('') This is Bunny!
Help her succeed in world domination by copy and pasting her in
your signature.


Posted by korn on 27-10-2004 11:19:

E' meglio non usare mai le globals, nelle ultime versioni di PHP sono disattivate per default perché vulnerabili.


Per la cronaca, nelle ultime versioni di PHP c'è anche l'oggetto $_REQUEST[] che raccoglie indistintamente variabili POST, GET e forse altro, come il Request di ASP.
Gli autori ne sconsigliano l'utilizzo per motivi che non sto a spiegare (potete leggere sul manuale online), ma in certi casi può tornare utile, se usato con coscienza e moderazione :)

__________________
» Collect some stars to shine for you, and start today ‘cause there are only a few. _ (In Flames)
» Don't stop for nothing, it's full speed or nothing! I'm taking down, you know, whatever is in my way! _ ('tallica)
» I am my own god, I do as I please. _ (Pain)
» Ninetynine, ninetynine knives! Ninetynine knives inside! Nobody gets out alive! _ (The Haunted)
Web: http://www.negativesignal.com - ICQ# 171585477 - Death to software patents! And TCPA too! "e uno!", diceva il boia.


Posted by Flyzone on 27-10-2004 13:00:

Originally posted by korn
E' meglio non usare mai le globals, nelle ultime versioni di PHP sono disattivate per default perché vulnerabili.

Vaglielo a dire ai professori che fanno lezione in uni su php :asd:


Posted by korn on 27-10-2004 13:49:

Originally posted by Flyzone
Vaglielo a dire ai professori che fanno lezione in uni su php :asd:


Ah, qualcuno fa lezioni sul PHP?

Comunque, con tutto il rispetto se gli stessi creatori di PHP mi dicono che sono vulnerabili credo più a loro.

__________________
» Collect some stars to shine for you, and start today ‘cause there are only a few. _ (In Flames)
» Don't stop for nothing, it's full speed or nothing! I'm taking down, you know, whatever is in my way! _ ('tallica)
» I am my own god, I do as I please. _ (Pain)
» Ninetynine, ninetynine knives! Ninetynine knives inside! Nobody gets out alive! _ (The Haunted)
Web: http://www.negativesignal.com - ICQ# 171585477 - Death to software patents! And TCPA too! "e uno!", diceva il boia.


Posted by Flyzone on 27-10-2004 17:31:

Originally posted by korn
Ah, qualcuno fa lezioni sul PHP?

Era una lezione e credo ne seguiranno alcune ma ha detto che non insegna a programmare in PHP. Certo che almeno gli esempi farli nel modo giusto :asd:

Beh credo sicuramente anch'io ai creatori, dato che si cerca di abbattare le variabili globali dal 2002 (mi sono informato) :)


Posted by Flyzone on 12-11-2004 18:42:

Mi riaggancio al thread per chiedere alcune cose riguardo il php in silab (il manuale del silab non è più al solito link):
- register_globals sarà su off, giusto?
- si possono usare script perl?
- suggerimenti per non ritrovarsi un progetto che fa uso di sessioni con $_SESSION['variabile'] bloccato quando a casa funziona?


Posted by yeah on 12-11-2004 20:00:

Il manuale di php lo trovi su www.php.net, secondo me il migliore (quello in inglese, quello in italiano è *a pezzi*).

Come, in silab non si possono usare le sessioni?

__________________
?


Posted by korn on 12-11-2004 21:17:

Originally posted by Flyzone
Mi riaggancio al thread per chiedere alcune cose riguardo il php in silab (il manuale del silab non è più al solito link):
- register_globals sarà su off, giusto?


Fai una pagina PHP contenente semplicemente
<? php_info(); ?>
caricala dal browser e ottaerrai la configurazione completa!

Originally posted by Flyzone
- si possono usare script perl?


Dipende se Apache è stato compilato con MOD_PERL, ma non ricordo se in Silab ci sia o meno.

Originally posted by Flyzone
- suggerimenti per non ritrovarsi un progetto che fa uso di sessioni con $_SESSION['variabile'] bloccato quando a casa funziona?


Quando non funziona controlla che siano abilitati i cookies sul browser, altrimenti non può funzionare il controllo della sessione.
Alternativamente PHP è in grado di passare l'ID della sessione direttamente negli URL, come peraltro puoi vedere su questo stesso tipo..... vedi quel s={paccottiglia_varia}? Ecco, è l'ID della sessione passato via GET. Con le giuste opzioni PHP trasforma automaticamente gli URL in quel modo. Controlla il manuale!

__________________
» Collect some stars to shine for you, and start today ‘cause there are only a few. _ (In Flames)
» Don't stop for nothing, it's full speed or nothing! I'm taking down, you know, whatever is in my way! _ ('tallica)
» I am my own god, I do as I please. _ (Pain)
» Ninetynine, ninetynine knives! Ninetynine knives inside! Nobody gets out alive! _ (The Haunted)
Web: http://www.negativesignal.com - ICQ# 171585477 - Death to software patents! And TCPA too! "e uno!", diceva il boia.


Posted by Flyzone on 13-11-2004 00:41:

Originally posted by korn
Fai una pagina PHP contenente semplicemente
<? php_info(); ?>
caricala dal browser e ottaerrai la configurazione completa!

Non è che me lo può fare qualcuno che ha già un account in silab? Prima che riesco ad otternerlo lo finisco il progetto... :P


Quando non funziona controlla che siano abilitati i cookies sul browser, altrimenti non può funzionare il controllo della sessione.

Moment, mi stò incasinando. Ringrazio per i consigli di manuali ma ne ho già a bontà, e forse è quello che mi ha creato confusione....
Se per ogni volume mi cambiano nomi di variabili dicendo di usare le globali salvo poi rimangiarselo io vado in :? TILT.

Non uso i cookies, e non c'è nemmeno il passaggio di parametri negli url (che, se non sbaglio, va un pò contro la sicurezza e deve utilizzare variabili globali no?), eppure il tutto funziona indi presumo che le sessioni stiano in memoria visto che richiamo i dati da $_SESSION e visto che appena chiudo il browser e lo riapro la sessione è morta.
E poi a pensarci...mica posso memorizzare il nomeutente usato per selezionare lato server le pagine da mostrare.....se uno mi modifica il cookie fa quel c***o che gli pare con permessi superiori? Usare l'md5? e che cambia? :pensa:


Posted by ripe on 13-11-2004 09:58:

Originally posted by Flyzone
Non uso i cookies, e non c'è nemmeno il passaggio di parametri negli url (che, se non sbaglio, va un pò contro la sicurezza e deve utilizzare variabili globali no?), eppure il tutto funziona indi presumo che le sessioni stiano in memoria visto che richiamo i dati da $_SESSION e visto che appena chiudo il browser e lo riapro la sessione è morta.
E poi a pensarci...mica posso memorizzare il nomeutente usato per selezionare lato server le pagine da mostrare.....se uno mi modifica il cookie fa quel c***o che gli pare con permessi superiori? Usare l'md5? e che cambia? :pensa:


Anche se non uso Php, mi piacerebbe approfondire un pò questo discorso, magari sentendo il parere di Korn o fabpicca....

__________________
«And if you ever smell christian blood up in the mountains, then get your axe and chop them down!»


Posted by fabpicca on 13-11-2004 10:10:

Originally posted by Flyzone
Non è che me lo può fare qualcuno che ha già un account in silab? Prima che riesco ad otternerlo lo finisco il progetto... :P


Moment, mi stò incasinando. Ringrazio per i consigli di manuali ma ne ho già a bontà, e forse è quello che mi ha creato confusione....
Se per ogni volume mi cambiano nomi di variabili dicendo di usare le globali salvo poi rimangiarselo io vado in :? TILT.

Non uso i cookies, e non c'è nemmeno il passaggio di parametri negli url (che, se non sbaglio, va un pò contro la sicurezza e deve utilizzare variabili globali no?), eppure il tutto funziona indi presumo che le sessioni stiano in memoria visto che richiamo i dati da $_SESSION e visto che appena chiudo il browser e lo riapro la sessione è morta.
E poi a pensarci...mica posso memorizzare il nomeutente usato per selezionare lato server le pagine da mostrare.....se uno mi modifica il cookie fa quel c***o che gli pare con permessi superiori? Usare l'md5? e che cambia? :pensa:


se metti in ogni pagina session_start() , come del resto suppongo tu stia facendo altrimenti il tuo progetto funziona grazie ad eventi ultraterreni allora vai pure tranquillo che l'engine seguirà il tuo utente con tutti i valori di sessione.

Quello che puoi fare però è scaricare il sessionid su un cookie alla fine della sessione di lavoro e ricaricare il sessionid al login in modo da ripristinare la situazione lasciata dall'utente all'ultimo accesso.

Ricordo inoltre che le variabili su cookie viaggiano su $_COOKIES e l'ordine in cui vengono fetchati cookies, GET-POST, Session si può impostare nel php.ini....

__________________
my website?|ubuntu linux|get Firefox|grazie Polonia |bagdad sour

"Come va che non ha le corna e le zampe di Caprone?" gli opposi. "Oh, Giuvà", mi disse il prete "adesso non si usa più.Satana è furbo". (I.Silone, Fontamara)
"Al giorno d'oggi non bisogna essere intelligenti, perchè la gente si offende" (un ubriacone)
"close your eyes / pay the price / for your paradise" (DM) "whatever you want to change/you'd better start changing it in your mind" (Transatlantic)


Posted by Flyzone on 13-11-2004 10:58:

Originally posted by fabpicca
se metti in ogni pagina session_start() , come del resto suppongo tu stia facendo

Esatto, tralasciando la sintassi php è più o meno così:

session_start();
se $_SESSION['username']="" -->Ti devi loggare
altrimenti {
do query_sql = SELECT * FROM users WHERE username = $_SESSION['username'] AND user_level='livello root';
se (query_sql > 0_risultati) allora --> codice x pagina "root"
altrimenti --> codice x pagina "utenti normali"
}
al logout: session_destroy();

Così in ogni pagina. Può andare come logica?


Posted by fabpicca on 13-11-2004 12:28:

Originally posted by Flyzone
Esatto, tralasciando la sintassi php è più o meno così:

session_start();
se $_SESSION['username']="" -->Ti devi loggare
altrimenti {
do query_sql = SELECT * FROM users WHERE username = $_SESSION['username'] AND user_level='livello root';
se (query_sql > 0_risultati) allora --> codice x pagina "root"
altrimenti --> codice x pagina "utenti normali"
}
al logout: session_destroy();

Così in ogni pagina. Può andare come logica?


ad alto livello direi di si!

__________________
my website?|ubuntu linux|get Firefox|grazie Polonia |bagdad sour

"Come va che non ha le corna e le zampe di Caprone?" gli opposi. "Oh, Giuvà", mi disse il prete "adesso non si usa più.Satana è furbo". (I.Silone, Fontamara)
"Al giorno d'oggi non bisogna essere intelligenti, perchè la gente si offende" (un ubriacone)
"close your eyes / pay the price / for your paradise" (DM) "whatever you want to change/you'd better start changing it in your mind" (Transatlantic)


Posted by korn on 13-11-2004 13:30:

Originally posted by Flyzone
Non uso i cookies, e non c'è nemmeno il passaggio di parametri negli url (che, se non sbaglio, va un pò contro la sicurezza e deve utilizzare variabili globali no?), eppure il tutto funziona indi presumo che le sessioni stiano in memoria visto che richiamo i dati da $_SESSION e visto che appena chiudo il browser e lo riapro la sessione è morta.


Sbagliato :)

Tu CREDI di non usare i cookies, in realtà il server scrive l'ID della sessione in un cookie sul client, ed è attraverso tale cookie che, cambiando pagina, lo riconosce e gli riassegna le proprie variabili $_SESSION.

Nel momento in cui chiudi il browser quel cookie muore, quando lo riapri il server crea un'altra istanza con un ID diverso.

ALTERNATIVAMENTE PHP può passare l'ID negli URL.

__________________
» Collect some stars to shine for you, and start today ‘cause there are only a few. _ (In Flames)
» Don't stop for nothing, it's full speed or nothing! I'm taking down, you know, whatever is in my way! _ ('tallica)
» I am my own god, I do as I please. _ (Pain)
» Ninetynine, ninetynine knives! Ninetynine knives inside! Nobody gets out alive! _ (The Haunted)
Web: http://www.negativesignal.com - ICQ# 171585477 - Death to software patents! And TCPA too! "e uno!", diceva il boia.


Posted by korn on 13-11-2004 13:38:

Riporto informazioni utili da www.php.net [ http://it.php.net/manual/en/ref.session.php ]



A visitor accessing your web site is assigned an unique id, the so-called session id. This is either stored in a cookie on the user side or is propagated in the URL.


Ma questo l'avevo già detto........ l'importante è ciò che segue


The session module cannot guarantee that the information you store in a session is only viewed by the user who created the session. You need to take additional measures to actively protect the integrity of the session, depending on the value associated with it.


Come dicevi tu Fly, effettivamente qualcuno può editare il cookie e fare un session hijacking, solo che le possibilità che questo avvenga sono veramente molto risicate, poiché

- dovrebbe cogliere il momento esatto in cui un admin ha una sessione aperta
- dovrebbe in qualche modo recuperare il suo Session ID..... sgamare uno username è molto facile, un numero casuale un po' meno

That's all, folks :)

__________________
» Collect some stars to shine for you, and start today ‘cause there are only a few. _ (In Flames)
» Don't stop for nothing, it's full speed or nothing! I'm taking down, you know, whatever is in my way! _ ('tallica)
» I am my own god, I do as I please. _ (Pain)
» Ninetynine, ninetynine knives! Ninetynine knives inside! Nobody gets out alive! _ (The Haunted)
Web: http://www.negativesignal.com - ICQ# 171585477 - Death to software patents! And TCPA too! "e uno!", diceva il boia.


Posted by Flyzone on 13-11-2004 15:07:

Originally posted by korn
Tu CREDI di non usare i cookies, in realtà il server scrive l'ID della sessione in un cookie sul client, ed è attraverso tale cookie che, cambiando pagina, lo riconosce e gli riassegna le proprie variabili $_SESSION.

Ok, abbiamo trovato il punto che mi crea confusione :asd:
Tu dici che salva in un cookie sul CLIENT.
Allora mi spieghi perchè non trovo un dannato cookie?
Mi spiego: ho cancellato i cookies e cache dal client, mi sono loggato, ritorno nella cartella cookies e non trovo nulla.
Da qui a pensare che siano in memoria il passo è breve...o forse è perchè server e client stanno sulla stessa macchina (la mia)? :pensa:


Posted by unidavide on 13-11-2004 16:21:

Originally posted by Flyzone
Da qui a pensare che siano in memoria il passo è breve

esatto, il browser lo tiene in memoria


All times are GMT. The time now is 07:47.
Show all 21 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.