我是 PHP 新手,但不是整体编程,这让我难倒了几个星期。
我正在一个网站上工作,登录将开始被其他人使用,所以我当时无法使用我的解决方法。
这是设置cookie的代码。
ob_start();
...
session_register("myusername");
session_register("mypassword");
$cookiename = "loginsuccess";
$ipforcookie = $_SERVER['REMOTE_ADDR'];
$cookiedata = $myusername._.$ipforcookie;
$cookietime = time()+18000;
setcookie($cookiename, $cookiedata, $cookietime, '/', ".example.com");
...
ob_end_flush();
这是我用来检查 cookie 是否有效的代码。
if(isset($_COOKIE['loginsuccess'])){
$arr = explode("_", $_COOKIE['loginsuccess']);
if(strcmp($arr[1], $_SERVER['REMOTE_ADDR']) == 0){
require("headerLogged.php");
}else{
require("header.php");
}
}else{
require("header.php");
}
它会检查是否有 cookie,以及 IP 是否匹配,以防有人试图将 cookie 复制到他们的计算机或类似的基本计算机上。
问题是,我可以登录,并且在我检查它的任何地方都注册了 cookie……大约两个小时。然后网站停止接受它,即使在我删除 cookie 之后,它也不会创建新的 cookie,除非我更改函数调用...
setcookie($cookiename, $cookiedata, $cookietime, '/', ".example.com");
至
setcookie($cookiename, $cookiedata, $cookietime, '/');
然后登录和验证再次工作。根据需要每 2 小时重复一次。我不能再这样做了,因为其他人将在我不知道代码或访问该站点的情况下开始使用此登录名。
编辑:当我刚才将其更改为较晚时,它可以被验证,但仅限于它创建的网站部分(可能有点明显)。
我希望我已经为您提供了足够的信息,并且感谢您愿意为我提供的与此问题相关的任何帮助,因为我确信即使是我提供的少量代码也会显示我的新手状态。无论如何,非常感谢您抽出宝贵的时间。