このCookieの設定を解除する方法を理解する必要があります。これまで試したすべてが失敗しました。
これは私が現在それを設定解除している方法であり、動作していないようです。
_setcookie("user_id", $user_id, time() - 7200);
_
これは私がそれを設定する方法です:
_setcookie("user_id", $user_id, time() + 7200);
_
Cookieが設定されているかどうかを確認するset_session_from_cookie()
という名前のこの関数があり、設定されている場合は、Cookieを使用して新しいセッションを開始します。
問題は、これをページで使用するとログアウトできないことです。これは、セッションを設定解除できないためだと思います。
私がこの機能を持っている理由は、セッションを終了した後にユーザーが記憶されたい場合、Cookieを呼び出すことでセッションを再開できるからです。
_function set_session_from_cookie()
{
if (isset($_SESSION['user_id'])) {
echo '';
} else {
$_SESSION['user_id']=$_COOKIE['user_id'];
}
}
_
ログアウト:
_<?php
require'core.php';
session_destroy();
setcookie("user_id", "", time() - 7200);
header('Location:/social_learning/site_pages/starter-template.php');
_
次のコードでCookieを設定します。
_if ($rememberme == "on") {
$user_id = mysql_result($query_run, 0, 'id');
setcookie("user_id", $user_id, time() + 7200);
$_SESSION['user_id'] = $user_id;
redirect('home_page.php');
} else {
if ($rememberme == "") {
echo 'ok';
$user_id = mysql_result($query_run, 0, 'id');
echo $user_id;
$_SESSION['user_id'] = $user_id;
redirect('home_page.php');
}
}
_
作成した関数を使用せずに、保存されたCookieを使用してセッションを再開するにはどうすればよいですか?この機能により、ユーザーはログアウトできなくなっているようです。
この問題の解決策は、最初に設定した別のファイルから設定を解除していたため、正しいパスを設定してCookieを設定解除する必要があることでした。
ブラウザーのCookie内でCookieを検索することにより、設定解除に使用する必要があるパスを見つけ、ブラウザー内でCookieを見つけると、Cookieの近くにパスがリストされました。そこで、次のようにCookieへのパスを設定します。
setcookie("user_id", $user_id, time() - 1, "/social_learning/site_pages");
最後のパラメーターはパスです。そしてそれは働いた。
私の元のsetcookie
は次のようになります。
setcookie("user_id", $user_id, time() + 7200, "");
Cookieの有効期限を過去の時間に設定します(たとえば、 Epoch の後の1秒など)。
setcookie("yourCookie", "yourValue", 1);
これにより、Cookieの有効期限が切れます。
_1
_は、セッションの終了時にCookieを期限切れに設定するため、_0
_の代わりに_0
_が使用されます。
あなたのコードに関するセキュリティ上の懸念はほとんどありませんが、質問に答えるために、phpでcookieを設定解除するには、有効期限を過去の時間に設定するだけです。
setcookie("user_id", "", time()-10, "/");
「loginform.php」は有効なドメインではないため、ここで問題になる可能性があります。
このコードを使用
setcookie("CookieName", "", time()-(60*60*24), "/");
すべてのウェブサイトで私のために毎回動作します
Setcookieについては、phpマニュアルをご覧ください
http://php.net/manual/en/function.setcookie.php
これらのメモはプロセスを説明する必要があります:
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
Cookieは、設定されたのと同じパラメーターで削除する必要があります。 value引数が空の文字列またはFALSEであり、他のすべての引数がsetcookieの以前の呼び出しと一致する場合、指定された名前のcookieはリモートクライアントから削除されます。これは、値を「削除済み」に設定し、有効期限を過去1年に設定することにより内部的に達成されます。
Cookieの値をFALSEに設定すると、Cookieを削除しようとするため、ブール値を使用しないでください。代わりに、0をFALSEに、1をTRUEに使用します。
PHPマニュアルでは、有効期限を過去に設定してCookieを削除できます。
setcookie("key","",time()-3600);
場合によっては、引数のパスとドメインを指定する必要があります。
実際、空の文字列でCookieを割り当てると、設定も解除されます。
setcookie("key","");