Newsgroup: it.comp.www.php
Titolo: nomi input con spazi

Mi sono ritrovato per le mani del codice dove alcuni nomi di campi di 
input hanno uno spazio nel nome (orrore!).
visto che è una cosa nella quale non mi ero mai imbattuto non so bene 
dove cercare il motivo di quello che accade, praticamente mi ritrovo i 
nomi di tali variabili con i gli spazi sostituiti da degli underscore.
insomma un <select name="titolo 1">
mi fa trovare settata $_POST['titolo_1']
Chi fa questa trasformazione ?
Documentazione in merito?
ps: visto che ero all'interno di un FW ho verificato se la cosa accade in 
php liscio, ed è così.

Chi fa questa trasformazione?
Bella domanda.
# ngrep "PUPPA" port 80
interface: eth0 (
150.192.168.16/255.255.255.240
)
filter: ip and ( port 80 )
match: PUPPA
#######
T 
150.192.168.30:2125
 -> 
150.192.168.17:80
 [AP]
  GET /?PUPPA%20PPERA=1 HTTP/1.1..Host: 150.192.168.17..User-Agent:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/2010102
  6 Firefox/3.6.12 (.NET CLR 3.5.30729)..Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8..Accept-Language:
en-us,en-uk;q=0.7,en;q=0.3..Accept-Encoding: deflate,gzip..Accept-Charset:
utf-8,ISO-8859-15,ISO-8859-1;q=0.7,*;q=0.7..Keep-Alive: 115..Connection:
keep-alive....
#######
349 received, 0 dropped
E in un CGI fatto allo scopo ("set"):
MACHTYPE=x86_64-suse-linux-gnu
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/bin:/usr/bin:/sbin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/opt/cross/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/usr/sbin:/opt/xlimage
PIPESTATUS=([0]="0")
POSIXLY_CORRECT=y
PPID=2842
PS4='+ '
PWD=/var/srv/www/cgi-bin
QUERY_STRING=PUPPA%20PPERA=1
REMOTE_ADDR=150.192.168.30
REMOTE_PORT=2171
REQUEST_METHOD=GET
REQUEST_URI='/cgi-bin/test.sh?PUPPA%20PPERA=1'
SCRIPT_FILENAME=/var/srv/www/cgi-bin/test.sh
SCRIPT_NAME=/cgi-bin/test.sh
...ullallah, di trasformazioni ce ne hai ben DUE.
1) Il browser *PUO'* convertire lo spazio, quindi potresti avere " ", %20
   o anche +, quien sabe?
2) A questo punto evidentemente e' il PHP (perche' Apache, vedi caso CGI,
   nao transforma una ceppa di niente) che ti ci mette "_".
Le possibilità sono diverse:
a) Transcodifichi.
	$spaceornotspace = array(
		'input_1'	=> 'input 1',
		...
	);
b) Accetti cosi' com'e'. E' anche piu' pulito.
c) Modifichi ad hoc il parser HTTP di PHP ;-)
d) Ti tocchi.
Leonardo
-- 
Enough, enough!  But, stranger, ere we part,
Glancing farewell to each nefarious bier,
This warning would I beg you take to heart:
There is an end to e'en the worst career!

 d) Ti tocchi.
e) modifichi il sorgente html e metti i nomi alle varibili da cristiano :)
ho scelto la e, che mi pareva meglio .
Grazie dell'interessamento, ora giusto per curiosità vorrei sapere 
deterministicamente che menghia succede e chi lo fa succedere, qualsiasi 
sia il nome della variabile.
Non so bene neanche cosa cercare su google.


nella pagina 
http://it.php.net/manual/en/language.variables.external.php
c'è questa nota:
Note:
Dots and spaces in variable names are converted to underscores. For 
example <input name="a.b" /> becomes $_REQUEST["a_b"].
ciao

 example <input name="a.b" /> becomes $_REQUEST["a_b"].
grande, non ero riuscito a trovarla :)

deterministicamente che menghia succede e chi lo fa succedere
Te l'ho scritto :-) ... prima il browser (" " -> %20), poi PHP (%20 -> _).
