confronto di variabili

Ciao a tutti

ho un dubbio su il confronto di variabili che mi ci ha fatto perdere la testa, alla fine ho risolto, ma il dubbio è rimasto.

Ho un form che passa con il metedo post ad uno script php il valori di alcuni campi.

Prima di fare il confronto ho fatto così:

$var1=$_POST['var1'];

$var2=$_POST['var2'];

Poi ho proceduto al confronto .

if ($var1!=$var2){

echo "sono diversi"; }

else

{echo "sono uguali";}

in questo modo il confronto non me lo fa. Eppure facendo echo $var1 e echo $var2 mi stampa le stringhe inserite nei campi form.

Invece così sì, come mai? 

if ($_POST['var1'] != $_POST['var2'])

Ho fatto delle richerche su internet ma trovo esempi di codice sia scritto nel primo modo che nel secondo senza fare riferimento del probabile malfunzionamento.

Per chiarezza riporto il codice interessato dal problema.

$nomehost="localhost";

$nomeuser="root";
$password="";
$dbname="registro";
@$conn = mysql_connect ($nomehost, $nomeuser, $password);
@$database_select=mysql_select_db($dbname, $conn);

if ($conn==0){
        echo "connessione al database fallita<br><br>";
        exit;
    } else{
        echo "connessione avvenuta<br>";
    }

    if ($database_select==1){
        echo "il database " . "<strong>$dbname</strong> " . "e' stato selezionato<br><br><br>";
        }
$nome   =   $_POST['nome'];
$cognome  = $_POST['cognome'];
$username = $_POST['username'];
$pass = $_POST['password'];
$conf = $_POST['conferma'];

   if ($nome==""  or $cognome=="" or $username=="" or $pass=="" or $conf=""){
        echo "ATTENZIONE....<BR>" ."tutti i campi sono obbligatori<br>";
     exit;
   }

    if ($pass != $conf) {
        echo "ATTENZIONE...<BR>" . "le passoword non corrispondono, correggi il problema";
        exit;
        }else{

             $query = "INSERT INTO utenti (username, password, nome, cognome)
             VALUES ('$username', '$pass', '$nome', '$cognome')";

    $result = mysql_query($query,$conn);  }
         if ($result==0){
         echo "errore di registrazione";
         header("location:registrazione.html");
             exit;

         }else{
             echo "<b>Registrazione avvenuta con successo</b>";
             echo "<h3>Riepilogo dati inseriti</h3><br>";
             echo "nome: " . "$nome<br>";
             echo "username: " . "$username<br>";
             echo "password: " . "$pass<br>";
             echo "conferma: " . "$conf" ;}
?>
inviato 3 anni fa
Franck
modificato 3 anni fa
Nel primo modo cosa succede? Stampa "sono diversi" o "sono uguali"?Gianni Tomasicchio 3 anni fa
Sempre sono diversi anche se i dati sono giusti.Franck 3 anni fa
Prova ad inserire l'istruzione error_reporting(E_ALL); all'inizio dello script per evidenziare eventuali problemi non segnalati.Gianni Tomasicchio 3 anni fa
Nulla, non da nessuno errore. La cosa strana è che le due variabili (non sono quelle reali, le ho indicate così solo per comodità) le passo in quel modo per inserire i valori nel database che vengono inseriti regolarmente. boh...Franck 3 anni fa
Credo di aver capito dove risiede il problema. $va1 e $var due vengono prima processati in un if, cioè controlla se sono vuoti ed in caso positivo produce un avviso di inserire i dati in tutti i campi. Possibile che questo procedimento danneggia (uso questo termine, non saprei come chiamarlo sta anomalia) le variabili?Franck 3 anni fa
Modifica il testo della domanda riportando il codice di questo IF in modo da poter individuare il problema.Gianni Tomasicchio 3 anni fa
X 0 X

Mi sa che manca un = nella riga:

if($nome==""  or $cognome=="" or $username=="" or $pass=="" or $conf="")

che dovrebbe essere:

if($nome==""  or $cognome=="" or $username=="" or $pass=="" or $conf=="")

Senza il doppio uguale il confronto diventa una assegnazione e $conf diventa una stringa vuota.

risposto 3 anni fa
Gianni Tomasicchio
Grazie Gianni. Un banalissimo errore mi ha mandato in tilt, mi pareva strano questo comportamento del php. Conclusioni devo ancora imparare molto del php specie nel leggere e rileggere il codice scritto alla ricerca di errori. :-)Franck 3 anni fa
X 1 X X
Effettua l'accesso o registrati per rispondere a questa domanda