更新-私はついにこれを理解し、以下に答えを追加しました:- )(システムが許可するとすぐに答えとして受け入れます)
いくつかの状況で同様の問題が発生したため、私はおそらく非常に単純なことを間違って行っている(つまり、変数を間違って呼び出している)と思います。
パスワードリセットフォームを作成していますが、さまざまな手順とフォームセクションを1ページに含めたいと思います。これを行うには、一連のelseifステートメントを使用して、表示するhtmlコードや実行するphpスクリプトを決定し、一連のクエリが成功または失敗したときに変数の値を変更します。
クエリをテストし、var値が正しく変更されましたが(確認のために各ステップで値をエコーしました)、var値を手動で設定しない限り、正しい結果が表示されません。
質問の目的で、2つの簡略化されたスニペットを含めました-非常に基本的なシナリオ(コードに簡単に適用できます)と、コードの簡略化されたバージョンです。必要に応じて、コード全体を共有できれば幸いです。 。
編集-GLOBAL $status;
問題だったオフチャンスで、$statusに新しい値を設定する前に呼び出してみました。
基本的なシナリオ:
<?php
//session_start and connect to database
$status="start";
?>
<?php $status="start"; ?>
<?php if ($status == "start") { ?>
Check if expiry valid & retrieve info
<?php $status = "expiry_ok"; ?>
<?php }
elseif ($status == "expiry_ok")
{ ?>
Date is Valid
<?php } ?>
クエリの簡略化されたバージョン:
<?php if ($status == "start"){
//Identify the $temp_password by removing the URL
$restorepasslink="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$new_pass = str_replace("http://click2fit.com/demo/restorepass.php/", "", $restorepasslink);
//Query db to check if expiry_date has passed
$qry="SELECT * FROM password_reset WHERE temp_password = '$new_pass'";
$result=mysql_query($qry);
if($result) {
$token = mysql_fetch_assoc($result);
$token_expiry_date = $token['expiry_date'];
// Other $token values are also set here
if($date < $token_expiry_date) {
$status = "expiry_ok";
}else {
$status = "expiry_notok";
}
}
?>
注:チュートリアルのほとんどはまだPDOではなくmysqlクエリ用に作成されているため、PDOに切り替える前に、まずすべてをそのように機能させるようにしています。