When a user wants to change their password there are 3 labels, 1 for the old password and the other 2 for the new password and for the confirmation. If I enter all the fields correctly, everything goes as I want, but if the new password and its confirmation are different, change the password as if there was an error, when there is. I have tried some solutions but nothing seems to work. p>
Php Code
<?php
session_start();
if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true){
}
else{
header("location: index.php");
}
require_once ('ligaDB.php');
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['send'])) {
require_once ('ligaDB.php'); // Connect to the db.
$email = $con->real_escape_string(trim($_POST['email']));
$p = $con->real_escape_string(trim($_POST['pass']));
$id = $_SESSION['user_id'];
This is what I want you to do when the passwords do not match but it does not work, it does not look like this.
if ($_POST['pass1'] != $_POST['pass2']) {
$frase = "A sua senha não foi atualizada.";
header("location: mudar_passe.php?erro=$frase");
} else {
$np = $con->real_escape_string(trim($_POST['pass1']));
}
// verifica se a senha antiga está correta
$sql = "SELECT user_id FROM utilizadores WHERE (user_id='$id' AND user_senha=SHA1('$p') )";
$result = $con->query($sql);
if ($result->num_rows == 1) { // a senha está correta
$row = $result->fetch_array();
// atualiza a senha com o novo valor inserido
$q = "UPDATE utilizadores SET user_senha=SHA1('$np') WHERE user_id=$row[0]";
$r = $con->query($q);
if ($con->affected_rows == 1) { // Se foi afetada/atualizada uma linha
Come right here with the error and edit the password successfully.
$frase = "A sua senha foi atualizada.";
header("location: login_index.php?erro=$frase");
} else {
// Debugging message:
//echo '<p>' . mysqli_error($dbc) . '<br /><br />Query: ' . $q . '</p>';
$frase = "A senha não foi atualizada, ocorreu um erro no sistema.";
header("location: mudar_passe.php?erro=$frase");
}
include ('includes/footer.php');
exit();
} else { // Há problemas com os dados na base de dados, ou os dados não existem ou há email e senha repetidos
$frase = "A senha está incorreta!!.";
header("location: mudar_passe.php?erro=$frase");
}
$con->close(); // fecha a ligação à base de dados.
}
?>
HTML Code
<div class="container-fluid">
<div class="row">
<div class="page-header"><br>
<center><h2>Alterar Palavra-Passe</h2></center>
</div>
<center><form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<div class="form-group">
<label for="InputPasse">Palavra-Passe Atual</label><br>
<input id="InputPasse" name="pass" required="required" type="password" />
</div>
<div class="form-group">
<label for="InputPasse">Nova Palavra-Passe</label><br>
<input id="InputPasse" name="pass1" required="required" type="password" />
</div>
<div class="form-group">
<label for="InputPasse">Nova Palavra-Passe</label><br>
<input id="InputPasse" name="pass2" required="required" type="password" />
</div>
<input type="submit" name="send" class="btn btn-primary" value="Alterar">
<a href="login_index.php" class="btn btn-default">Cancelar</a>
</form><br><br><br>
<p>Boas <b><?php echo $_SESSION['username']?></b>, aqui poderás alterar a tua palavra-passe. </p></center>
</div>
</div>