这是设置cookie的正确方法吗?

时间:2011-03-20 16:09:07

标签: php session cookies redirect

//如果登录正常,那么我们添加一个cookie

         $_POST['user_name'] = stripslashes($_POST['user_name']); 

          $hour = time() + 3600; 

             setcookie(ID_my_site, $_POST['user_name'], $hour); 

            setcookie(Key_my_site, $_POST['password'], $hour);   

这是设置Cookie的正确方法吗?它导致我严重的重定向错误。见这里:PHP Redirect problem with subdomain

2 个答案:

答案 0 :(得分:5)

不,需要引用字符串(使用error_reporting(E_ALL);来获取有关不带引号的字符串等不良内容的警告。)

setcookie('ID_my_site', $_POST['user_name'], $hour);
setcookie('Key_my_site', $_POST['password'], $hour);

除此之外,如果您必须将stripslashes()应用于您的GPC数据,那么您的服务器配置非常糟糕。应禁用magic_quotes_gpc。此外,如果get_magic_quotes_gpc()为真,则仅使用stripslashes。否则,您不得在GPC数据上使用stripslashes。

此外,将明文密码存储在Cookie中是一件非常糟糕的事情!虽然浏览器通常会加密存储的密码,但Cookie不会加密。

答案 1 :(得分:1)

另外,请记住,如果您的脚本已向浏览器输出,则设置cookie将不起作用。因此,如果您从PHP代码行收到警告,则不会设置cookie。以下行可以轻松生成警告:

$_POST['user_name'] = stripslashes($_POST['user_name']); 

确保检查$ _POST数组中是否存在密钥。

if (array_key_exists('user_name', $_POST))