
会員登録した後、ホームページの中の登録情報変更で、フォームに変更したいパスワードを入力して変更するようにしたいと思い、次のようなコードでやってみたところ、パスワードが変更されたみたいですが、変更したパスワードではログインできません。変更前のパスワードも使えなくなりました。
小生初心者で見よう見真似に書いたものですから、解決に苦慮しております。
どこに問題がありますでしょうか。どなたかお知恵をお貸しください。
<?php
require_once("../regist/db.php");
$dbh = db_connect();
$password_hash = password_hash($_post['password'], PASSWORD_DEFAULT);
try {
$dbh->beginTransaction();
$sql = "UPDATE member SET password=:password_hash WHERE code=$code";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':password_hash', $password_hash, PDO::PARAM_STR);
$stmt->execute();
$dbh->commit();
print "更新しました。次回ログインより有効!<br><a href='user.php'>登録情報一覧へ</a>";
} catch (PDOException $e) {
$dbh->rollBack();
print "エラー:". $e->getMessage();
}
?>
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
ご提示の内容だけでは判断できませんので、可能性だけを指摘します
テーブル項目 member.password の値を、ログイン時(select)も同様に扱っているか調査しましょう。違うアルゴリズムを使っていませんか?
変数 $code はどこから取得しているのでしょうか?
また、テーブル項目 master.code と直接比較していますが、事前に何かしら変換をする必要はないでしょうか?
余談ではありますが
SQL 内に $code を直接使うのは SQL インジェクションの脆弱性が生まれる原因になりえますので、bind_param の使用を強くお勧めします。
説明不足にも関わらず、ご丁寧に回答いただきありがとうございます。また、セキュリティ面についてもご心配いただきありがとうございます。
最初から、説明いたしますと、
まず、メールを使った仮会員登録をします。送られてきたメールについているURLより、本登録をします。本登録した会員は、会員専用のWEBアプリにログインします。その時、会員ナンバーと会員名をページ上に表示します。ナビボタンを使ってページを切り替えます。それぞれのページに会員ナンバーと会員名を表示するためにSESSIONを使って使っています。
ページは、ホーム(お知らせ等を表示)、請求ダウンロード(請求書をダウンロードできる)、会員情報の確認と変更(登録した内容の一部をここで変更できる。パスワードもここで変更できるようにしている)、ログアウトという構成になっています。
お尋ねしているパスワードの件ですが、
まず次のコートが、最初の会員登録です。そして、最初に書いたように変更するコードがあります。
会員登録は、form、check、insertと3つのファイルを作っています。
変更も、確認用のファイル、変更入力ができるcheck、変更するためのupdateというファイル構成になっています。
以上で、足りますでしょうか。何かしらで結構ですので、アドバイスなどいただけましたら幸いです。
文字アーバーなのでコードは別にします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
verify@twitter.comから、メー...
-
Excelのセルにユーザー名...
-
CSVファイルを添付するときにパ...
-
メールを返信したら、英語のメ...
-
runas実行した時にきかれるパス...
-
メールエラー
-
不正ログインされました。対応...
-
存在しないアドレスにメールを...
-
pixivで新規登録しようと思い、...
-
インスタの乗っ取り解除につい...
-
CDにパスワードをかける
-
sageがついてるメールアドレス
-
Steamのアカウントにログインで...
-
Yahooメールにログインできません
-
WPS office のシリアル番号の確...
-
NTT VG430i/830a adminのユー...
-
xvideosに無料会員登録したい
-
Access ファイルの権限を設定...
-
Twitter verify@twitter.comに...
-
LINE TCBというところからLINE...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルを添付するときにパ...
-
Excelのセルにユーザー名...
-
Steamのアカウントにログインで...
-
メールを返信したら、英語のメ...
-
カカオで退会せずに、アプリだ...
-
runas実行した時にきかれるパス...
-
ユニクロやGUのシフト管理アプ...
-
インスタの乗っ取り解除につい...
-
メールアドレスで上付きのハイフン
-
「そのメールアドレスはすでに...
-
メールエラー
-
pixivで新規登録しようと思い、...
-
携帯電話を解約してもSMSの受信...
-
インスタのアイコンについてるN...
-
「@」(アットマーク)の無いメ...
-
verify@twitter.comから、メー...
-
カカオトークを退会せずにアン...
-
pixivでロム専・登録したばかり...
-
CDにパスワードをかける
-
~@live.jpのメール受信につい...
おすすめ情報
<?php
session_start();
header("Content-type: text/html; charset=utf-8");
if ($_POST['token'] != $_SESSION['token']){
echo "不正アクセスの可能性あり";
exit();
}
header('X-FRAME-OPTIONS: SAMEORIGIN');
require_once("db.php");
$dbh = db_connect();
$errors = array();
if(empty($_POST)) {
header("Location: registration_mail_form.php");
exit();
}
$mail = $_SESSION['mail'];
$code = $_SESSION['code'];
$company = $_SESSION['company'];
$rep = $_SESSION['rep'];
$phone = $_SESSION['phone'];
$password_hash = password_hash($_SESSION['password'], PASSWORD_DEFAULT);
try{
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->beginTransaction();
$stmt = $dbh->prepare("INSERT INTO member (code,company,mail,rep,phone,password,status,created_at,updated_at) VALUES (:code,:company,:mail,:rep,:phone,:password_hash,1,now(),now())");
$stmt->bindValue(':code', $code, PDO::PARAM_STR);
$stmt->bindValue(':company', $company, PDO::PARAM_STR);
$stmt->bindValue(':rep', $rep, PDO::PARAM_STR);
$stmt->bindValue(':phone', $phone, PDO::PARAM_STR);
$stmt->bindValue(':mail', $mail, PDO::PARAM_STR);
$stmt->bindValue(':password_hash', $password_hash, PDO::PARAM_STR);
$stmt->execute();
$stmt = $dbh->prepare("UPDATE pre_member SET flag=1 WHERE mail=(:mail)");
$stmt->bindValue(':mail', $mail, PDO::PARAM_STR);
$stmt->execute();