Quale codice?

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Questi 2 codici funzionano entrambi, però secondo voi, qual'è meglio?


PHP:
if((isset($_POST['invia']) || !empty($_POST['invia']))){
if ($nome == "") { 
echo "Inserire il Nome"; 
}
else {
$nome;
}
}

PHP:
if((isset($_POST['invia']) || !empty($_POST['invia']))){ 
if ($nome == "") { 
echo "Inserire il Nome"; 
}
 
Ultima modifica:
Ciao, l'else del primo non ha motivo di esistere.
 
scusa criric se intervengo ma, ... bacchettata sulle mie mani se sbaglio,

if((isset($_POST['invia']) || !empty($_POST['invia']))){

provo a leggere quello che hai scritto nell'if,

isset($_POST['invia'] = la variabile può essere impostata ma VUOTA
!empty($_POST['invia'] = la variabile deve essere impostata E deve avere un valore (diverso da una serie di valori che rendono falsa la risposta)

c'è forse qualche contraddizione perchè penso che a te serva controllare la variabile con valore
o comunque una possibile ottimizzazione ....

manuale alla mano,
EMPTY
Determina se una variabile è da considerare vuota.
Una variabile è considerata vuota se non esiste oppure se il suo valore è uguale a FALSE.
empty() non genera un avviso se la variabile non esiste.

da ciò, scriverei,
PHP:
if( !empty($_POST['invia']) ){ 
  if ($nome == "") { 
    echo "Inserire il Nome"; 
}}

ovvero prendi 2 paghi 1
ciao
Marino
 
L'ho modificato. Ho poi visto che togliendo la riga sopra funziona lo stesso, a che serve?

PHP:
if((isset($_POST['invia']) || !empty($_POST['invia']))){ 
if ($nomeG == "") { 
echo "Inserire il Nome"; 
 }
  }
PHP:
if ($nomeG == "") { 
echo "Inserire il Nome"; 
 }
 
@ marino
hai ragione ! empty() controlla anche che la variabile sia settata.
Non l'ho usato mai da solo nei miei script, ma, inizierò.
In tempo di crisi è bene risparmiare anche sul codice :evil:
@Shyson
bisogna vedere quando e come imposti $nomeG
 
@ marino
hai ragione ! empty() controlla anche che la variabile sia settata.
Non l'ho usato mai da solo nei miei script, ma, inizierò.
In tempo di crisi è bene risparmiare anche sul codice :evil:
@Shyson
bisogna vedere quando e come imposti $nomeG

Ho l'if sopra i codici e poi lo richiamo li. In un altro form non c'è e funziona lo stesso


PHP:
if(isset($_POST['invia'])) {
$_SESSION['nomeG'] = $_POST['nomeG'];

if((isset($_POST['invia']) || !empty($_POST['invia']))){ 
$nomeG = htmlspecialchars(addslashes(ucfirst(trim($_POST['nomeG']))));
}

if((isset($_POST['invia']) || !empty($_POST['invia']))){
if ($nomeG == "") { 
echo "Inserire il Nome"; 
 }
  }
   }


Nel form ho questo

PHP:
 <button type="submit" name="invia" style="cursor:pointer">Invia</button>
 
il bottone ti restituisce $_POST['invia'] settato, ma VUOTO, non avendo inserito nessun "value"
gli if funzionano per il solo controllo isset

personalmente considero il tuo controllo "debole",
se per qualunque ragione, una persona dovesse intervenire, modificando il tuo codice
ed inserendo una riga con
$_POST['invia'] = "";
il tuo script smette di funzionare .....

io preferisco sempre assegnare un valore significativo ai bottoni ...

il tuo esempio lo scriverei come segue,
PHP:
if( !empty($_POST['invia'] ) {
  if ($nomeG == "") { 
    echo "Inserire il Nome";
    ---->>> gestire l'errore 
  }
  $nomeG = htmlspecialchars(addslashes(ucfirst(trim($_POST['nomeG']))));
  $_SESSION['nomeG'] = $nomeG;
}
o comunque in una forma facile per il controllo degli errori ....
ed il bottone
PHP:
 <button type="submit" name="invia" value="invia" style="cursor:pointer">Invia</button>
ciao
Marino
 
Ultima modifica:
il bottone ti restituisce $_POST['invia'] settato, ma VUOTO, non avendo inserito nessun "value"
gli if funzionano per il solo controllo isset

personalmente considero il tuo controllo "debole",
se per qualunque ragione, una persona dovesse intervenire, modificando il tuo codice
ed inserendo una riga con
$_POST['invia'] = "";
il tuo script smette di funzionare .....

io preferisco sempre assegnare un valore significativo ai bottoni ...

il tuo esempio lo scriverei come segue,
PHP:
if( !empty($_POST['invia'] ) {
  if ($nomeG == "") { 
    echo "Inserire il Nome";
    ---->>> gestire l'errore 
  }
  $nomeG = htmlspecialchars(addslashes(ucfirst(trim($_POST['nomeG']))));
  $_SESSION['nomeG'] = $nomeG;
}
o comunque in una forma facile per il controllo degli errori ....
ed il bottone
PHP:
 <button type="submit" name="invia" value="invia" style="cursor:pointer">Invia</button>
ciao
Marino

Il controllo dell'errore c'è, tu dici di mettere solo if( !empty($_POST['invia'] ) { invece di if((isset($_POST['invia']) || !empty($_POST['invia']))){ e il value.
 
si modificare l'if,
inserire un value significativo nel bottone
e cambiare l'ordine delle operazioni,

1 - controllo esistenza
2 - lo ripulisco
3 - lo memorizzo (SESSION) per trovarlo pulito quando lo riutilizzo in seguito
ciao
 
scritta così : nomeG, è una costante non una variabile
le variabili pretendono il $ davanti al nome.
nel codice che hai postato $nomeG è una variabile e non è valorizzata; non può funzionare.
 
si modificare l'if,
inserire un value significativo nel bottone
e cambiare l'ordine delle operazioni,

1 - controllo esistenza
2 - lo ripulisco
3 - lo memorizzo (SESSION) per trovarlo pulito quando lo riutilizzo in seguito
ciao

Ho modificato come il tuo, sembra andare meglio. Ancora una cosa: siccome il form è in fondo alla pagina, si puòmettere un segnalibro in modo che in caso di errore ritorna al form e non sopra?

PHP:
echo "$errore"; 
echo "<meta http-equiv='refresh' content='1; url=".htmlspecialchars($_SERVER['PHP_SELF']) ."'>";
…
   <form method="post" name="mioformGx" id="mioG" action="<?php echo $_SERVER['PHP_SELF'];?>"...">
 
scritta così : nomeG, è una costante non una variabile
le variabili pretendono il $ davanti al nome.
nel codice che hai postato $nomeG è una variabile e non è valorizzata; non può funzionare.

Ora funziona, ho spostato le sessioni sotto i POST

PHP:
if(isset($_POST['invia'])) { 
$nomeG = htmlspecialchars(addslashes(ucfirst(trim($_POST['nomeG']))));

$_SESSION['nomeG'] = $nomeG;
 
Ora sembra tutto a posto, ho ancora una domanda: questo $_SESSION=array(); va bene in questa posizione?


PHP:
if($errore==""){ 
$_SESSION=array();
echo "Messaggio inviato!"; 
echo "<meta http-equiv='refresh' content='2; url=".htmlspecialchars($_SERVER['PHP_SELF']) ."'>";
}
else { 
echo "$errore"; 
echo "<meta http-equiv=\"refresh\" content=\"1; url=".htmlspecialchars($_SERVER['PHP_SELF'])."?#segnaordine\">";
 
...

}
 } 
session_destroy();
?>
 
Ultima modifica:
SESSION è già un array non serve ridefinirlo.
 
SESSION è già un array non serve ridefinirlo.

L'unico campo che non mantiene i dati, in caso di errore, è il textarea che non è un campo obbligatorio.

PHP:
if(isset($_POST['inviaG'])) {
$messaggioG = htmlspecialchars(addslashes(ucfirst(trim($_POST['messaggioG'])))); 
$_SESSION['messaggioG'] = $messaggioG;
...
 } 
session_destroy();
?>

…

<textarea name="messaggioG" id="txtScrivimiG"><?php echo $messaggioG; ?></textarea>

<button type="submit" name="inviaG" value="inviaG" style="cursor:pointer">Invia</button>
 
non mantiene i dati perchè devi stampare la sessione non la variabile
PHP:
<?php echo $_SESSION['messaggioG']; ?>
 

Discussioni simili