0

現在、2つのバージョンのPHPを実行しています。ローカル(テスト)サーバーには5.3.5があり、リモート(ライブ)サーバーには5.2.4があります。これにより、過去にいくつかの互換性の問題が発生しましたが、私は常にそれらを非常に簡単に修正することができました。すぐに私のリモートサーバーがアップグレードされるので、それほど多くの問題が発生することはありませんが、それまでの間、これらの愚かな互換性の問題の解決策を提供する必要があります。誰かが以下の私のコードを見て、5.2.4PHPビルドの問題を見つけたら教えてください。

function _cookie($name, $value) {
    $expire = strtotime('+1 month');
    $old_expire = strtotime('last day of next month');

    setcookie(
        $name,
        $value,
        $expire
    );
    var_dump($name, $value, $expire, $old_expire);
}

$date = date(
    'Y-m-d H:i:s',
    filemtime($file)
);
_cookie('user', 'bob');//works
_cookie('up2date', $date);//does not

私はもともと「来月の最終日」をCookieの有効期限として持っていたので、まだvar_dumpリストに残っています。ただし、その文字列はリモートサーバーでfalseを返し、セッションの終了時にCookieが期限切れになりました。falseが返されても、「ユーザー」Cookieが設定され、ブラウザで表示できました。ただし、「up2date」Cookieは設定されません。これは奇妙だと思いましたが、strtotime関数がfalseを返すことと関係があると考えました。だから私は最初にそれを修正しようとしました。PHPのマニュアルを調べた結果、使用している文字列は5.3でのみ使用可能であることがわかりました。そこで、問題が確認され、簡単に修正できます。これを「+1month」文字列に置き換えました。これは5.2で機能することがわかっています。成功しました。「ユーザー」Cookieの有効期限が切れました。var_dump関数が呼び出されて設定され、すべての正しいパラメーターが設定されているが、2番目のCookieが設定されていないことを証明します。それがまったく機能しなかったとしても、私はそれほどイライラすることはないでしょう。それは少なくとも私が何か間違ったことをしていて、それを取り除くことができたことを私に教えてくれるでしょう。しかし、それが私をこのようにからかうために...私は何が欠けていますか?誰かアイデアはありますか?

var_dumpの結果:

//Local server
string(4) "user"
string(3) "bob"
int(1337797496)
int(1338488696)

string(7) "up2date"
string(19) "2012-04-20 10:52:09"
int(1337797496)
int(1338488696)

//Remote server
string(4) "user"
string(3) "bob"
int(1337795061)
bool(false)

string(7) "up2date"
string(19) "2012-04-23 09:14:19"
int(1337795061)
bool(false)
4

1 に答える 1

0

DaveRandomに感謝します。彼はここで称賛に値します、そして彼が彼の答えを加えるならば、私は私の受け入れたものを彼に切り替えます。この回答を追加したので、未回答の質問はありません。

解決策: 2番目のCookieを呼び出す前に出力があったため、設定に失敗していました。クッキーを設定した場所に移動しました。

提案と時間をありがとうございました!

于 2012-05-08T14:16:11.163 に答える