PHP setcookie问题

时间:2012-03-30 04:37:33

标签: php cookies

用户登录并验证密码后,我需要将其用户名存储在Cookie中。我尝试在setcookie()部分成功验证密码时添加if ( $password_match == $user_login_password ) {...,但由于某种原因,它似乎无法正常工作。当用户使用正确的密码/用户名成功登录时,我无法设置cookie。有没有什么理由你不能从函数内部设置coco?

    public function write($p) {

    if ( $_POST['user_login_username'] )
      $user_login_username = mysql_real_escape_string($_POST['user_login_username']);

    if ( $_POST['user_login_password'] )
      $password = mysql_real_escape_string($_POST['user_login_password']);
      $password .= 'some_Salt';
      $user_login_password = hash('sha256', $password);
    } elseif ( $user_login_username && $user_login_password ) {
        $q = "SELECT * FROM users WHERE username = '$user_login_username'";
        $r = mysql_query($q);

        if ( $r !== false && mysql_num_rows($r) > 0 ) {
            while ( $a = mysql_fetch_assoc($r) ) {
            $password_match = stripslashes($a['password']);
            }

            if ( $password_match == $user_login_password ) {

                echo $this ->display_login('Correct!');

                setcookie('user','some_username');

            } else {
                echo $this ->display_login('Wrong Password!');
            }

        } else {
            echo $this ->display_login('That username does not exist.');
        }



      return;

     } else {
      return false;
    }
  }

2 个答案:

答案 0 :(得分:1)

我这样做:

function mysetcookie($name, $value, $timestamp=null, $directory='/') {
    return setcookie($name, $value, time()+$timestamp, $directory);
}

我会使用mysetcookie()代替setcookie() :)而且我会考虑阅读此内容:

http://php.net/manual/en/function.setcookie.php

答案 1 :(得分:0)

啊,我明白了。使用setcookie限制协议,我试图在标签之后设置它。感谢所有看过的人,我应该更好地阅读文档。遗憾!