私は自分のウェブサイトにログインシステムを持っており、パスワードリセットを作成しようとしています。登録やログインコードに問題はありませんが、パスワード変更コードは機能しません。私が試した2つの例(実際のコード)MySQL PHP - テーブルに新しい値を挿入/更新できません
<?php
require_once("config.php");
session_start();
if(isset($_POST['submit'])) {
include_once 'config.php';
$password = mysqli_real_escape_string($con, $_POST['password']);
$password1 = mysqli_real_escape_string($con, $_POST['uc_pass1']);
$password2 = mysqli_real_escape_string($con, $_POST['uc_pass2']);
$uid = $_SESSION['s_id'];
if ($password1 != $password2 || empty($password1) || empty($password2)) {
header("Location: ../user-conf.php?pass=notmatching");
exit();
} else {
$sql = "SELECT password FROM userdb WHERE username='$uid'";
$result = mysqli_query($con, $sql);
$resultCheck = mysqli_num_rows($result);
if (!$resultCheck > 0) {
header("Location: ../user-conf.php?error");
exit();
} else {
$hashedPwdCheck = password_verify($password, $_SESSION['s_pw']);
if ($hashedPwdCheck == false) {
header("Location: ../user-conf.php?error");
exit();
} elseif ($hashedPwdCheck == true) {
$hashedPwd2 = password_hash($password1, PASSWORD_DEFAULT);
$sql2 = "INSERT INTO userdb (password) VALUES($hashedPwd2) WHERE username=$uid";
mysqli_query($con, $sql2);
header("Location: ../user-conf.php?pass=successfull");
exit();
}
}
}
} else {
header("Location: ../login.php?nologon");
}
?>
そしてもう1つは以下のとおりです。
<?php
require_once("config.php");
session_start();
if(isset($_POST['submit'])) {
include_once 'config.php';
$password = mysqli_real_escape_string($con, $_POST['password']);
$password1 = mysqli_real_escape_string($con, $_POST['uc_pass1']);
$password2 = mysqli_real_escape_string($con, $_POST['uc_pass2']);
$uid = $_SESSION['s_id'];
if ($password1 != $password2 || empty($password1) || empty($password2)) {
header("Location: ../user-conf.php?pass=notmatching");
exit();
} else {
$hashedPwdCheck = password_verify($password, $_SESSION['s_pw']);
if ($hashedPwdCheck == false) {
header("Location: ../user-conf.php?error");
exit();
} elseif ($hashedPwdCheck == true) {
$hashedPwd = password_hash($password1, PASSWORD_DEFAULT);
$sql = "INSERT INTO userdb (password) VALUES($hashedPwd) WHERE username=$uid";
mysqli_query($con, $sql);
header("Location: ../user-conf.php?pass=successfull");
exit();
}
}
} else {
header("Location: ../login.php?nologon");
}
?>
私もUPDATE構文を試してみました。しかし、それは新しいパスワードで古いパスワードを変更するようには思われませんでした。私が間違っていたことを知ってうれしいです。あなたが私に教えてくださいとそれが感謝されます知っている! :)
そして、すべてを正しく完了したように(「?pass = successfull」)私には通知しますが、テーブルのパスワード列には何も変わりません。 uc_pass1 =(新しいパスの入力)とuc_pass2 =(確認パスの入力)を疑問に思っている場合はHTMLコードでも。そこには何も間違っていませんか? –
あなたは挿入または更新しますか? "INSERT INTO userdb(password)VALUES($ hashedPwd)WHERE username = $ uid"は、両方の奇妙な組み合わせです。 –
"*私が間違っていたことを知ってうれしいです*" - まあ、ほとんどすべて..相対的なリダイレクトから 'header'を介して、パラメータ化されたクエリを使わないことに..これはおそらく新しいですか?あなたが投稿したコードは、1999年のチュートリアルに似ています。これらのタスクに対する言語とアプローチは進化しています。私はあなたを批判しようとはしていません。改善の余地があります。あなたのスキルをさらに進歩させて欲しい、侮辱や侮辱として私のコメントを控えてください。良い開発者がいなくてはならないと言っています。 – Mjh