controllo su condizioni sballato

ciao a tutti,

non riesco a far funzionare con la giusta sequenza i controlli sul seguente codice... dove sbaglio?

la procedura corretta dovrebbe essere:

Se email scritta con caratteri strani --> email non valida oppure se vuota ---> email vuota oppure se ---> il codice chapta corretto ---> aggiorna email ---> se codice errato ripeti oppure mostra form

<?php

// controllo sul parametro d'invio
if( isset($_POST['submit']) && (trim($_POST['submit']) == "Modifica indirizzo email") ) {

$user_id=$_POST['user_id'];
$user_email=$_POST['user_email'];

// controllo sul formato dell'email
if((!isset($_POST['user_email'])) || (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $user_email))){
echo "Attenzione, formato email non valido.";
 
} elseif($_POST['user_email'] == ""){ // controllo che l'email non sia vuota
echo "Attenzione, email vuota.";
} elseif($_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'])){

$update=mysql_query("update tbl_users SET user_email='$user_email' WHERE user_id='$_SESSION[user_id]'");

$_SESSION['user_email'] = $user_email;

echo "<div id=\"box-impostazioni_03\"><p>E-mail aggiornata correttamente!</p> La tua e-mail attualmente &egrave; <b>".$_SESSION['user_email']."</b></div>";
}else{
// controllo inserimento codice chapta
echo 'attenzione!! codice errato o mancante';
}

}else{
?>
<form action="<?php print $_SERVER['PHP_SELF']?>" method="post">
<table id="box-impostazioni_03">
<tr>
<td colspan="2" height="10">&nbsp;</td>
</tr>
<tr>
<td><span class="font04">Nuovo indirizzo e-mail:</span></td>
<td><input type="text" name="user_email" class="input_changemail" /></td>
</tr>
<tr>
<td colspan="2" height="10">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="center">
<span class="error_reg">*</span><img src="include/CaptchaSecurityImages.php?width=240&height=50&characters=6" />
</td>
</tr>
<tr>
<td colspan="2" height="10">&nbsp;</td>
</tr>
<tr>
<td><span class="font04">Security Code:</span></td>
<td><input id="security_code" name="security_code" type="text" class="input_changemail"/></td>
</tr>
<tr>
<td colspan="2" height="5">&nbsp;</td>
</tr>
<tr>
<td colspan="2" valign="top" align="center">
<input name="submit" type="submit" id="changeEmailButton" value="Modifica indirizzo email" />
</td>
</tr>
<tr>
<td colspan="2" height="5">&nbsp;</td>
</tr>
</table>
</form>
<?php
}
?>
inviato 8 anni fa
Falco72
modificato 8 anni fa
X 0 X

se hai una sequenza di controlli da fare e non vuoi complicarti la vita con una serie di if elseif puoi usare questa strategia:

do {

 if(...) {
   echo "...";
   break;
 }

 if(...) {
   echo "...";
   break;
 }

 if(...) {
   echo "...";
   break;
 }


} while (false)

il break interrompe il ciclo do-wile e quindi impedisce l'esecuzione dei restanti IF

:bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda