そのため、この PHP コードで 1 週間苦労していますが、まだ動作しません。ユーザーに 1 年間 Cookie を設定する必要があります。また、ユーザーがブラウザーを閉じて、後で再度サイトにアクセスしたときに、再度ログインする必要がないようにする必要があります。誰かが私のファイルに設定されるべきコードを書くことができれば、私はとても感謝しています. 私の元のコードは次のとおりです。これは、config.php ファイルからのものです。よろしくお願いします!
function create_slrememberme() {
$key = md5(uniqid(rand(), true));
global $conn;
$sql="update members set remember_me_time='".date('Y-m-d H:i:s')."', remember_me_key='".$key."' WHERE username='".mysql_real_escape_string($_SESSION[USERNAME])."'";
$conn->execute($sql);
setcookie('slrememberme', gzcompress(serialize(array($_SESSION[USERNAME], $key)), 9), time()+60*60*24*30);
}
function destroy_slrememberme($username) {
if (strlen($username) > 0) {
global $conn;
$sql="update members set remember_me_time=NULL, remember_me_key=NULL WHERE username='".mysql_real_escape_string($username)."'";
$conn->execute($sql);
}
setcookie ("slrememberme", "", time() - 3600);
}
if (!isset($_SESSION["USERNAME"]) && isset($_COOKIE['slrememberme']))
{
$sql="update members set remember_me_time=NULL and remember_me_key=NULL WHERE remember_me_time<'".date('Y-m-d H:i:s', mktime(0, 0, 0, date("m")-1, date("d"), date("Y")))."'";
$conn->execute($sql);
list($username, $key) = @unserialize(gzuncompress(stripslashes($_COOKIE['slrememberme'])));
if (strlen($username) > 0 && strlen($key) > 0)
{
$sql="SELECT status,USERID,email,username,verified from members WHERE username='".mysql_real_escape_string($username)."' and remember_me_key='".mysql_real_escape_string($key)."'";
$rs=$conn->execute($sql);
if($rs->recordcount()<1)
{
$error = "Error: Could not locate your account.";
}
elseif($rs->fields['status'] == "0")
{
$error = "Error: Your account has been disabled by the administrator.";
}
if($error=="")
{
$_SESSION['USERID']=$rs->fields['USERID'];
$_SESSION['EMAIL']=$rs->fields['email'];
$_SESSION['USERNAME']=$rs->fields['username'];
$_SESSION['VERIFIED']=$rs->fields['verified'];
create_slrememberme();
}
else
{
destroy_slrememberme($username);
}
}
}