PDA

Visualizza la versione completa : Cambio Password . . .


Nazza97
08-04-2012, 19:51
Salve a tutti, Ho creato questo script, però non capisco il problema ...

Dunque il codice è questo




<?php if(isset($_SESSION['username'])){ $id = $_GET['id']; $sel_info = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id='$id'")); } echo <<<EOT <form action="{$action}" method="POST" onSubmit="check_registrazione();"> Ins. Una Nuova Password:_ <input type="text" placeholder="Inserisci Password" class="impostazioni_colore_form_password" title="Inserisci La Nuova Password Che Verrà Usata Per Il Login!" name="password" required />

<input type="submit" name="submit" class="button_cambia_password" value="Cambia La Password!"></form> EOT; $password = addslashes(htmlspecialchars($_POST['password'])); if(empty($password)) die '<div class="notification failure hideit">Devi Riempire Tutti I Campi</div>'; $query = mysql_query("UPDATE users SET password='$password' WHERE id='$id'"); ?>



(Questo script cambia solo la password dell'id di quella determinata persona, e chiunque può cambiarla e non va bene questo..)

I Problemi Sono :
Per Far spuntare questo cambia password bisogno essere loggati (ho provato con else if ma non ci riesco)
.

Poi
Praticamente Ho Il sito diviso in ?id=1 ?id=2 etc...

(Voglio fare ad esempio il cambia password di facebook che ti determina la sessione e ti cambia la password senza mettere il nome utente nel form )

Non so se ci siamo capiti , se non lo è vi risponderò in seguito.

Alhazred
08-04-2012, 20:23
Il codice non metterlo tutto su una riga, riformattalo o diventa incomprensibile.

Al momento del login metti in sessione l'id dell'utente che si è appena loggato ed usi quello per determinare a chi cambiare la password.

damy11
08-04-2012, 20:26
Comincia col scrivere il codice usando gli spazi,per una questione di ordine e di organizzazione...comunque devi mettere una condizione alternativa all'if,prova così


<?php
if(!isset($_SESSION['username'])){
exit;
}else{
$id = $_GET['id'];
$sel_info = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id='$id'"));
echo <<<END
<form action="{$action}" method="POST" onSubmit="check_registrazione();">
Ins. Una Nuova Password:_ <input type="text" placeholder="Inserisci Password" class="impostazioni_colore_form_password" title="Inserisci La Nuova Password Che Verrà Usata Per Il Login!" name="password" required />


<input type="submit" name="submit" class="button_cambia_password" value="Cambia La Password!"/>
</form>
END;
$password = addslashes(htmlspecialchars($_POST['password']));
if(empty($password)){
echo "<div class=\"notification failure hideit\">Devi Riempire Tutti I Campi</div>";
}
}
?>

Nazza97
08-04-2012, 21:06
Si Ma Facendo exit non visualizzo il resto del codice....


Poi Non Capisco perchè anche mettendo un controllo che se è vuoto l'input dia l'errore però una volta che entri nella pagina dove c'è appunto l'input queso invia i dati nel database e anche mettendo
if (( $password == "d41d8cd98f00b204e9800998ecf8427e" )) exit;
Che sarebbe "vuoto" quella password, con die o exit poi non visualizzo il resto del codice...

damy11
08-04-2012, 21:22
Nel codice che ho postato se la sessione non è definita e quindi l'utente non è collegato viene eseguito exit() altrimenti procede al cambio della password...
Volendo potresti mettere un header("location:....."); prima di exit() per mandare l'utente a una pagina dove gli dici che non è collegato

Plopper
08-04-2012, 22:23
Attento:


$id = $_GET['id'];
$sel_info = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id='$id'"));

è vulnerabile a sql injection

Comunque opterei per la soluzione di damy ovvero l'header col redirect e l'exit

Loading