2016-05-03 10 views
0

私はPHPでクッキーを作成しようとすると、ウェブサイトがオンラインのときに保存されません。 私はlocalhost上にいるとき、そのすべてが大丈夫です。例えばウェブサイトがオンラインのときにクッキーを作成する

setcookie('user_register', 'username', time() + 3600, '/'); 

どのように私は、このトラブルシューティングを行うことができますか? cpanelにクッキーの作成を無効にする設定がありますか?

ありがとうございます

+2

あなたは完全なコードを投稿できますか? setcookieの前に出力がありますか?それは動作しないようになります。できるだけコード内でsetcookieを高くしてください – Andreas

+0

http://php.net/manual/en/function.error-reporting.php –

答えて

0

を経て起動します。

<?php 
// top of file 
Echo "saving cookie"; 
setcookie('user', 'username', 3600, '/'); 
?> 

これは、ローカルホスト上で動作するかもしれませんが、いつも失敗します実際のPHPサーバ上で。
ますsetcookieはheaderであり、それが最初にクッキーを設定し、出力するようにあなたは、エコーとは、setcookieの場所をchaangeする必要があり、作業上のコードを作成するには、手動http://php.net/manual/en/function.setcookie.php

に述べたように任意の出力の前に配置する必要がありますテキスト:

<?php 
// top of file 
setcookie('user', 'username', 3600, '/'); 
Echo "saving cookie"; 
?> 

次に、新しいページに移動するか、ページを更新する必要があります。
PHPで同時にCookieを設定したり読み込んだりすることはできません。

<?php 
// top of file 
If($_COOKIE(['user']){  
    Echo $_COOKIE(['user']); 
}Else{ 
    setcookie('user', 'username', 3600, '/'); 
    Echo "saving cookie"; 
} 
?> 

今、あなたはクッキーを設定し、ページを更新する場合は、同じページ上でそれを読むことができます。だから我々はこのように行うことができますコードを完了するために

+1

これは問題でした。私はクッキーを設定する前に出力できなかったことを忘れていました。ありがとう;) – user3306164

0

次回は、このページにアクセスしたときにCookieが使用されます。したがって、3つの一般的な解決法があります。1.クッキーに保存し、初めてCOOKIEの代わりにPOST変数をエコーし​​ます。

setcookie('user', $_POST['user'], time()+3600); // notice time() function 
setcookie('pass', $_POST['pass'], time()+3600); // you cant use absolute value here 

if (!isset($_COOKIE['user'])) echo $_POST['user'] . ' ' . $_POST['pass']; 
    else echo $_COOKIE['user'] . ' ' . $_COOKIE['pass']; 

を、しかし、あなたが本当にクッキー(非常に悪いアイデア)でパスワードを保存したい場合は、その後、少なくともそれをハッシュ:コードは次のようになります。ハッシュを使用するコードは次のようになります。

setcookie('pass', hash(whirlpool/*algorithm*/, $_POST['pass']/*text*/), time()+3600); 

の場合、パスワードを確認するときにハッシュしてハッシュを比較するだけです。

0

同じリクエストでクッキーを送受信することはできません。ここに試してみる必要がある修正があります

if(isset($_POST['user']) && isset($_POST['pass'])){ 

setcookie("user",$_POST['user'],3600); 
setcookie("pass",$_POST['pass'],3600); 

header("location:".$_SERVER['PHP_SELF']); 

} 
if(isset($_COOKIE['user']) && isset($_COOKIE['user'])) 
{ 
echo $_COOKIE["user"] . " " . $_COOKIE["pass"]; // This is line 28 

} 

ただし、代わりにセッションを使用することをお勧めします。私はあなたが例えば、このような出力以下ますsetcookieを配置していることを考えるように警告している、あなたはそれがローカルホスト上で動作すると言うPHP_SESSION

関連する問題