()
Newbie
Messaggi:
Iscritto:
|
Salve, volevo sapere come mai questo codice non mi controlla se è stato modificato il input text dell'email.
In poche parole devo fare che se è stato cambiato cambia e fa un update , ma se non è stato cambiato allora non fare nulla.
Mi dite come mai non funziona.
grazie.
ecco il codice:
Codice sorgente - presumibilmente Php |
<?php require_once(dirname(__FILE__) . '/auth.php'); require_once(dirname(__FILE__) . "/header.php"); if(isset($_POST["update_email"])) { $Email = mysql_codifica($_POST["Email"]); $user = mysql_codifica((int)$_SESSION["user_id"]); if ( $_POST['Email'] != $_POST["Email"] ) { if (!checkUnique('Email', $Email) ) { $update = "UPDATE users SET `Email` = '" . $Email . "' WHERE ID=".$_SESSION['user_id'].""; $msg = 'Your profile was successfully updated!'; } else {$msg = "Errore"; } }else { } } ?> <p class="title2">Update Email</p> <?php if(isset($error)){ echo ' <p class="error">' . $error . '</p>' . "\n";}?> <?php if ( isset ( $msg ) ) { echo ' <p class="msg">' . $msg . '</p>' . "\n"; } else {//if we have a mesage we don't need this form again.?> <form class="form" action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> <input type="hidden" name="_submit_check" value="1"/> <table width="100%" border="0" align="center"> <tr> <td colspan="2"><span style="margin-top:12px; margin-bottom:10px">Email</span></td> <td width="81%"><span style="margin-top:12px; margin-bottom:10px"> <input class="input" type="text" name="Email" size="50" value="<?php if ( isset ( $Email ) ) { echo $Email; } else { echo $r['Email']; } ?>" /> </span></td> </tr> <tr> <td colspan="2"><input type="submit" name="update_email" value="update_email" alt="submit" title="submit" /></td> <td> </td> </tr> <tr> <td width="15%"><a href="contatti.php?subject=forgot_password">Recupera Password</a></td> <td width="4%"> </td> <td><a href="contatti.php">Chiedi informazioni</a></td> </tr> </table> </form> <?php } ?> <a href="logout.php">logout</a><br><a href="members.php">Torna indietro</a> <?php require_once(dirname(__FILE__) . '/footer.php'); ?>
|
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2305
Iscritto: 04/05/2008
|
dalla query non so dirti nulla
dov'è il la porizioe di codice che permetterebbe l'update?
Ultima modifica effettuata da Thejuster il 29/11/2009 alle 17:34
|
|
()
Newbie
Messaggi:
Iscritto:
|
Postato originariamente da Thejuster:
dalla query non so dirti nulla
dov'è il la porizioe di codice che permetterebbe l'update? |
è questo:
if (!checkUnique('Email', $Email) )
{
$update = "UPDATE users set `Email` = '" . $Email . "' WHERE ID=".$_SESSION['user_id']."";
mysql_query ( $update );
$msg = 'Your profile was successfully updated!';
}
else
{$msg = "Errore";
}
Dopo che fa il controllo che se non c'è già una email già iscritta nel db e fa update.
A me mi interessa solo sapere
questo codice:
if ( $_POST['Email'] != $_POST["Email"] )
{
Perchè non funziona, e non fa il controllo per verificare se è stato cambiato il valore alla input text.
Idee?
grazie.
|
|
()
Newbie
Messaggi:
Iscritto:
|
niente?
idee?.
grazie buon lunedì.
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2305
Iscritto: 04/05/2008
|
emh
non vorrei essere precipitoso ma...
if( $_POST['Email'] != $_POST["Email"] ) {
non è la stessa cosa?
con apice o doppio apice e la stessa e identica variabile
dovresti prima memorizzare il valore della vecchia var in una vuota
e dopo confrontarla con l'$_POST
altrimenti e come fare una condizione sulla stessa variabile
e per questo motivo non ti funziona
se $_POST[Email] != $_POST["Email"] e la stessa cosa
è come dire if(orange != orange) { }
|
|
()
Newbie
Messaggi:
Iscritto:
|
Postato originariamente da Thejuster:
emh
non vorrei essere precipitoso ma...
if( $_POST['Email'] != $_POST["Email"] ) {
non è la stessa cosa?
con apice o doppio apice e la stessa e identica variabile
dovresti prima memorizzare il valore della vecchia var in una vuota
e dopo confrontarla con l'$_POST
altrimenti e come fare una condizione sulla stessa variabile
e per questo motivo non ti funziona
se $_POST[Email] != $_POST["Email"] e la stessa cosa
è come dire if(orange != orange) { }
|
quindi come posso fare per capire se è stato cambiato il valore ad alla input text email,
senza usare un'altra input text.
grazie, mille.
ciao.
|
|
()
Newbie
Messaggi:
Iscritto:
|
Ho provato anche cosi, ma nulla,
come mai.?
Codice sorgente - presumibilmente Php |
<?php require_once(dirname(__FILE__) . '/../auth.php'); require_once(dirname(__FILE__) . "/../header.php"); $codice=$_POST['codice']; if(isset($_POST["update_email"])) { $Email = mysql_codifica($_POST["Email"]); $user = mysql_codifica((int)$_SESSION["user_id"]); $Email2 = mysql_codifica($_POST["Email2"]); //elseif($_SESSION['captcha'] == $_POST['codice']) { if ($Email != $Email2 ) { $error = "Update"; } elseif (!checkUnique('Email', $Email) ) { $error = 'The email you used is associated with another user. Please try again or use the "forgot password" feature!'; }else { $msg = 'Your profile was successfully updated!'; } } /* }else{ $error = 'Codice Errato'; } */ ?> <p class="title2">Update Email</p> <?php if(isset($error)){ echo ' <p class="error">' . $error . '</p>' . "\n";}?> <?php if ( isset ( $msg ) ) { echo ' <p class="msg">' . $msg . '</p>' . "\n"; } else {//if we have a mesage we don't need this form again.?> <form class="form" action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> <input type="hidden" name="_submit_check" value="1"/> <table width="100%" border="0" align="center"> <tr> <td colspan="2"><span style="margin-top:12px; margin-bottom:10px">Email</span></td> <td width="81%"><span style="margin-top:12px; margin-bottom:10px"> <input class="input" type="text" name="Email" id="Email" size="50" value="<?php if ( isset ( $Email ) ) { echo $Email; } else { echo $r['Email']; } ?>" /> <input class="input" type="hidden" name="Email2" id="Email2" size="50" value="<?php if ( isset ( $Email2 ) ) { echo $Email2; } else { echo $_POST['Email2']; } ?>" /> </span></td> </tr> <tr> <td colspan="2"><span style="margin-bottom:6px"> Codice di sicurezza </span></td> <td><span style="margin-bottom:6px"> <img src="./libs/captcha.php"> <input type="text" name="codice" size="5" maxlength="6"> </span></td> </tr> <tr> <td colspan="2"><input type="submit" name="update_email" value="update_email" alt="submit" title="submit" /></td> <td> </td> </tr> <tr> <td width="15%"><a href="contatti.php?subject=forgot_password">Recupera Password</a></td> <td width="4%"> </td> <td><a href="contatti.php">Chiedi informazioni</a></td> </tr> </table> </form> <?php } ?> <?php require_once(dirname(__FILE__) . '/../footer.php');?>
|
|
|
()
Newbie
Messaggi:
Iscritto:
|
nulla?
Come posso risolvere il problema?.
grazie.
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2305
Iscritto: 04/05/2008
|
Il problema si può risolvere in tantissimi modi.
ma questo dipende sempre dalla tua scelta.
a mio parere (Personale) vedo il tuo sorgente un pò disordinato.
non oso criticare il tuo metodo di programmazione.
ma codice php e codice html dovrebbero essere sempre saparati e non
ingarbugliati tra loro.
io userei una piccolissima funzione per evitare tutto quel macello.
semplicemente
crei un file chiamato fileclasse.php
con una funzione
Codice sorgente - presumibilmente Php |
<? //creo una classe class checkmail { //creo una funzione function check($mail1,$mail2) { //se le 2 email non sono uguali ritorna true if($mail1 != $mail2) { return "true"; } else { //altrimenti ritorna false return "false"; } } } ?>
|
Poi dal tuo file dov'è contenuto il form farei in questo modo
Codice sorgente - presumibilmente PHP |
<? // Le 2 variabili Email le hai gia dichiarate e assegnato il loro valore. // quindi devi eseguire un semplice check include("fileclasse.php"); $cm = new checkmail; $risultato = $cm->check($Email,$Email2); echo $risultato; ?>
|
Se le email non combaciano hai true come valore nella var risultato altrimenti false.
dopo usato il php_self del form, invii le 2 email alla funzione
e hai il valore positivo o negativo, in base a quello esegui la query.
oppure puoi inserire la tua query direttamente nella classe stessa.
in modo che lo faccia in automatico senza restituire un return.
se ha il valore true allora dalla classe stessa esegui la query.
questo e il mio consiglio.
così eviti di tutte quelle condizioni e di mescolare codice php all'html provocando sicuramente molto disordine e probabilmente comunissimi bug.
Ultima modifica effettuata da Thejuster il 01/12/2009 alle 14:17
|
|