Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Problema con controllo e inserimento dati in mysql

    Ciauz...

    Dopo aver tribulato un po' , ho finito di scrivere il codice per controllare i campi di un form e restituirne gli errori.
    Tutto funziona correttamente, se l'username o la mail sono errati , non compilati ecc..mi riporta al modulo e mi indica gli errori commessi, solo che lo script mi inserisce i dati nel database anche se sono stati riscontrati degli errori, sapete dirmi dove sbaglio?

    posto il codice:
    Codice PHP:

    session_start
    ();

    function 
    check_mail($m) {
        
    $r "([a-z0-9]+[._-]?){1,3}([a-z0-9])*";
        
    $r "^{$r}@{$r}.[a-z]{2,6}$";
        return 
    eregi($r$m);
    }
    $check=$_POST['accept'];
    $uuser=$_POST['username'];
    $upass=$_POST['password'];
    $umail=$_POST['mail'];
    $dati=array($uuser,$umail);
    $user_long=strlen($uuser);
    $pass_long=strlen($upass);
    $long_dati=array($user_long,$pass_long);

    if (empty(
    $uuser) or empty($upass) or empty($umail))
         {
              if (empty(
    $uuser))
                   {
                        
    $user_error="empty";
                   }

              else if (!empty(
    $uuser) and $user_long<4)
                   {
                        
    $user_error="length";
                   }

              else
                   {
                        
    $user_error="ok";
                   }

              if (empty(
    $upass))
                   {
                        
    $pass_error="empty";
                   }

              else if (!empty(
    $upass) and $pass_long<4)
                   {
                        
    $pass_error="length";
                   }

              else
                   {
                        
    $pass_error="ok";
                   }

              if (empty(
    $umail))
                   {
                        
    $mail_error="empty";
                   }

              else if (!empty(
    $umail) and !check_mail($umail))
                   {
                        
    $mail_error="false";
                   }

              else
                   {
                        
    $mail_error="ok";
                   }
              
    $error=array($user_error,$pass_error,$mail_error,$check);
              
    $_SESSION['error']=$error;
              
    $_SESSION['fail']="on";
              
    $_SESSION['dati']=$dati;
              
    header ("Location:../public/moduli/register.php?".SID);

         }

    else if (
    $user_long<or $pass_long<4)
         {
               if (
    $user_long<4)
                   {
                        
    $user_error="length";
                   }
               else
                   {
                        
    $user_error="ok";
                   }
               if (
    $pass_long<4)
                   {
                        
    $pass_error="length";
                   }
               else
                   {
                        
    $pass_error="ok";
                   }

               if (!empty(
    $umail) and (!check_mail($umail)))
                   {
                        
    $mail_error="false";
                   }

               else
                   {
                        
    $mail_error="ok";
                   }
                
    $error=array($user_error,$pass_error,$mail_error,$check);
                
    $_SESSION['error']=$error;
                
    $_SESSION['fail']="on";
                
    $_SESSION['dati']=$dati;
                
    header ("Location:../public/moduli/register.php?".SID);
         }

    else if (!empty(
    $umail) and (!check_mail($umail)))
         {
               
    $user_error="ok";
               
    $mail_errorù="ok";
               
    $pass_error="ok";
               if (empty(
    $umail))
                   {
                        
    $mail_error="empty";
                   }

               else if (!empty(
    $umail) and (!check_mail($umail)))
                   {
                        
    $mail_error="false";
                   }

               else
                   {
                        
    $mail_error="ok";
                   }
               
    $error=array($user_error,$pass_error,$mail_error,$check);
               
    $_SESSION['error']=$error;
               
    $_SESSION['fail']="on";
               
    $_SESSION['dati']=$dati;
               
    header ("Location:../public/moduli/register.php?".SID);
         }
    else
      {

        if (
    $check!="si")
          {
            
    $error=array("ok" "ok" "ok",$check);
            
    $_SESSION['dati']=$dati;
            
    $_SESSION['fail']="on";
            
    $_SESSION['error']=$error;
            
    header ("Location:../public/moduli/register.php?".SID);
          }
      }

    include (
    "../include/dati.php");
    include (
    "../include/db1.php");

    $control="select username , mail  from utenti where username='$uuser' or mail='$umail'";


    $q_control=mysql_query($control) or die ("errore nel database");


    $num_result=mysql_num_rows($q_control);


    $str_result=mysql_fetch_assoc($q_control);


    echo 
    $num_result;


    if (
    $num_result>0)
         {
              if (
    $uuser==$str_result['username'])
                   {
                        
    $sql_user="exist";
                   }

              else
                {
                  
    $sql_user="ok";
                }

              if (
    $umail==$str_result['mail'])
                   {
                        
    $sql_mail="exist";
                   }

              else
                {
                  
    $sql_mail="ok";
                }
              
    $sql_error=array($sql_user,$sql_mail);
              
    $_SESSION['sql_fail']=$sql_error;
              
    $_SESSION['dati']=$dati;
              
    header ("Location:../public/moduli/register.php?".SID);
         }

    else

         {
             
    $insert="insert into utenti (username, password, mail,reg) values ('$uuser' , '$upass' , '$umail' , 'no')";
             
    $q_insert=mysql_query($insert) or die (mysql_error());

         } 

  2. #2
    Ho dato un'occhiata veloce al tuo script... mi pare abbastanza (troppo) articolato il controllo che eserciti. In qualche caso non ho capito la logica che hai usato.

    Per quanto riguarda l'inserimento evidentemente lo script non esce al momento aspettato e completa la pagina. Nel caso che le righe estratte dal SELECT siano "0", passa all'else e inserisce.

    Poi hai anche un errore nel nome della var $mail_errorù ???
    codice:
    else if (!empty($umail) and (!check_mail($umail)))
         {
               $user_error = "ok";
               $mail_errorù = "ok"; 
               $pass_error = "ok";
    Direi anche che si potrebbe spaziare e indentare meglio lo script rendendo piu' facile la lettura.
    Conviene anche aggiungere un EXIT; dopo gli header location


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Grazie per gli accorgimenti...

    non è molto tempo che uso php, cerco di aggiustarmi come posso, più avanti nel tempo le cose miglioreranno.

    Ho dato un'occhiata veloce al tuo script... mi pare abbastanza (troppo) articolato il controllo che eserciti.
    intendi dire che ho usato troppi if-else?

    Ho cercato di usare delle funzioni per rendere il codice più leggero ma non ci sono riuscito..

  4. #4
    [supersaibal]Originariamente inviato da Artisan
    intendi dire che ho usato troppi if-else?

    Ho cercato di usare delle funzioni per rendere il codice più leggero ma non ci sono riuscito.. [/supersaibal]
    Ci sono vari controlli duplicati e altri che non verranno mai richiesti...
    Analizzati questa tua elseif per esempio....
    codice:
    else if (!empty($umail) and (!check_mail($umail)))
         {
               $user_error="ok";
               $mail_errorù="ok";
               $pass_error="ok";
    
               if (empty($umail))
                   {
                        $mail_error="empty";
                   }
    
               else if (!empty($umail) and (!check_mail($umail)))
                   {
                        $mail_error="false";
                   }
    
               else
                   {
                        $mail_error="ok";
                   }
               $error = array($user_error,$pass_error, $mail_error,$check);
               $_SESSION['error']=$error;
               $_SESSION['fail']="on";
               $_SESSION['dati']=$dati;
               header ("Location:../public/moduli/register.php?".SID);
         }

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    if (empty($umail))
    {
    $mail_error="empty";
    }
    Questo non serve a nulla , dovevo toglierlo...ma per il resto non capisco cosa non va...

  6. #6
    [supersaibal]Originariamente inviato da Artisan
    Questo non serve a nulla , dovevo toglierlo...ma per il resto non capisco cosa non va... [/supersaibal]
    L'else if annidato e' identico all'else if di ingresso... Quindi non arriveresti mai all'else. In altre parole puoi togliere completamente la if annidata.

    Ma ci sarebbe anche da sindacare sulla else if di ingresso. Infatti se $umail == vuoto hai un false che ti valida l'indirizzo.

    Potrebbe essere questo l'errore ....


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.