Newsgroup: it.comp.www.php
Titolo: problema variabili $_POST

Salve,
tramite un form ricevo delle variabili, di cui una ad esempio var; se
faccio
$var=stripslashes($var);      
funziona, mi vengono tolti gli \; se invece faccio
$_POST['var']=stripslashes($_POST['var']);
non fa nulla; 
qualcuno sa qual è il problema?
Grazie
Francesco

 Francesco
una versione corretta č:
$var=stripslashes($_POST['var']);
[suppongo] non č possibile settare a mano i valori delle variabili 
superglobali
ciao

superglobali
scritto come sopra funziona, il fatto è che volevo utilizzare la forma
che ho postato prima perché ho bisogno di una funzione che mi
"strippi" tutto l'array insieme e non farlo per ogni elemento
dell'array.
I valori delle variabili superglobali credo si possano cambiare, nei
miei script uso $_SESSION e lo faccio.
Grazie
Francesco

 miei script uso $_SESSION e lo faccio.
Ok, suppongo questa sia una eccezione, ha senso.
In ogni caso non tutte le variabili superglobali sono settabili (pensa a 
$_SERVER).
Ciao
Francesco

Grazie
Se ci pensi è ovvio. 
Che tu possa modificare $_SESSION - ci mancherebbe: se non si
potessero modificare le variabili di sessione le sessioni stesse non
esisterebbero!
Ma il metodo POST invia i dati tramite l'header della pagina. Pertanto
è più opportuno e coerente che i contenuti di $_post non si possano
modificare.
Ciao
Matteo

$_SERVER).
Già, non ci avevo pensato, è ovvio che sia così, come dice anche
Matteo.
Grazie per l'aiuto
Francesco

 non fa nulla
strano, dovrebbe.Non e' che per qualche caso gli arriva la roba escapata
doppiamente (tipo \\pippo) ?
ciao
-- 
oggei
gpg --keyserver 
keys.indymedia.org
 --recv-keys eebb4d0d

$var=stripslashes($var);  
funziona bene (register_globals è on).
Ne abbiamo discusso con SlapHP e Fermat e sembra che $_POST sia una
variabile di sola lettura, tu dici di no?
Ciao
Francesco

 variabile di sola lettura, tu dici di no?
non lo e'.Nessuna variabile e' in sola lettura, altrimenti si
chiamerebbe costante e sarebbe costante, non read only, cmq :)
uno snippet brutto come questo te lo dimostra
[snip]
<?php
	if (count($_POST)) {
		echo "<pre>pria: $_POST[campo]\n\n";
		$_POST['campo'] = stripslashes($_POST['campo']);
		echo "poi: $_POST[campo]\n</pre";
	}
?>
<html><body><form method="post" action="/foo">
<input type="text" name="campo"><input type="submit" value="pressami">
</form></body></html> 
[snip]
ma anche un simpatico :
[snip]
echo '<pre>', $_SERVER['HTTP_HOST'], "\n\n";
$_SERVER['HTTP_HOST'] = 'fagiolo maggico';
echo $_SERVER['HTTP_HOST'], "\n\n";
[snip]
quindi non capisco da dove parta la vostra discussione, ma registro che
nessuno ha nemmeno provato a vedere niente a riguardo ;P
- -- 
oggei
gpg --keyserver 
keys.indymedia.org
 --recv-keys eebb4d0d
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)
iD8DBQE+wiOBZmjYv+67TQ0RAqDvAJ9NTLThOfYZRIXMyXvvXDsSLWQbtACeLx+2
AG0v/ztDsOxXkBr8yzrIbKo=
=cKsO
-----END PGP SIGNATURE-----

nessuno ha nemmeno provato a vedere niente a riguardo ;P
Beh te l'ho detto, usando $var mi funzionava mentre con $_POST['var']
no! Perché?
Grazie del chiarimento
Francesco

 posted this:





Versione php < 4.1 per caso?



4.3.2

 no! Perché?
se ho ragione io, tu sbagliavi qualcos'altro di, probabilmente, banale.
Altrimenti lo script che ti ho mandato non dovrebbe funzionare.
ciao
- -- 
oggei
gpg --keyserver 
keys.indymedia.org
 --recv-keys eebb4d0d
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)
iD8DBQE+w5phZmjYv+67TQ0RApIuAJ9JPW7ClOyc3Y9VxRR2ktb1K/JYYwCfdFgS
OFU7tHFJs0UN9kLlZsWgRu8=
=k31W
-----END PGP SIGNATURE-----

Altrimenti lo script che ti ho mandato non dovrebbe funzionare.
Infatti ne sono convinto che hai ragione tu, ti chiedevo solo se
sapevi quale potesse essere il motivo, e penso anch'io che sia un
errore banale; comunque ho scritto lo script in altro modo e funziona.
Grazie
Francesco

errore banale; comunque ho scritto lo script in altro modo e funziona.
forse l'errore era nella funzione che uso:
function stripslashes_array($arr = array()) {
      $rs = array();
foreach ($arr as $key => $value) {
    $rs[$key]=stripslashes($value);
}
return $rs;
}
e poi facevo
$_POST=stripslashes_array($_POST);
adesso invece faccio:
$post=stripslashes_array($_POST);
e funziona; dov'è l'errore?
Francesco

 <snip>
Anche se il linguaggio lo permette, bisognerebbe evitare queste
orrendita'.
_POST ha un suo significato e contiene quello che viene detto nelle
specifiche, modificarlo e' come cambiare le specifiche, e se, per
caso, il tuo script e' insieme ad altri fatti da altre persone, il
risultato e' che non ci si puo' piu' fidare nemmeno di _POST, _GET e
alla via cosi'.
Ha molto piu' senso creare variabili locali apposta per contenere i
valori 'trattati'.
IMHO
-- 
Email address is protected by fee-based service.
Authorized senders will be white-listed.

valori 'trattati'.
In effetti poi ho fatto cosě (vedi il mio penultimo post)
Francesco

 [snip]
oggei@zoidberg:~$ php
<?
 
function stripslashes_array($arr = array()) {
      $rs = array();
 
foreach ($arr as $key => $value) {
    $rs[$key]=stripslashes($value);
}
 
return $rs;
}
 
$_POST = array(	'pippo' => '\\bubba',
			'cachi' => '\franco',
			'\bli \\blibli');
$_POST = stripslashes_array($_POST);
 
print_r($_POST);
echo "\n";
?>
[ctl-d, ndr]
Array
(
    [pippo] => bubba
    [cachi] => franco
    [0] => bli bli bli
)
continuo a non vedere il problema, la banalita' alla quale mi riferivo
era a proposito di un tuo errore banale di battitura o chissa' che :)
ciao
- -- 
oggei
gpg --keyserver 
keys.indymedia.org
 --recv-keys eebb4d0d
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)
iD8DBQE+w91UZmjYv+67TQ0RAix8AJ94vLO633gaI7QSFpX6KXWgq2LDIgCfV1M+
U9PsUZXWCgH2xqHPqTlJVlc=
=3pJG
-----END PGP SIGNATURE-----

ciao
Ciao
Francesco

 orrendita'.
questo e' opinabile.
ciao
- -- 
oggei
gpg --keyserver 
keys.indymedia.org
 --recv-keys eebb4d0d
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)
iD8DBQE+xP/CZmjYv+67TQ0RAhxmAJ9F0Jy+EEBifkMcdlHSEYWf8G7qNwCfV6I3
sAuD0kuKM33Zx+F8EVlj4Dg=
=Dwav
-----END PGP SIGNATURE-----