0

MySQLデータベースにいくつかのものを挿入するフォームがあります。

ユーザー名。パスワード。ID。

ユーザー名をセッションに保存してから、ヘッダーを変更します(.php?recovery = success)。その後、セッションが機能したかどうかをテストします(後で使用するために、データベース内のそのユーザー名の列に移動して、挿入したIDを取得できます。$ IDをエコーするだけで、新しいIDが生成されます。 。

else if (isset($_GET['recovery']) && $_GET['recovery'] == 'success') 
{
echo $_SESSION['user'];

    /* 

    ***REMOVED FOR TESTING***

    $fetch = $connect->query("SELECT * FROM users WHERE username = ':username' LIMIT 1");
    $fetch->bindValue(':username', $_SESSION['user']);
    $fetch->execute();

    while($row = $fetch->fetch( PDO::FETCH_ASSOC )) {
        echo $row['recover_id'];
    }
    */
}

問題:

フォームに入力しました。送信時にrecover.php?recovery = successを実行しましたが、セッションデータをエコーすると、出力がありませんか?

新しいセッションを開くファイルsession.inc.phpが必要です。

これはコード全体です:

http://pastebin.com/ba77rDi3

私は何が間違っているのですか?

私はPHP、特にPDOを初めて使用します。ありがとう!

追加:

Session.inc.php

<?php
session_start();
?>
4

2 に答える 2

2

コードが情報をセッションに保存してから、ヘッダーの呼び出しでリダイレクトしているようです(スニペットを参照)。

                // Let's store these into a session now.
                $_SESSION['user'] = $username;
                $_SESSION['pass'] = $password;

                //Now let's refresh the page, to a different header.
                header('Location: recover.php?recovery=success');

注意するだけです。明示的に電話することをお勧めします

session_write_close()

リダイレクトの前に、実行が現在のページを離れる前にセッションデータが適切に保存されていることを確認するには、次のようにします。

                    // Let's store these into a session now.
                    $_SESSION['user'] = $username;
                    $_SESSION['pass'] = $password;


                    session_write_close();                       

                    //Now let's refresh the page, to a different header.
                    header('Location: recover.php?recovery=success');
于 2013-03-24T16:13:10.547 に答える
1

問題は:

リカバリが設定されていないかどうかをチェックするステートメントの中にコードを入れました

if (!isset($_GET['recovery'])) {

ペーストビンに表示されていない場合は、コードの上部にあります。

私はそのステートメントの外にコードを置きました、それはうまくいきました。

于 2013-03-24T16:54:01.577 に答える