Cambia Password

valient13

Utente Attivo
6 Apr 2012
96
0
0
Sicilia
Sto creando un file per cambiare la password di un account solo che non mi da sempre password vecchia sbagliata:
PHP:
$id_utente = $_SESSION['id_utente'];
#metodo per cambiare la password
	if (isset($_POST["invia"])) {
		$oldpassword=$_POST['oldpassword'];
		$newpassword=$_POST['newpassword'];
		#controllo della password vecchia
		$query = @mysql_query("SELECT id_utente='$id_utente' FROM iscritti WHERE password='$oldpassword'") or die('Errore: ' . mysql_error()); 
		# controllo sulla presenza di una corrispondenza prodotta dal confronto
		$conta = @mysql_num_rows($query);
		# se il confronto genera una corrispondenza..
		if ($conta == 1) 
			{
			  # ..Viene cambiata la password con quella nuova
			  echo "<b>Password Giusta</b>";
			  return TRUE;
			}else{
			  # ..altrimenti l'esito sarà negativo
			  echo "<b>Password Vecchia Sbagliata</b>";
			  return FALSE;
		}
	}
 <!-- Content -->
  <div id="content">
  	<div id="conteiner">
  		<div align="center">
  			<h2>Cambia Password</h2>
  			<div id="profile">
	  			<form name="cambiapassword" method="post">
					  	<b>Vecchia Password:</b> <br />
					  	<input type="TEXT" name="oldpassword" class="tb11"><br>
						<b>Nuova Password:</b> <br />
						<input name="newpassword" id="newpassword" class="tb11" />
						<br />
						<button name="invia" class="tb12">Invia</button>
	  			</form>
  			</div>
  		</div>
  	</div>

EDIT:
Ci ho pensato ora, vero la password è criptata in MD5, come faccio a decriptarla e fargli fare il controllo?
 
ciao,

PHP:
$oldpassword=md5($_POST['oldpassword']);
 
modificato in questo modo:
PHP:
<?php 
	# inizializzazione della sessione
	@session_start();
	# inclusione del file di funzione
	@include_once 'functions.php';
	# istanza della classe
	$obj = new Iscrizioni();
	# chiamata al metodo per la verifica della sessione
	if (!$obj->verifica_sessione())
	{
	  #redirect in caso di sessione non verificata
	  @header("location:errore2.php");
	}
	# identificativo univoco dell'utente
	$id_utente = $_SESSION['id_utente'];

	require_once 'header.php';

	
	#metodo per cambiare la password
	if (isset($_POST["invia"])) {
		$oldpassword=md5($_POST['oldpassword']);
		$newpassword=md5($_POST['newpassword']);
		#controllo della password vecchia
		$query = @mysql_query("SELECT id_utente='$id_utente' FROM iscritti WHERE password='$oldpassword'") or die('Errore: ' . mysql_error()); 
		# controllo sulla presenza di una corrispondenza prodotta dal confronto
		$conta = @mysql_num_rows($query);
		# se il confronto genera una corrispondenza..
		if ($conta == 1) 
			{
			  # ..Viene cambiata la password con quella nuova
			  echo "<b>Password Giusta</b>";
			  return TRUE;
			}else{
			  # ..altrimenti l'esito sarà negativo
			  echo "<b>Password Vecchia Sbagliata</b>";
			  return FALSE;
		}
	}
?>

  <!-- Content -->
  <div id="content">
  	<div id="conteiner">
  		<div align="center">
  			<h2>Cambia Password</h2>
  			<div id="profile">
	  			<form name="cambiapassword" method="post">
					  	<b>Vecchia Password:</b> <br />
					  	<input type="TEXT" name="oldpassword" class="tb11"><br>
						<b>Nuova Password:</b> <br />
						<input name="newpassword" id="newpassword" class="tb11" />
						<br />
						<button name="invia" class="tb12">Invia</button>
	  			</form>
  			</div>
  		</div>
  	</div>
    <?php require_once 'sidebar.php'; ?>
  </div>
  
<?php require_once 'footer.php'; ?>

ma niente.. mi da sempre la password sbagliata
 
Ciao,
vedo ora che la query è sbagliata :

non

PHP:
SELECT id_utente='$id_utente' FROM iscritti WHERE password='$oldpassword'

ma

PHP:
SELECT id_utente FROM iscritti WHERE  id_utente='$id_utente' && password='$oldpassword'
 
Prova così; ho aggiunto parecchi commenti per farti capire dove sbagli:
PHP:
<?php
// è sconsigliato l'uso del cancelletto (#) per i commenti
// è sconsigliato l'uso dell'operatore silence (@)

session_start();

// usa require_once invece di include_once e specifica un percorso assolutp
require_once __DIR__ . '/functions.php';

// dai un nome sensato alle variabili di istanza
$iscrizioni = new Iscrizioni();

if (!$iscrizioni->verifica_sessione())
{
    // usa le virgolette solo se necessario, altrimenti gli apici
    header('Location: errore2.php');

    // interrompi lo script dopo un refresh per evitare il caricamento del
    // resto della pagina
    exit();
}

$id_utente = $_SESSION['id_utente'];

require_once __DIR__ . '/header.php';

// invece di controllare l'esistenza del pulsante di invio, controlla il metodo
// usato nella richiesta HTTP
if ('POST' === $_SERVER['REQUEST_METHOD']) {
    // nei nomi di variabile separa le diverse parole tramite underscore o
    // maiuscole
    $old_password = md5($_POST['old_password']);
    $new_password = md5($_POST['new_password']);
    
    $sql = sprintf("SELECT * FROM iscritti WHERE id_utente = %d AND password = '%s'", $id_utente, $old_password);
    $query = mysql_query($sql) or die(mysql_error());
    
    if (mysql_num_rows($query) > 0) {
        echo "<b>Password Giusta</b>";
    } else{
        echo "<b>Password Vecchia Sbagliata</b>";
    }
} else {
    echo <<<EOF
        <!-- Content -->
        <div id="content">
            <div id="conteiner">
                <div align="center">
                    <h2>Cambia Password</h2>
                    <div id="profile">
                        <form name="cambiapassword" method="post">
                            <b>Vecchia Password:</b><br>
                            <input type="text" name="old_password" class="tb11"><br>
                            
                            <b>Nuova Password:</b> <br>
                            <input name="newpassword" id="new_password" class="tb11" />
                            
                            <br>
                            
                            <button type="submit" class="tb12">Invia</button>
                        </form>
                    </div>
                </div>
            </div>
EOF;

    require_once __DIR__ . '/sidebar.php';

    echo <<<EOF
        </div>
EOF;
}

require_once __DIR__ . '/footer.php';
?>
 
ciao
@alex
scusa solita domanda
ho notato che scrivi
PHP:
<?php
//....
$sql = sprintf("SELECT * FROM iscritti WHERE id_utente = %d AND password = '%s'", $id_utente, $old_password); 
//...
?>
che vantaggio c'è rispetto a
PHP:
<?php
//....
$sql = "SELECT * FROM iscritti WHERE id_utente = $id_utente AND password = '$old_password'"; 
//...
?>
?
 

Discussioni simili