Я в основном заполнил форму смены пароля. У меня только одна проблема. Когда пользователь хочет изменить свой пароль, он запрашивает «Текущий пароль», «Новый пароль» и «Новый пароль снова». Итак, вот моя ошибка: когда я ввожу «Текущий пароль», и он прямо в базе данных, а затем нажимаю «Отправить», в «ошибках» ничего не отображается, если хотите. Я хочу, чтобы это в основном показывало: «Пожалуйста, заполните всю форму»
Изображение 1:
Изображение 2:
На рисунке 2 он должен отображаться под домом «Пожалуйста, заполните всю форму»
Вот мой код:
<?php
session_start();$username = $_SESSION['sess_user'];
echo '<div class="search1"><h2>'.$username.'</h2><div class="search12"><h2><a href="index.php">Home</a></h2></p></div></div>';if (isset($_SESSION['sess_user']))
{
//user is logged in
if (isset($_POST['submit']))
{
//start changing password
//check fields
$oldpassword = md5($_POST['oldpassword']);
$newpassword = md5($_POST['newpassword']);$repeatnewpassword = md5($_POST['repeatnewpassword']);//check password against db
include('../includes/config.php');
$queryget = mysql_query("SELECT password FROM login WHERE username='$username'") or die ("change password failed");
$row = mysql_fetch_assoc($queryget);
$oldpassworddb = $row['password'];
//check passwords
if ($oldpassword==$oldpassworddb && !empty($_POST['oldpassword']))
else {echo "<div class='results'>Please fill out the whole form</div><div class='successmate'><h2><p><a href='changepassword.php'><br><br></a></p></h2></div>";}
{if (isset($_POST['repeatnewpassword']) AND isset($_POST['newpassword']) AND $_POST['newpassword'] != '') {
if ($newpassword==$repeatnewpassword)
{
$querychange = mysql_query("UPDATE login SET password='$newpassword' WHERE username='$username'");
echo "<div class='successmate'><br><br><br><br><hr>Password has been changed!</hr></div><div class='successmate'><br><hr><br><h2><p><a href='index2.php'><br><br></a></p></h2></div>";
}
else {echo "<div class='results'>new password(s) dont match</div><div class='successmate'><br><br><h2><p><a href='changepassword.php'>try again?</a></p></h2></div>";}
}}
else {echo "<div class='results'>current password doesnt match</div><div class='successmate'><h2><p><a href='changepassword.php'><br><br>Try again?</a></p></h2></div>";}
if (isset($_POST['email']) AND $_POST['email'] != '') {
$querychange = mysql_query("UPDATE login SET email='$email' WHERE username='$username'");
echo "<div class='successmate'><br><br><br><br><hr>Your email has been changed</hr></div><div class='successmate'><br><hr><br><h2><p><a href='index2.php'><br><br></a></p></h2></div>";
}}else
{
echo"<form class='search1' action='changepassword.php' method='POST'>
<label>Current Password:*</label> <input type='password' id='password' name='oldpassword' required><p>
<label>New Password:*</label> <input type='password' id='password' name='newpassword'><p>
<label>Repeat New Password:*</label> <input type='password' name='repeatnewpassword'><p>
<input type='submit' name='submit' class='submit' value='submit'><br><br><br>
<h2><p><a href='index2.php'>Back</a></p></h2>
</form>
";}}
else
die ("You must be logged in to change your password");?>
Я думаю, что проблема в вашем коде форматирования.
Насколько я понял из вашего кода, эта часть:
//check passwords
if ($oldpassword==$oldpassworddb && !empty($_POST['oldpassword']))
else {echo "<div class='results'>Please fill out the whole form</div><div class='successmate'><h2><p><a href='changepassword.php'><br><br></a></p></h2></div>";}
{
кажется, синтаксически запутался.
Вам необходимо перестроить и очистить код следующим образом:
<?php
session_start();
//opening if and other stuff you'll do here
//check passwords and your code correction done here
if ($oldpassword==$oldpassworddb && !empty($_POST['oldpassword']))
{
if (isset($_POST['repeatnewpassword']) AND isset($_POST['newpassword']) AND $_POST['newpassword'] != '')
{
if ($newpassword==$repeatnewpassword)
{
$querychange = mysql_query("UPDATE login SET password='$newpassword' WHERE username='$username'");
echo "<div class='successmate'><br><br><br><br><hr>Password has been changed!</hr></div><div class='successmate'><br><hr><br><h2><p><a href='index2.php'><br><br></a></p></h2></div>";
}
else
{
echo "<div class='results'>new password(s) dont match</div><div class='successmate'><br><br><h2><p><a href='changepassword.php'>try again?</a></p></h2></div>";//I removed an extra curly brace here
}
}
else
{
echo "<div class='results'>Please fill out the whole form</div><div class='successmate'><h2><p><a href='changepassword.php'><br><br></a></p></h2></div>";
}
}else
{
echo "<div class='results'>current password doesnt match</div><div class='successmate'><h2><p><a href='changepassword.php'><br><br>Try again?</a></p></h2></div>";
}//do your rest of the work here and end your opening if?>
Честно говоря, ваш код выглядит ужасно. Одним из признаков хорошего разработчика является то, что он / она делает код читаемым, и один из способов сделать ваш код читабельным — следовать правильному отступу в блоках кода. Все ваши блоки if-else выглядят ужасно, вам кажется, что их вообще не заботит отступ. Результат? Вы можете убедиться сами. Вы все испортили в коде, и мне было трудно понять ваши блоки if-else, где они начинались и где заканчивались. Вы должны очень серьезно перейти по следующей ссылке: http://www.riedquat.de/prog/style
Там потоки логики, которые здесь не так …
Ты говоришь…
if ($oldpassword==$oldpassworddb && !empty($_POST['oldpassword'])) else { ... } { ... }
… что не имеет смысла. Если что-то есть, то делай это, иначе делай то, что должно быть заявлением.