Добър ден опитвам да си направя система за промяна на парола за simple mashines forum(smf) зная че паролата мога да си я сменям и от профила ми, но идеята ми е да си направя отделен скрипт за тази цел направих един скрипт в доста стар вариянт но като опитам да променя паролата все ми казва грешна стара парола немога да разбера къде греша затова моля за помощ ето до къде съм стигнал:
Ето по този начин криптира паролата в две отделни полета в базата с данни едното поле е: passwd а другото е password_salt
Направих си още една система за регистрация и тя работи идеално
но с тази за промяна на паролата се затрудянавам.
PHP:
<?php
include("connection.php");
echo '<form name="changepassword" method="POST">
<span>Потребителско име в форума:</span><br />
<input type="text" class="txt" name="user" /><br />
<span>Емайл:</span><br />
<input type="text" class="txt" name="email" /><br />
<span>Стара парола в форума:</span><br />
<input type="password" class="txt" name="oldpass" /><br />
<span>Нова парола в форума:</span><br />
<input type="password" class="txt" name="password" /><br />
<span>Повтори парола в форума:</span><br />
<input type="password" class="txt" name="cpassword" /><br />
<input type="submit" name="changepassword" value="Промени парола" />
</form>';
if($_POST['changepassword'])
{
$oldpass = $_POST['oldpass'];
$oldpass=sha1(strtolower($user).$oldpass);
$password_salt=substr(md5(rand()), 0, 4);
$password = $_POST['password'];
$cpassword = $_POST['cpassword'];
if($password != $cpassword) {
echo "<div class='error'>Паролите не съвпадат</div>";
}else{
$password=sha1(strtolower($user).$password);
$password_salt=substr(md5(rand()), 0, 4);
$email = addslashes(htmlspecialchars($_POST['email']));
$user = addslashes(htmlspecialchars($_POST['user']));
if($user == NULL ||$oldpass == NULL ||$password == NULL ||$cpassword
== NULL || $email == NULL){
echo "<div class='error'>Съжалявам, но не сте попълнили всички полета</div>";
}else{
$res = mysql_query("SELECT * FROM `smf_members` WHERE member_name='$user'");
$row = mysql_fetch_assoc($res);
if($oldpass != $row['passwd']){
echo "<div class='error'>Грешна сегашна парола</div>";
}else{
$nq = "UPDATE `smf_members` SET passwd='$password' WHERE
email_address='$email' AND passwd='$oldpass' AND password_salt='$oldpass'";
$nr = mysql_query($nq);
echo "<div class='success'>$_POST[user].Вие успешно си променихте вашата стара парола
от $_POST[oldpass]. на вашата нова парола е: $_POST[password].</div>";
}
}
}
}
?>
Ето по този начин криптира паролата в две отделни полета в базата с данни едното поле е: passwd а другото е password_salt
PHP:
$password=sha1(strtolower($user).$password);
$password_salt=substr(md5(rand()), 0, 4);
Направих си още една система за регистрация и тя работи идеално
но с тази за промяна на паролата се затрудянавам.