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 è obbligatorio.',
2 => 'Il campo email è obbligatorio.',
3 => 'Il campo password è 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 è eccessivamente breve. Scegli una password di almeno 8 caratteri.',
8 => 'Esiste già un utente registrato con questo username.',
9 => 'Esiste già un utente registrato con questa email.',
10 => 'TI È 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