Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - campo diverso da quello inserito
Forum - PHP - campo diverso da quello inserito

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
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

  1. <?php
  2. require_once(dirname(__FILE__) . '/auth.php');
  3. require_once(dirname(__FILE__) . "/header.php");
  4.  
  5.     $query = mysql_query ( "SELECT * FROM `users` WHERE `ID` = '" . mysql_real_escape_string ( $_SESSION['user_id'] ) . "'" );
  6.     $r= mysql_fetch_assoc ( $query );
  7.    
  8. if(isset($_POST["update_email"]))
  9. {
  10. $Email = mysql_codifica($_POST["Email"]);
  11. $user = mysql_codifica((int)$_SESSION["user_id"]);
  12.        
  13.                        
  14.                         if ( $_POST['Email'] != $_POST["Email"] )
  15.                         {
  16.                         if (!checkUnique('Email', $Email) )
  17.                         {
  18.                        
  19.                        
  20.                                 $update = "UPDATE users SET `Email` = '" . $Email . "' WHERE ID=".$_SESSION['user_id']."";
  21.                          mysql_query ( $update );
  22.                              $msg = 'Your profile was successfully updated!';
  23.                         }
  24.                         else
  25.                         {$msg = "Errore";
  26.                         }
  27.                                  
  28.                         }else
  29. {
  30. }                      
  31.            
  32.             }
  33.                        
  34. ?>
  35.         <p class="title2">Update Email</p>
  36. <?php if(isset($error)){ echo '                 <p class="error">' . $error . '</p>' . "\n";}?>
  37. <?php   if ( isset ( $msg ) )   { echo '                        <p class="msg">' . $msg . '</p>' . "\n";        } else {//if we have a mesage we don't need this form again.?>
  38.        
  39.    
  40.  
  41.  
  42.                 <form class="form" action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
  43.  
  44.                         <input type="hidden" name="_submit_check" value="1"/>
  45.                
  46.               <table width="100%" border="0" align="center">
  47.                       <tr>
  48.                         <td colspan="2"><span style="margin-top:12px; margin-bottom:10px">Email</span></td>
  49.                         <td width="81%"><span style="margin-top:12px; margin-bottom:10px">
  50.                           <input class="input" type="text" name="Email"  size="50"  value="<?php if ( isset ( $Email ) ) { echo $Email; } else { echo $r['Email']; } ?>" />
  51.                         </span></td>
  52.                 </tr>
  53.                      
  54.                        
  55.                      
  56.                        
  57.                       <tr>
  58.                         <td colspan="2"><input type="submit" name="update_email" value="update_email"   alt="submit" title="submit" /></td>
  59.                         <td> </td>
  60.                 </tr>
  61.                       <tr>
  62.                         <td width="15%"><a href="contatti.php?subject=forgot_password">Recupera Password</a></td>
  63.                         <td width="4%"> </td>
  64.                         <td><a href="contatti.php">Chiedi informazioni</a></td>
  65.                 </tr>
  66.               </table>
  67.                 </form>
  68.                 <?php } ?>
  69.        
  70.        
  71.        
  72.  
  73.  <a href="logout.php">logout</a><br><a href="members.php">Torna indietro</a>
  74.    <?php require_once(dirname(__FILE__) . '/footer.php');
  75. ?>


PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1702
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 17:33
Domenica, 29/11/2009
dalla query non so dirti nulla :D
dov'è il la porizioe di codice che permetterebbe l'update?

Ultima modifica effettuata da Thejuster il 29/11/2009 alle 17:34


PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 17:41
Domenica, 29/11/2009
Testo quotato

Postato originariamente da Thejuster:

dalla query non so dirti nulla :D
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.

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 20:14
Domenica, 29/11/2009
niente?

idee?.
grazie buon lunedì.:)

PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1702
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 0:45
Lunedì, 30/11/2009
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) { }












PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 13:55
Lunedì, 30/11/2009
Testo quotato

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.
:)

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 14:05
Lunedì, 30/11/2009
Ho provato anche cosi, ma nulla,
come mai.?

