Есть ли способ быстро идентифицировать проблему с вложенными операциями if, получая постоянные ошибки, говорящие слишком много}, затем получая «Этот счет не знает, есть ли фигурные скобки внутри строки», при удалении некоторых скобок:Вложенные операторы if confusion - «Забыли пароль»
было интересно, если кто-то может пройти через меня, как отладить это правильно
мой код для сброса пользовательского пароля
Вот мой Код:
<?php
if (!$username && !$id){
if($_POST['resetbtn']){
// get the form data
$username = $_POST['username'];
$email = $_POST['email'];
// make sure info provided
if($username){
if($email){
if((strlen($email) > 7) && (strstr($email, "@")) && (strstr($email, "."))){
require("connect.php");
$find_email = $mysqli->query("SELECT * FROM `users` WHERE `username`='$username'");
if($find_email->num_rows){
while($row = $find_email->fetch_array(MYSQLI_ASSOC)){
$email = $row['email'];
if($dbemail == $email){
$options = [
'cost' => 10,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];
$pass = rand();
$pass= password_hash($pass, PASSWORD_BCRYPT, $options);
$query = ("UPDATE `users` SET `password` =? WHERE `username` =?");
$stmt = $mysqli->prepare($query);
$stmt->bind_param('ss',$pass,$username);
$stmt->execute();
if ($stmt->errno) {
echo "There was an error updating" . $stmt->error;
}
else echo "Updated {$stmt->affected_rows} rows";
$stmt->close();
// make sure the password was changed
$check_update = $mysqli->query("SELECT * FROM `users` WHERE `username`='$username' AND `password` ='$pass'");
if($check_update->num_rows){
$webmaster = "[email protected]";
$headers = "From: FortuneFilly<$webmaster>";
$subject = "Your New Password";
$message = "Hello. Your password has been reset. Password: $pass";
if(mail($email, $subject, $message, $headers)){
echo"Your password has been reset. An email has been sent with new password.";
}
else
echo"An error has occured and your email was not sent containing your new password";
}
else
echo"An error has occurred and the password was not reset";
}
else
echo"You entered the wrong email address";
}
}
$result->free();
}
else
echo"The username was not found";
mysqli_close();
}
else
echo "Please enter a valid email";
}
else
echo"Please enter your email";
}
else
echo"Please enter your username";
}
echo "<form action='fogotPass.php' method='POST'>
<table>
<tr>
<td>Username:</td>
<td><input type='text' name='user'</td>
</tr>
<tr>
<td>Email:</td>
<td><input type='text' name='email'</td>
</tr>
<tr>
<td></td>
<td><input type='submit' name='resetbtn' value='Reset password'</td>
</tr>
</table>
</form>";
}
else
echo "Please log out to view this page."
?>
Вы должны действительно избежать кодирования. как это .. эти утверждения 'if' могут быть просто называемые один за другим .. –
Возможно, проблемы рядом: "}} $ result-> free(); } "? –
Если есть какие-либо вложенные блоки, используйте небольшие функции. Они аккуратные, легко читаемые и легко отлаживаются. –