3

以下のコードを使用して、REQUEST_URIをセッションに保存してみました。訪問者がサイトのページにアクセスしたときに最初のREQUEST_URIを保存し、ページの閲覧を開始したときに上書きされないようにする必要があります。エコーによって表示される新しいURIが表示されているサイトを閲覧しているため、これは機能していません。

session_start();
if ( !isset( $_SESSION['theuri'] ) ) {
    if ( !empty( $_SERVER['REQUEST_URI'] ) ) {
        $_SESSION['theuri'] = $_SERVER['REQUEST_URI'];
    }
}

echo $_SESSION['theuri'];
4

4 に答える 4

0

Cookieをクリアして、再試行してください。おそらく、!empty()条件がなく、それ以降変更されなかったときに初めて設定されました。

于 2013-01-31T23:18:25.420 に答える
0

あなたはこのハックを試すかもしれません:

if(session_id() == '') 
     session_start();

WPがあなたのためにセッションを開始しようとする場合に役立つはずです。

于 2013-01-31T23:20:44.023 に答える
0

Cookieを正しく設定できるように、出力の前にセッションを開始する必要があります。Wordpressはステートレスであり、セッションをまったく使用しません。このコードをフッターに入れたとおっしゃっていたので、おそらくすでに出力されています。

ハッキーな解決策は、index.phpの先頭またはwp-config.phpにsession_start()を入力することです。

于 2013-01-31T23:24:52.213 に答える
0

このコードをfunctions.phpに追加するというこの記事を見つけましたが、フッターのコードは正常に機能しています。

http://devondev.com/2012/02/03/using-the-php-session-in-wordpress/

add_action('init', 'myStartSession', 1);
add_action('wp_logout', 'myEndSession');
add_action('wp_login', 'myEndSession');

function myStartSession() {
    if(!session_id()) {
        session_start();
    }
}

function myEndSession() {
    session_destroy ();
}
于 2013-01-31T23:34:02.783 に答える