Newsgroup: it.comp.www.php
Titolo: sintassi migliore

C'è un modo migliore di scrivere questo:
$sconto = empty($_POST['Sconto']) ? 0 : $_POST['Sconto'];
che non sia utilizzare un if del tipo
if ( !empty($_POST['Sconto']) ) {
    $sconto = 0
} else {
    $sconto = $_POST['Sconto']
}
Grazie, Cristiano

 fatto non succede nulla



  
Le variabli sono una decina, volevo evitare di scrivere decine di righe
uguali. Con la prima sintassi, almeno, ne risparmio un sacco, e non è meno
leggibile.
Cristiano

 non è meno leggibile.
function var_init (&$input_var, &$local_var, $default_value = '') {
	if (!isset ($input_var)) {
		$local_var = $default_value;
	} else {
		$local_var = $input_var;
	}
}
var_init  ($_POST['Sconto'], $sconto, 0);
var_init  ($_POST['Test'], $test, 1);
var_init  ($_POST['Info'], $info, 'none');
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

> function var_init (&$input_var, &$local_var, $default_value = '') {
Scusate l' ignoranza cosa vuol dire la & prima della variabile ?

 $sconto = empty($_POST['Sconto']) ? 0 : $_POST['Sconto'];
Dimmi dov'e' questo sito di e-comm che mi ci fiondo subito, accreditandomi
uno sconto del 99%.
Occhio alla sicurezza.
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it

 Scusate l' ignoranza cosa vuol dire la & prima della variabile ?
RTFM
http://www.php.net/manual/en/functions.arguments.php
-- 
I am what I am, I do what I can


 Occhio alla sicurezza.
Interessante, come faresti o meglio che accorgimenti bisognerebbe adottare?
Io immagino che ti faresti una pagina in locale e useresti gli stessi nomi
dei campi... ma con un controllo della provenienza del form
($_SERVER['HTTP_REFERER'] ) non si risolve il problema?
Come puo` essere a rischio la sicurezza?

 Come puo` essere a rischio la sicurezza?
Il referer viene passato dal browser, quindi e` falsificabile. Basta farsi
un browser (non mozilla, un centinaio di righe di php) che formatta il
form alla meglio e simula che venga dalla pagina originale.
Dati come lo sconto, il prezzo e roba simile non deve mai passare su
Internet, ma stoccato dentro un DB o una sessione.
Bye.


Interessante!
Mamma mia quindi un malintenzionato puo` fare vere bastardate!
Cmq mettere le pagine dei form in https sarebbe uguale?

 Come puo` essere a rischio la sicurezza?
Bisogna conoscere bene l'HTML e l'HTTP. In particolare, capire come
le informazioni che arrivano dal client possono essere completamente
artefatte, e che le informazioni a suo tempo fornite dal server (URL,
parametri HIDDEN, ecc.) possono essere artefatte anche loro.
La soluzione piu' immediata e' quella di tenere conto di questo problema e
farvi fronte mano a mano che si scrive il codice. Questo rallenta molto la
scrittura del codice, bisogna inserire una marea di controlli incrociati
(il codice prodotto deve essere una numero intero, il codice prodotto deve
essere nel DB e corrispondere a un prodotto disponibile alla vendita,
ecc.) e bisogna prevedere adeguate contromisure se qualcosa non quadra.
Questa strada e' molto impervia, e difficilmente si puo' tenere conto
di tutto.
Un'altra soluzione e' dotare i dati riservati di un MAC (message
autentication code) che permette di riconoscere se i dati ritornati dal
client sono artefatti.
Un'altra soluzione ancora e' abbandonare del tutto la tecnica dei dati
che vanno avanti e indietro tra il server e il client e tenerli dentro
alla sessione sul server. Le uniche cose che vogliamo ci ritorni il
client sono: 1) su quale ancora ha fatto clic; 2) su quale bottone ha
fatto clic; 3) che cosa ha scritto nei campi del form. Basta.
Ho piu' volte postato in questo newsgroup alcuni suggerimenti su
implementazioni possibili di questi metodi.
Io credo che il tema di questo thread, vista la frequenza con la quale si
ripresente, starebbe bene nelle FAQ del newsgroup.


 Cmq mettere le pagine dei form in https sarebbe uguale?
E` piu` complicato da implementare (devi crittare la connessione in base
al certificato) ma sostanzialmente e` lo stesso.
https va bene per rendere inacessibili (o quasi) i dati ad estranei
rispetto a client e server, ma non a proteggere il server dal client.
In generale, se tu (server) conosci gia` dei dati sugli oggetti che metti
nella pagina web, non dovresti mai farteli ridire dal client.
Quindi in questo caso dovresti chiedere al client solo la quantita`, il
nome e indirizzo di spedizione e il numero di carta di credito (tutta roba
che non conosci), ma non il prezzo, lo sconto, la descrizione o la
categoria dell'oggetto. Quelli devi prenderteli dal tuo DB per ogni pagina
che li usa.
Bye.

 leggibile.
Usa un ciclo for o foreach.
Byez!
Davide "Design" Muzzarelli