PDA

View Full Version : [PHP] controllare se la variabile è vuota??


Ansem_93
09-01-2012, 15:46
Gente io non riesco a risolver eun problema banalissimo: controllare se la variabile è vuota :/
ho messo in grassetto il controllo che faccio
// Funzione mysql_select_db()
mysql_select_db($dbname,$conn)
or die("Impossibile selezionare il database $dbname");

//tolgo eventuali spazi finali dal nome e messaggio
$nick=trim($_POST['nick']);
$mex=trim($_POST['mex']);

//se ci sono delle / le escapo così php funziona
if(get_magic_quotes_gpc())
//strinsplashes serve per sistemare le /
{$nick=stripslashes($nick);
$mex=stripslashes($mex);
}

//e ora finalmente ho escapato tutto
$nick=mysql_real_escape_string($nick);
$mex=mysql_real_escape_string($mex);

//query che mette nel database il messaggio
$aggiungi = "INSERT INTO dbm (nick,messaggio)"
. " VALUES ('$nick','$mex');";

//lancio la query
if ($nick!='' and $mex!='') {
$send= mysql_query($aggiungi,$conn)
or die( "Errore: aggiungi " . mysql_error() );}
else {if ($nick=''){ echo '<script type="text/javascript">alert("non hai inserito il nick")</script>';}
else {echo '<script type="text/javascript">alert("non hai inserito il nick!")</script>';};
};
};
per qualche strana ragione il controllo da true sia che le variabili $nick e $mex siano piene! qualcuno mi sa aiutarte?

StefanoD66
09-01-2012, 16:46
Cancellato: non avevo letto bene il codice.

daxdaxdax
09-01-2012, 19:45
Puoi fare un controllo sulla lunghezza dei valori contenuti nelle due variabili, es:

if ( (strlen($nick) < 2) OR (strlen($mex) < 2) ){
if ( strlen($nick) < 2 ){ echo "<b>Nickname</b> troppo corto<br />" }
if ( strlen($mex ) < 2 ){ echo "<b>Messaggio</b> troppo corto<br />" }
}else{
$send = mysql_query($aggiungi,$conn)or die( "Errore: aggiungi " . mysql_error() );
}


Attenztione a questo:

//tolgo eventuali spazi finali dal nome e messaggio
$nick=trim($_POST['nick']);
$mex=trim($_POST['mex']);


Valorizzi due variabili dal post method senza prima controllare che sia effettivamente settato: se la pagina non fosse in postback, avresti due errori.

demos88
09-01-2012, 20:00
Quoto dax è una buona idea quella di controllare la lunghezza delle stringhe, eventualmente così puoi anche definire una lunghezza minima (anche se tale controllo sarebbe da fare a monte anche nell'eventuale form).
Per l'ultima cosa che ti ha fatto notare, aggiungo che quando lavori con variabili POST e GET, dovresti sempre controllare prima di usarle se sono settate mediante isset() (http://php.net/manual/en/function.isset.php)

Ansem_93
09-01-2012, 20:56
Puoi fare un controllo sulla lunghezza dei valori contenuti nelle due variabili, es:

if ( (strlen($nick) < 2) OR (strlen($mex) < 2) ){
if ( strlen($nick) < 2 ){ echo "<b>Nickname</b> troppo corto<br />" }
if ( strlen($mex ) < 2 ){ echo "<b>Messaggio</b> troppo corto<br />" }
}else{
$send = mysql_query($aggiungi,$conn)or die( "Errore: aggiungi " . mysql_error() );
}


Attenztione a questo:


Valorizzi due variabili dal post method senza prima controllare che sia effettivamente settato: se la pagina non fosse in postback, avresti due errori.
ho provato ad usare la tua funzione ma nemmeno così funziona,ho provato ad applicarla per sicurezza anche a $_POST["nick"] ma niente da fare :/
Comunque cosa intendi con postback?

daxdaxdax
09-01-2012, 21:15
Prova allora a postare il codice per intero :)

Una pagina in postback è appunto una pagina che ritorna al server con delle variabili passate da un form.
per come mi è parso di capire, non controllavi la presenza della tua variabile proveniente dal form nel vettore POST (che si ha solamente in postback).
Consigliavo pertanto di controllare se una variabile nel POST method sia effettivamente esistente prima di usarla per valorizzare una variabile nello script php altrimenti questo può darti un errore Notice: Undefined index

Dan__88
10-01-2012, 17:49
puoi usare bool empty($var)