Codice sorgente - presumibilmente Php

  1. <?php
  2. require_once(dirname(__FILE__) . '/../auth.php');
  3. require_once(dirname(__FILE__) . "/../header.php");
  4.  
  5.        
  6. $codice=$_POST['codice'];
  7.  
  8.  
  9.  
  10. if(isset($_POST["update_email"]))
  11. {
  12. $Email = mysql_codifica($_POST["Email"]);
  13. $user = mysql_codifica((int)$_SESSION["user_id"]);
  14. $Email2 = mysql_codifica($_POST["Email2"]);    
  15.                
  16.                
  17.                 //elseif($_SESSION['captcha'] == $_POST['codice']) {
  18.                
  19.                
  20.                         if ($Email !=  $Email2 )
  21.                         {
  22.                         $error  = "Update";
  23.                         }
  24.                         elseif (!checkUnique('Email', $Email) )
  25.                         {
  26.                                 $error = 'The email you used is associated with another user. Please try again or use the "forgot password" feature!';
  27.                         }else
  28.                         {
  29.                         $update = "UPDATE `users` SET `Email` = '" . mysql_real_escape_string ( $Email ) . "'";
  30.            
  31.          
  32.            
  33.                                         $update .= " WHERE `ID` = '" . mysql_real_escape_string ( $user ) . "'";
  34.                                         mysql_query ( $update );
  35.                                         $msg = 'Your profile was successfully updated!';
  36.                         }
  37.                
  38.                        
  39.                        
  40. }
  41.  
  42.                        
  43.        
  44.        
  45.                        
  46.                                
  47.                
  48.         /*
  49.         }else{
  50.                 $error =  'Codice Errato';
  51.         }
  52.        
  53.         */
  54.  
  55.  
  56.          $query = mysql_query ( "SELECT * FROM `users` WHERE `ID` = '" . mysql_real_escape_string ( $_SESSION['user_id'] ) . "'" );
  57.     $r= mysql_fetch_assoc ( $query );
  58.  
  59. ?>
  60.         <p class="title2">Update Email</p>
  61. <?php if(isset($error)){ echo '                 <p class="error">' . $error . '</p>' . "\n";}?>
  62. <?php   if ( isset ( $msg ) )   { echo '                        <p class="msg">' . $msg . '</p>' . "\n";        } else {//if we have a mesage we don't need this form again.?>
  63.        
  64.    
  65.  
  66.  
  67.                 <form class="form" action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
  68.  
  69.                         <input type="hidden" name="_submit_check" value="1"/>
  70.                
  71.               <table width="100%" border="0" align="center">
  72.                       <tr>
  73.                         <td colspan="2"><span style="margin-top:12px; margin-bottom:10px">Email</span></td>
  74.                         <td width="81%"><span style="margin-top:12px; margin-bottom:10px">
  75.                           <input class="input" type="text" name="Email" id="Email" size="50"  value="<?php if ( isset ( $Email ) ) { echo $Email; } else { echo $r['Email']; } ?>" />
  76.                                   <input class="input" type="hidden" name="Email2" id="Email2" size="50"  value="<?php if ( isset ( $Email2 ) ) { echo $Email2; } else { echo $_POST['Email2']; } ?>" />
  77.                         </span></td>
  78.                 </tr>
  79.                      
  80.                        
  81.                       <tr>
  82.                         <td colspan="2"><span style="margin-bottom:6px"> Codice di sicurezza </span></td>
  83.                         <td><span style="margin-bottom:6px">
  84.                           <img src="./libs/captcha.php">
  85.                                   <input type="text" name="codice" size="5" maxlength="6">
  86.                         </span></td>
  87.                 </tr>
  88.                        
  89.                       <tr>
  90.                         <td colspan="2"><input type="submit" name="update_email" value="update_email"   alt="submit" title="submit" /></td>
  91.                         <td> </td>
  92.                 </tr>
  93.                       <tr>
  94.                         <td width="15%"><a href="contatti.php?subject=forgot_password">Recupera Password</a></td>
  95.                         <td width="4%"> </td>
  96.                         <td><a href="contatti.php">Chiedi informazioni</a></td>
  97.                 </tr>
  98.               </table>
  99.                 </form>
  100.                 <?php } ?>
  101.                 <?php require_once(dirname(__FILE__) . '/../footer.php');?>


PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 20:22
Lunedì, 30/11/2009
nulla?

Come posso risolvere il problema?.

grazie. :)

PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1702
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 13:38
Martedì, 01/12/2009
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

  1. <?
  2.  
  3. //creo una classe
  4. class checkmail {
  5.  
  6. //creo una funzione
  7. function check($mail1,$mail2) {
  8.  
  9. //se le 2 email non sono uguali ritorna true
  10. if($mail1 != $mail2) {
  11.  
  12. return "true";
  13.  
  14. } else {
  15.  
  16. //altrimenti ritorna false
  17. return "false";
  18. }
  19.  
  20. }
  21.  
  22. }
  23.  
  24. ?>




Poi dal tuo file dov'è contenuto il form farei in questo modo

Codice sorgente - presumibilmente PHP

  1. <?
  2. // Le 2 variabili Email le hai gia dichiarate e assegnato il loro valore.
  3. // quindi devi eseguire un semplice check
  4.  
  5. include("fileclasse.php");
  6.  
  7. $cm = new checkmail;
  8.  
  9.  
  10. $risultato = $cm->check($Email,$Email2);
  11.  
  12. echo $risultato;
  13. ?>



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


PM Quote