繁体   English   中英

尝试使用PHP设置Cookie,但未设置

[英]Trying to set cookies with PHP but aren't setting

好吧,所以我有一个名为authentication的php类,如果该人成功登录,它会在login方法中设置一些cookie,然后使用同一方法login时,我的脚本将使用php的header将用户转发到相应的url。 但是由于某些原因,未设置cookie。

这是类authentication

<?php

require '../../config.php';
require base .'lib/helpers/bao.php';

class authentication extends bao {

    /*
        Login
    */
    public function login( $email, $pass, $fUrl = null ) {

        // set the forwarding url
        $forward = '/login.php';

        // check for empty values
        if( !empty( $email ) && !empty( $pass ) ) {

            // set params for binding and run query
            $params = array( ':email' => $email );
            $runQuery = parent::query( "SELECT * FROM users WHERE email = :email", $params );

            // check to see if an account was found
            if( parent::numRows( $runQuery ) > 0 ) {

                // place result into array for use
                $result = parent::fetch( $runQuery );

                // check to see if passwords match
                if( $result['pword'] === sha1( $result['salt'] . $pass ) ) {

                    // update login in time in the database
                    $params = array(':login' => expLogin, ':id' => $result['id'] );
                    $updateLoggedin = parent::query( "UPDATE users SET login = :login WHERE id = :id", $params );

                    // Set a bunch of cookies
                    setcookie("userId", $result['id'], expLogin, '/');
                    $emailCookie = setcookie("userEmail", $result['email'], expLogin, '/');
                    setcookie("userNotifications", base64_encode( $result['email'] ), expLogin, '/');
                    setcookie("userType", $result['type'], expLogin, '/');
                    setcookie("userStatus", $result['status'], expLogin, '/');
                    setcookie("userLogin", $result['login'], expLogin, '/');

                    // set forwarding url
                    switch( $result['type'] ) {
                        case 'obl':
                            $forward = $fUrl ? $fUrl : '/admin/';
                        break;

                        case 'broker':
                            $forward = $fUrl ? $fUrl : '/admin/';
                        break;

                        case 'borrower':
                            $forward = $fUrl ? $fUrl : '/admin/';
                        break;
                    }

                    $processMeta = 'Congrats you are logged in!';

                } else {

                    $processMeta = 'Your passwords did not match, please try again!';

                }

            } else {

                $processMeta = 'I\'m sorry we could not locate your account';

            }

        } else {
            $processMeta = 'You did not enter one of the required fields please try again!';
        }

        // set process message to session
        $_SESSION['processMeta'] = $processMeta;

        // forward onto next url
        header("Location: ". $forward );

    }

}

?>

现在,我已经多次使用这种方法,但是唯一的区别是,在我对程序进行程序编程之前,现在我已经将相同的代码放入了一个类中。 在大多数情况下,使用相同的语法将类放入类后,cookie设置不正确。 任何帮助将不胜感激!

谢谢

我看到您使用expLogin作为cookie的过期时间。 如果为常数,则应验证其值(秒)。 如果未定义expLogin(可能是$ expLogin的错字?),则php会认为它是字符串,并且在转换为整数时,其值为0。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM