Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154

    php controllo su radio button vuoto

    salve gente, ho recentemente aggiunto al mio form di registrazione i soliti 2 radio button per la scelta del sesso uomo donna...

    codice:
    Scegli Sesso: 
    Uomo:<input type="radio" name="sesso" value="Uomo"></input>
    Donna:<input type="radio" name="sesso" value="Donna"></input>
    ho un problema nell inserire un controllo durante la validazione degli input per verificare se l utente ha selezionato o meno uno dei due sessi, e non li ha lasciati vuoti..

    codice:
        /*variabili per gestire gli errori*/  
            public $messages = array(  
                            1 => 'Il campo username &egrave; obbligatorio.',  
                            2 => 'Il campo email &egrave; obbligatorio.',  
                            3 => 'Il campo password &egrave; obbligatorio.',  
                            4 => 'Le due password non coincidono.',  
                            5 => 'Il campo username contiene caratteri non validi. Sono consentiti solo lettere, numeri il i seguenti simboli . _ -.',  
                            6 => 'Inserisci una email con sitassi corretta.',  
                            7 => 'La password scelta &egrave; eccessivamente breve. Scegli una password di almeno 8 caratteri.',  
                            8 => 'Esiste gi&agrave; un utente registrato con questo username.',  
                            9 => 'Esiste gi&agrave; un utente registrato con questa email.',  
                            10 => 'TI &Egrave; STATA INVIATA UN E-MAIL DI CONFERMA DI REGISTRAZIONE CON UNA COPIA DEI <br>TUOI DATI. CONFERMA LA TUA REGISTRAZIONE, ALTRIMENTI NON POTRAI ACCEDERE.',  
                            11 => 'Login errato : username o password errati!!',  
                            12 => 'Login eseguito con successo.',  
                            13 => 'Logout eseguito con successo.',  
                            14 => 'Per accedere a questo sito occorre <b><u>registrarsi</u></b> ed essere loggati.',
                            15 => '<font color="red">* Campo sesso obbligatorio.</font>'
                            );  
              
            public $message_script;  
              
           
            /************************************* 
            ALCUNI METODI PER ESEGUIRE VALIDAZIONI 
            *************************************/  
              
            // verifica campo generico non vuoto (TRUE se non vuoto)  
            public function empty_string($string){  
                $string = trim($string);  
                if($string==''){  
                    return TRUE;  
                    }  
                else{  
                    return FALSE;  
                    }  
                }  
              
              
              // verifica campo radio vuoto (TRUE se non vuoto)  
            public function empty_radio($sesso){  
                $sesso = trim($_POST['sesso']);  
                if($sesso==''){  
                    return TRUE;  
                    }  
                else{  
                    return FALSE;  
                    }  
                }  
              
            // verifica sintassi username  
            public function is_username($username){  
                $regex = '/^[a-z0-9\.\-_]{3,30}$/i';  
                return preg_match($regex, $username);  
                }  
              
            // verifica sintassi email (TRUE se ok)  
            public function is_email($email){  
                $regex = '/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/';  
                return preg_match($regex, $email);  
                }  
                  
            // verifica sintassi password (per semplicit� solo lunghezza) (TRUE se ok)  
            public function is_secure_password($password){  
                if(strlen($password)>=8){  
                    return TRUE;  
                    }  
                else{  
                    return FALSE;  
                    }  
                }
    codice:
     /***************************** 
            ESECUZIONE DELLA REGISTRAZIONE 
            ******************************/  
            public function esegui_registrazione(){ 
             
                // se il form e i suoi input sono stati inviati  
                if(isset($_POST['register']) AND   
                   isset($_POST['username']) AND
                    isset($_POST['sesso']) AND 
                    isset($_POST['email']) AND   
                    isset($_POST['pass1']) AND   
                    isset($_POST['pass2'])) { 
                   //valorizziamo alcune variabili  
                    $this->reg_username = trim($_POST['username']);  
                    $this->reg_email = trim($_POST['email']);  
                    $this->reg_sesso = trim($_POST['sesso']);
                    $this->reg_pass = trim($_POST['pass1']);  
                    $this->reg_confirm_pass = trim($_POST['pass2']);  
                    
                    // criptiamo la password  
                    $this->reg_crypt_pass = $this->crypt_pass($this->reg_pass);  
                    // eseguiamo la validazione degli input  
                    $valid_input = $this->check_input_registrazione();  
                    
                    // se sono validi  
                    if($valid_input===TRUE){  
                        // inseriemo all'interno del database i dati  
                        $this->query_insert_registrazione(); 
    
    
                        // settiamo il messaggio di successo della registrazione  
                        $this->message_script = 10;  
                        return TRUE;  
                        }  
                    }
                  return FALSE;  
            }
              
            // verifica che gli input siano corretti  
            protected function check_input_registrazione(){  
                if($this->empty_string($this->reg_username)){  
                    $this->message_script = 1;  
                    return FALSE;  
                    }
                else if($this->empty_string($this->reg_email)){  
                    $this->message_script = 2;  
                    return FALSE;  
                    }  
                else if($this->empty_radio($this->reg_sesso)){  
                    $this->message_script = 15;  
                    return FALSE;  
                    }      
                else if($this->empty_string($this->reg_pass)){  
                    $this->message_script = 3;  
                    return FALSE;  
                    }  
                else if($this->reg_pass != $this->reg_confirm_pass){  
                    $this->message_script = 4;  
                    return FALSE;  
                    }  
                else if(!$this->is_username($this->reg_username)){  
                    $this->message_script = 5;  
                    return FALSE;  
                    }  
                else if(!$this->is_email($this->reg_email)){  
                    $this->message_script = 6;  
                    return FALSE;  
                    }  
                else if(!$this->is_secure_password($this->reg_pass)){  
                    $this->message_script = 7;  
                    return FALSE;  
                    }  
                else if($this->isset_username($this->reg_username)==TRUE){  
                    $this->message_script = 8;  
                    return FALSE;  
                    }  
                else if($this->isset_email($this->reg_email)==TRUE){  
                    $this->message_script = 9;  
                    return FALSE;  
                    }  
                return TRUE;  
                }  
              
            // esecuzione della query insert di registrazione  
            protected function query_insert_registrazione(){  
                $query = "  
                            INSERT INTO users   
                            SET   
                                username='".mysql_real_escape_string($this->reg_username)."',   
                                pass='".mysql_real_escape_string($this->reg_crypt_pass)."',   
                                email='".mysql_real_escape_string($this->reg_email)."',
                                sesso='".mysql_real_escape_string($this->reg_sesso)."',
                                attivato  = 0 ,
                                data_reg= NOW()";  
                $result = mysql_query($query) or die(mysql_error());  
                return mysql_insert_id();  
                }
    come potete vedere ho provato ad inserire il controllo sugli input radio , ma non va..praticamente succede che se lascio gli input radio vuoti non mi vengono pi� restituiti i messaggi d errore riguardanti gli altri campi...mentre se seleziono uno dei due input radio gli errori riguardanti gli altri campi tornano a funzionare...viceversa se riempo tutti i campi e lascio soltanto gli input radio vuoti , non mi viene rilasciato alcun errore riguardante appunto i campi radio vuoti potrebbe essere una cosa banale ma a me sta fumando il cervello

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Penso che i campi radio siano come i checkbox, se nessun valore è selezionato, il dato non viene proprio inviato, non è che arriva vuoto.

    Verificalo sui radio perché vado a memoria.

    Se hai un campo checkbox
    <input type="checkbox" name="prova" value="1" />

    se non lo selezioni, lato PHP non hai
    $_POST['prova'] == '';

    $_POST['prova'] non esiste proprio.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    ciao Alhazred alla fine ho risolto con isset

    codice:
            if (!isset($_POST['sesso'])){
        $this->message_script = 15;
        return;
    }
    ho un altro problemino adesso, vorrei evitare di aprire un altro post quindi posto direttamente qui...
    ho un creato un box news nel mio sito con testo che scorre tipo i vecchi marquee...all interno di questo box ho intenzione di far scorrere notizie del tipo:

    07/21 11:09 : L ' Utente Prova si è appena registrato al sito.

    07/21 11:20 : L' Utente Prova si è connesso.

    07/21 11:20 : L' Utente Prova si è disconnesso.

    07/21 : L' Utente Prova oggi compie gli anni. Tanti Auguri!!

    sono partito creando lo script per la gestione dei messaggi di compleanno (chi lo sa magari si può fare un unico script che gestisce tutti i tipi di messaggi)..

    codice:
    <?php
    // HERE add your data for connecting to MySQ database
    $host = 'XXX';           // MySQL server address
    $user = 'XXX';                // User name
    $pass = 'XXX';            // User`s password
    $dbname = 'XXX';          // Database name
    
    // connect to the MySQL server
    $conn = new mysqli($host, $user, $pass, $dbname);
    
    // check connection
    if (mysqli_connect_errno()) exit('Connect failed: '. mysqli_connect_error());
    
    $oggi=date("m-d");//leggi la data atuale, attento = a come è scritta in tabella
    
    //interroghi il db
    $query="SELECT username FROM users WHERE compleanno='$oggi'";
    $ris=mysqli_query($conn, $query);
    
    //e estrai i nomi degli utenti che compiono gli anni $oggi
    while($riga=mysqli_fetch_assoc($ris)){
        $utenti[]=$riga['username'];
    }
    //raggruppi i nomi
    $compleanni_di_oggi=implode(", ",$utenti);//diventa es. Attenzio, Pancrazio
    //e fai gli auguri
    echo  $oggi."Gli utenti <font  color='red'>$compleanni_di_oggi</font> oggi compiono gli anni.  Tanti Auguri!!<img src='images/auguri.gif' width='40px'  height='40px'>";
    
    ?>
    ho creato nel db degli utenti con la data di oggi per testare lo script...

    72rCSbE.png

    il problema è che lo script mi restituisce il nome di tutti gli utenti che hanno data 0000-00-00 ovvero quelli che non hanno ancora impostato una data, mentre coloro che ne hanno una non se li fila proprio...tantomeno quelli che hanno data 07/21 corrispondente a quella d oggi e che lo script dovrebbe darmi ...

    il campo compleanno sul db è di tipo "date"...

    ed in questo modo viene caricata una data nel db

    codice:
    $compleanno = strtr($_POST['compleanno'], '/', '-');
    $timestamp = strtotime($compleanno);
    if($timestamp!=''){
    $date = date('Y-m-d',$timestamp );
    }else{
    $this->message_script = 15;
    }
    
    ........
    
     protected function query_insert_registrazione(){  
                $query = "  
                            INSERT INTO users   
                            SET   
                                username='".mysql_real_escape_string($this->reg_username)."',   
                                pass='".mysql_real_escape_string($this->reg_crypt_pass)."',   
                                email='".mysql_real_escape_string($this->reg_email)."',
                                sesso='".mysql_real_escape_string($this->reg_sesso)."',
                                compleanno='".mysql_real_escape_string($this->reg_compleanno)."',
                                attivato  = 0 ,
                                data_reg= NOW()";  
                $result = mysql_query($query) or die(mysql_error());  
                return mysql_insert_id();  
                }
    qualcuno potrebbe darmi una mano?
    Ultima modifica di Punix; 21-07-2017 a 11:41

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    codice:
    Data di Nascita:<input type="date" name="compleanno" placeholder="Esempio: 08/04/1990">

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    come non detto : risolto.

    codice:
    //interroghi il db
    $query="SELECT username FROM users WHERE date_format(compleanno,'%d %m') = date_format(curdate(),'%d %m');";
    $ris=mysqli_query($conn, $query);
    
    echo "<table class='bordered' style='margin:30px auto;'>
                    <tr>
                    <td>
                    <center>
                    <img src='images/news.gif' width='300' height='60'>
                    <br><br><br>
                    </center>
    
    
    <div class='marquee up'><p>";
    
    //e estrai i nomi degli utenti che compiono gli anni $oggi
    while($riga=mysqli_fetch_assoc($ris)){
        $utenti[]=$riga['username'];
    }
    //raggruppi i nomi
    $compleanni_di_oggi=implode("<font color='white'>,</font> ",$utenti);//diventa es. Attenzio, Pancrazio
    //e fai gli auguri
    echo $oggi.": L'utente <font color='red'>$compleanni_di_oggi</font> oggi compie gli anni. Tanti Auguri!!<img src='images/auguri.gif' width='40px' height='40px'>";
    echo "</p></div></td></tr></table>";
    ?>
    è possibile cambiare alcune parti dell echo finale? ad esempio se gli utenti estratti dalla query sono piu di uno, trasformare la parte "L'utente" in "Gli utenti" e la parte "compie" in "compiono"?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    codice:
    //e estrai i nomi degli utenti che compiono gli anni $oggi
    while($riga=mysqli_fetch_assoc($ris)){
        $utenti[]=$riga['username'];
    }
    //raggruppi i nomi
    $compleanni_di_oggi=implode("<font color='white'>,</font> ",$utenti);//diventa es. Attenzio, Pancrazio
    
    //e fai gli auguri
    ob_start();
    echo $oggi.": L'utente <font color='red'>$compleanni_di_oggi</font> oggi compie gli anni. Tanti Auguri!!<img src='images/auguri.gif' width='40px' height='40px'>";
    $out1 = ob_get_contents();
    ob_end_clean();
    
    if ($utenti == 1){
    echo "$out1";
    }
    else{
    $cerca = array("L'utente","compie");
    $sostituisci = array("Gli utenti","compiono");
    echo str_replace($cerca, $sostituisci, $out1);
    }
    
    echo "</p></div></td></tr></table>";
    ?>
    ho provato a far cosi soltanto che adesso , anche con un solo utente restituito dalla query mi restituisce la frase in plurale modificata con l str_replace ... la condizione non viene rispettatadho.gif ....

  7. #7
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    $utenti è un array...che senso ha fare == 1?
    if(count($utenti) == 1)

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    Quote Originariamente inviata da boots Visualizza il messaggio
    $utenti è un array...che senso ha fare == 1?
    if(count($utenti) == 1)
    eh già grazie mille

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    altro problemino...ho estratto tramite la query anche sesso ed email dell utente che compie gli anni..
    per quanto riguarda il sesso, in base al sesso del utente volevo attribuire un immagine accanto al nome...

    come potete vedere qui sotto, l immagine viene assegnata solo al primo username, nel caso in cui sono presenti piu username..gli altri che seguono nulla..perchè?



    codice:
    //e estrai i nomi degli utenti che compiono gli anni $oggi
    while($riga=mysqli_fetch_assoc($ris)){
        $utenti[]=$riga['username'];
        $sesso=$riga['sesso'];
        $email=$riga['email'];
    }
    //raggruppi i nomi
    $compleanni_di_oggi=implode("<font color='white'>,</font> ",$utenti);//diventa es. Attenzio, Pancrazio
    
    //controllo sesso utente e attribuisco immagine in base al sesso
        
    if ($sesso == 'Uomo') {    
    $img= '<img src="images/uomo_s.png" width="15px" height="25px">';
    }else{
    $img='<img src="images/donna_s.png" width="25px" height="25px">';
    }
    
    //e fai gli auguri
    ob_start();
    echo $oggi.": L'utente $img  <font color='red'>$compleanni_di_oggi</font>   oggi compie gli anni. Tanti Auguri!!<img src='images/auguri.gif' width='30px' height='30px'>";
    $out1 = ob_get_contents();
    ob_end_clean();

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    salve son sempre io...ho aggiunto altro codice al mio script...questa volta intendo inviare un email di auguri agli utenti che compiono gli anni..
    ho creato un altra tabella nel db con username , email, e un campo con valore default 0 che dovrebbe servire per controllare se l e-mail e gia sta inviata o meno.

    codice:
    //INIZIO CODICE PER INVIO E-MAIL DI AUGURI
    $query1="SELECT COUNT(*) FROM email_compl WHERE username = '$utenti' AND email='$email'";
    $ris1=mysqli_query($conn, $query1);
    if(mysql_result($ris1, 0) > 0)
    {
    break;
    }else{
    $query2="INSERT INTO email_compl SET username='$utenti', email='$email';";
    $ris2=mysqli_query($conn, $query2);    
    if($ris2 > 0)
    {
    $query3="SELECT email_spedita FROM email_compl WHERE username='$utenti' AND email='$email';";
    $ris3=mysqli_query($conn, $query3);        
    while($riga1=mysqli_fetch_assoc($ris3)){
        $email_spedita=$riga1['email_spedita'];
    }
    if ($email_spedita == 0)
    {
        
    //Invio un Email di auguri.
    
    $to = $email;
    $toname = $utenti;
    $subject = "Serpinter sito - Tanti Auguri!!";
    
    $boundary = "==MP_Bound_xyccr948x==";
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\r\n";
    $headers .= "From: serpinter08@hotmail.com \r\n"; 
    $html_msg = "<center>";
    $html_msg .= "<table width=\"500\" border=0 cellpadding=\"4\">";
    $html_msg .= "<tr><td align=\"center\">&nbsp;";
    $html_msg .= "</td></tr>";
    $html_msg .= "<tr><td>Messaggio di auguri da parte di <font color=\"red\">Serpinter</font>";
    $html_msg .= "</td></tr><tr><td align=\"center\">&nbsp;";
    $html_msg .= "</td></tr></table></center>";
    $confirmmessage = "Salve " . $toname . ",\n\n";
    $confirmmessage .= "Questo e' un messaggio automatico che Serpinter ha voluto inviare a tutti gli utenti\n registrati al sito guida, che oggi compiono gli anni.\n\n\n<center>Tanti Auguri di Buon Compleanno!!\n <img src=\"http://i43.tinypic.com/8x33bk.gif\"></center>";
    $confirmmessage .= $html_msg . "\n\n";
    $confirmmessage .= '<a href="http://sitoprova.96.lt/login.php?message=14">Serpinter - Sito Guida per socceron.</a>';
    $message = "This is a Multipart Message in MIME format\n";
    $message .= "--$boundary\n";
    $message .= "Content-type: text/html; charset=iso-8859-1\n";
    $message .= "Content-Transfer-Encoding: 7bit\n\n";
    $message .= $confirmmessage . "\n";
    $message .= "--$boundary--";
    $mailsent = mail($to, $subject, $message, $headers);    
    
    
    $query4="INSERT INTO email_compl SET email_spedita = 1;";
    $ris4=mysqli_query($conn, $query4);        
    
    }
    else{
    return false;    
    }
    }else{return false;}
    }
    //FINE CODICE PER E-MAIL DI AUGURI
    nell eseguire lo script ricevo un messaggio di warning:mysql_result() expects parameter 1 to be resource, object given in ...

    non è perche $utenti è un array?

    codice:
    $query="SELECT username,sesso,email FROM users WHERE date_format(compleanno,'%d %m') = date_format(curdate(),'%d %m');";
    $ris=mysqli_query($conn, $query);
    
    .........
    
    //e estrai i nomi degli utenti che compiono gli anni $oggi
    while($riga=mysqli_fetch_assoc($ris)){
        $utenti[]=$riga['username'];
        $sesso=$riga['sesso'];
        $email=$riga['email'];
    }
    tante che nell' email che arriva , il $toname arriva come (array).... ES. salve array, .......

    poi ogni volta che eseguo lo script mi arriva un email dovrebbe arrivarne soltanto una con i controlli che ho inserito

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 © 2024 vBulletin Solutions, Inc. All rights reserved.