- ベストアンサー
phpの質問です。登録完了のメッセージが作動しない理由は?
- PHPの質問です。下記サイトを参考にして、ワンタイムURLの作成と登録確認のメール送信のテストをしています。メール送信とトークンは正常に動作していますが、登録完了のメッセージが表示されません。なぜでしょうか?
- ドキュメントルートにtokenフォルダを作成しています。参考サイトのソースコードを微調整して実装しました。
- クリックして「登録完了しました。」が作動しない問題が発生しています。なにか解決策はありますか?
- みんなの回答 (3)
- 専門家の回答
その他の回答 (2)
- agunuz
- ベストアンサー率65% (288/438)
>作動しません、 メールに記載されているURLは、index.phpですか?send.phpですか?で、 >if(isset($_GET["key"])){ >if(delete_old_token($_GET["key"])){ >print "登録完了しました。"; >}else{ >print 'もう一度初めからやり直してください。'; >} >} はどちらに書いているのですか? どちらに書いているにしても(当然メールに記載されているURLのスクリプトでないといけませんが、それは合っているとして)、スクリプトの先頭に書いているのですよね?
補足
何回もすみません、 index.phpのbodyの上部に <?php if(isset($_GET["key"])){ print "登録完了しました。"; }else{ print 'もう一度初めからやり直してください。'; } ?> を配置したところ、成功しました。 ありがとうございます。 蛇足の部分の ◎$_SERVER["HTTP_REFERER"]のようななアテにならないものを使うのはやめましょう。 上記でないとするとのような関数を使うのでしょうか?
- agunuz
- ベストアンサー率65% (288/438)
正しい($tokendirに存在する)tokenファイル名が引き渡されているか、ファイル更新時刻が正しく読み取れているかをチェックしてください。 global $tokendir; のあとに print $token . '<br>'; を、 if(is_file($tokendir.$file) && !is_null($token)){ のあとに print date('Y/m/d H:i:s') . '<br>' print date('Y/m/d H:i:s', filemtime($tokendir.$token.".log")) . '<br>'; を追加してみてください。 (蛇足) $url = $_SERVER["HTTP_REFERER"]."?key=".$token; $_SERVER["HTTP_REFERER"]のようななアテにならないものを使うのはやめましょう。 というか今現在のデバッグでは正しいURLになっているんですよね。リファラはindex.phpだと思うので >if(isset($_GET["key"])){ >if(delete_old_token($_GET["key"])){ >print "登録完了しました。"; > 以下略 の部分もindex.phpに書いていると思いますが・・・ >「登録完了しました。」が作動しません。 ちゃんと「もう一度初めからやり直してください。」が表示jされているんですよね(これがダメだとURLの組み立てから間違っているので)。
補足
◎申し訳ありません、 作動しません、 if(isset($_GET["key"])){ if(delete_old_token($_GET["key"])){ print "登録完了しました。"; }else{ print 'もう一度初めからやり直してください。'; } } 上記を何度見ても、間違いではないとおもうのですが・・・・・・・ ◎$_SERVER["HTTP_REFERER"]のようななアテにならないものを使うのはやめましょう。 上記でないとするとどの様な風に書きますか?
お礼
大変勉強になりました。 ありがとうございます!