3

我终于让我的代码为密码保护脚本工作了。它仍处于起步阶段,所以我知道它不安全。我的问题是我似乎在许多不同的计算机和浏览器上都有问题。据我所见,Firefox 对设置的 cookie 没有任何问题。我在某些没有设置 cookie 的机器上遇到了麻烦。

我所看到的是,在一台机器上,我有一个带有 ie、chrome 和 firefox 的系统。cookie 不适用于 chrome,但适用于 ie 和 firefox。在我的 linux 机器上,firefox 可以顺利运行。我没有安装chrome,所以无法测试。然后在另一台机器上,即不想使用该网站。我认为这是隐私设置的问题,但似乎它们都是一样的。

chrome 问题的奇怪之处在于,我可以看到会话的 cookie,但看不到我设置的 cookie。所以,显然这是一个问题,但我不知道为什么。我的 IE 也有同样的问题。我已将 IE 机器设置为接受所有 cookie,但没有运气。chrome浏览器设置为“允许设置本地数据”。

提前致谢

      if (isset($_COOKIE["Cookie"])){
        FormatScreen();
      }
      else if ($_POST['access_password']){
        $PasswordEntered = crypt($_POST['access_password'],$salt);
        if ($PasswordEntered == $RealPassword){
            setcookie("Cookie", $PasswordEntered, time()+600, '/');
            FormatScreen();
        }
        else{
            echo LoginScreen();
        }
      }
4

3 回答 3

0

我想没有解决方案,所以我建议另一种解决方案来解决您的问题:

  • 您还可以在服务器端使用会话。因此,如果用户不接受 cookie,他将无权拒绝会话,因为它位于服务器端。
  • 为 session 腾出时间。

我希望你在我的评论中找到帮助。

于 2012-08-07T22:11:44.353 回答
0

您应该使用会话 cookie - 看看http://www.w3schools.com/php/php_sessions.asp

这将有助于提高安全性,因为会话存储在服务器上并且不能被篡改。然后 PHP 在客户端处理会话 cookie。

于 2012-08-07T23:38:23.040 回答
0

这是我更正的代码。

 if (isset($_SESSION['loggedin'])){
        echo "You are already logged in.";
      }
      else if ($_POST['access_password']){
        $PasswordEntered = crypt($_POST['access_password'],$salt);
        if ($PasswordEntered == $RealPassword){
            $_SESSION['loggedin']=1;
            //echo "Logged In=". $_SESSION['loggedin'];

            echo "You are now logged in!";
        }
        else{
            echo LoginScreen();
        }
      }
于 2012-08-08T17:49:46.567 回答