Inserimento

  • Creatore Discussione Creatore Discussione Devja
  • Data di inizio Data di inizio

Devja

Utente Attivo
11 Gen 2013
38
0
6
Perchè nn funziona
PHP:
<?php
    $nome=$_POST["nome"];
    $cognome=$_POST["cognome"];
    $nick=$_POST["nickname"];
    $pass=$_POST["pass"];
    $email=$_POST["email"];
    
    $query="SELECT nickname FROM utente WHERE nickname='$nick'";
    $controllo=mysql_query($query);
    //$riga=mysql_num_rows($controllo);
    if($controllo=="FALSE")
    {
        echo"Utente immesso non valido";
    }
    else
    {
        $query2="SELECT email FROM utente WHERE email='$email'";
        $controllo2=mysql_query($query2);
        //$riga2=mysql_num_rows($controllo2);
        
        if($controllo2=="FALSE")
        {
            echo" email sbagliata";
        }
        
        else
        {
            $ins="INSERT INTO utente ('nickname' ,'password' ,'Nome' ,'Cognome' ,'email' ,'id_livello') VALUES ('$nick', '$pass', '$nome', '$ognome', '$email', 0)";
            $result=mysql_query($ins);
            if($result=="FALSE") die("Errore dati non iseriti");
            //header()
            echo"dati inseriti";
        }
    }
    
    
?>
 
ciao
cosa non funziona e che errore ti da?

comunque un appunto: usare così brutalmente i dati provenienti da un form per le querry su un db può essere molto pericoloso
 
Non mi inserisce i dati all'interno del db, e in che senso nn usare così brutalmente i dati ? Grazie
 
ciao
per "brutalmente" intendo che i dati che provengano da un form devone essere controllati ti faccio un esempio
$query="SELECT nickname FROM utente WHERE nickname='$nick'";
se uno inserisce nel form
' OR '2'='2
la query risulta
$query="SELECT nickname FROM utente WHERE nickname='' OR '2'='2'";
quindi viene "selectato" un record che abbia in nick vuoto oppure dove sia verifica la condizione che 2 sia uguale a 2 condizione che è sempre verificata.
quindi come minimo ci vuole un addslashes
$nick=addslashes($_POST["nickname"]);
per cui lo stesso input diventa
\' OR \'2\'=\'2
trasformando gli apici da separatori a vero e propria stringa di testo e in quasto caso non selecta perche un nick = "' OR '2'='2" non esiste.

analogo discorso per tutti gli altri.
anche se riferito al $_GET dai un occhio a
http://blog.mrwebmaster.it/2013/02/...rametri-di-metodo-non-validati.html#more-7763

poi, per verificare perchè non inserisce (immagino che i dati di connessione al db tu li abbia tralasciati, ma che ci siano) intanto metti un var_dump che poi toglierai
PHP:
<?php
//.......
	$ins="INSERT INTO utente ('nickname' ,'password' ,'Nome' ,'Cognome' ,'email' ,'id_livello') VALUES ('$nick', '$pass', '$nome', '$ognome', '$email', 0)";
	var_dump($ins);
	$result=mysql_query($ins);
	var_dump($result);
//.......
?>
il primo var_dump ti restituisce come viene fatta la stringa, sting(xyz) "INSERT INTO.........", e quindi puoi verificare se viene come deve essere
il secondo in caso di errore ti da BOOL FALSE, se invece l'insert va a buon fine RESUORCE
 

Discussioni simili