EDIT: Внутри config.php Я создаю и поддерживаю сеанс. Как и через это подключение к MySQL.Php 5.5 сменить пароль
Я пытаюсь узнать, как использовать PHP 5.5 Password_hash и password_verify как больше опыта обучения, чем что-либо еще, я не делал этого слишком долго, и это первый раз, когда мне пришлось задавать вопрос здесь (обычно кто-то уже задал мой вопрос)
Итак, вот моя проблема.
я могу получить password_hash и password_verify работать хорошо, когда я зарегистрироваться и войти в Но по какой-то причине, когда я использую скрипт для изменения паролей, я больше не могу войти
Relavent фрагменты кода:..
Регистрация:
<?php
include('config.php');
$password = mysql_real_escape_string($_POST['password']);
$username = mysql_real_escape_string($_POST['username']);
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
$sql = 'INSERT INTO Staff (username, password) ' .
"VALUES ('$username', '$hashed_password')";
mysql_query($sql) or die(mysql_error());
?>
RegisterHTML:
<div id="login-content">
<form action="register.php" method="post">
<fieldset id="inputs">
<div class="label"></div><input type="text" name="username"/><br />
<div class="label"></div><input type="password" name="password"/><br />
</fieldset>
<input class="button" type="submit" value="Register" />
</form>
</div>
ChangePwd:
<?php
include('config.php');
$password = mysql_real_escape_string($_POST['newPassword']);
$password2 = mysql_real_escape_string($_POST['confirmPassword']);
$username = ($_SESSION['username']);
if ($password <> $password2) {
echo "Your passwords do not match.";
}
else if ($password === $password2){
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
$sql = "UPDATE Staff SET password='$hashed_password' WHERE username='$username'";
mysql_query($sql) or die(mysql_error());
}
else { mysqli_error($con); }
mysqli_close($con);
?>
ChangePwdHTML:
<?php
include('config.php');
?>
<div id="login-content">
<form action="changePassword.php" method="post">
<fieldset id="inputs">
<div class="label"></div><input type="password" name="passwordNew"/><br />
<div class="label"></div><input type="password" name="passwordConfirm"/><br />
</fieldset>
<input class="button" type="submit" value="Change Password" />
</form>
</div>
Connect:
<?php
include('config.php');
$username = mysql_real_escape_string(stripslashes($_POST['username']));
$password = stripslashes($_POST['password']);
$sql = ('SELECT password,id,rank FROM Staff WHERE username="'.$username.'"');
$req = mysql_query($sql) or die(mysql_error());
$dn = mysql_fetch_assoc($req);
$hash = $dn['password'];
if(password_verify($password, $hash))
{
$_SESSION['username'] = $_POST['username'];
$_SESSION['userid'] = $dn['id'];
$_SESSION['rank'] = $dn['rank'];
$username = mysql_real_escape_string(stripslashes($_POST['username']));
$password = stripslashes($_POST['password']);
?>
Я уверен, что мой код довольно грязный, и некоторые из них датирована ... его рода. .. franken-code на данный момент, построенный из различных примеров и учебных пособий, которые я нашел.
Я также вижу некоторые mysqli, вы не можете объединить это с mysql. Но вы действительно должны переключать все на mysqli или PDO и использовать подготовленные инструкции. – jeroen
PHP 5.5 не поддерживает функции 'mysql_'. Кроме того, неясно, начали ли вы сеанс или нет. –
@ Fred-ii- Нет, это будет просто ошибка с предупреждениями ;-) – jeroen