0

これが取引です。ログインフォームがあり、Jquery で Cookie を設定できますが、雇用主は php でそれを行うことを望んでいます。だから私はそうしようとしました。

これが私のフォームです

<?php if(!isset($_POST['commit'])){
     echo "<a id='loginbtn' class='btn dropdown-toggle loginbtn' href='#' data-toggle='dropdown'>Sign in <strong class='caret'></strong></a>";
     echo "<div id='loggedout' class='dropdown-menu' style='padding: 15px; padding-bottom: 0px;'>";
         echo "<form name='LoginForm' id='LoginForm' action=''  method='post' accept-charset='UTF-8'>";
             echo "<input id='user_username' style='margin-bottom: 15px; height:25px;' type='text' name='username' size='30' value='Username' />";
             echo "<input id='user_password' style='margin-bottom: 15px; height:25px;' type='password' name='password' size='30' value='********' />";
             echo "<input class='btn btn-primary' id='login' style='clear: left; width: 100%; height: 32px; font-size: 13px;' type='submit' name='commit' value='Sign In' />";
         echo "</form>";
     echo "</div>";
     }
?>

そして、クッキーを設定しようとすると、次のようになります。

<?php
    if(isset($_POST['commit'])){
       $username= $_POST["username"];
       setcookie("TestCookie", $username, time()+3600, '/', 'mydomain.com');
    }
?>

    <!DOCTYPE html>
    <html class='wf-franklingothicurwcond-n5-active wf-franklingothicurwcond-n7-active wf-active' lang='en'>

ある時点で、 $username 変数をグローバルにしてページに出力したので、それが機能していることはわかっていますが、何らかの理由で Cookie が設定されません。

どんな助けでも大歓迎です:)

編集:

違いがあるかどうかはわかりませんが、Bootstrapも使用しています

4

2 に答える 2

0

Cookie は HTTP ヘッダーの一部として設定され、最初にブラウザーに送信される他の出力がある場合は正常に設定できません。Cookie ページの php タグの上に空白やその他のテキスト/html コンテンツはありますか? その場合は、削除してからやり直してください。

まず最初に、Cookie のみを含む別の最小限のテスト ケースを作成し、それが機能していることを確認したら、投稿ロジックを追加することをお勧めします。

于 2012-08-09T22:11:27.473 に答える
0

メソッドを使用してPHPで正しく設定しているように見えますsetcookie()。私の最初の推測は、サーバーと現地時間の違いの可能性です。

おそらく、あなたとサーバーが異なるタイムゾーンにあるため、この Cookie は設定されるとすぐに期限切れになりますか? タイムゾーンの設定とサポートされているタイムゾーンのリストを見てください。

繰り返しますが、コード サンプルと説明から、これは単なる推測です。また、お使いのブラウザが Cookie を受け入れるように設定されていない可能性もあります...

それが役立つことを願っています。

于 2012-08-09T21:59:26.823 に答える