www 和不 www 之间的登录问题


Login issue between www and without www

如果我使用没有www的URL并登录,我的网站中有一个登录系统,这是正常的,但是当我通过添加www来更改网站的URL时,网站将显示我的帐户注销。 如果我通过删除 www 再次更改 URL,它将我的帐户显示为登录(无需再次登录)我的登录功能是:

    $username = $_POST['username'];
    $password = md5($_POST['password']);
    $users = $GLOBALS['db']->query("SELECT * FROM users WHERE username='$username' AND password='$password'") or $GLOBALS['db']->raise_error(); // Leaving 'raise_error()' blank will create an error message with the SQL
    $users_number = $GLOBALS['db']->num_rows($users);
    if(!empty($users_number))
    {
        while($users_sql = $GLOBALS['db']->fetch_array($users))
        {
            $_SESSION['username'] = $username;
            $_SESSION['id'] = $users_sql['id'];
            $_SESSION['logged_in'] = 'true';
                header('Location:./');
        }
    }
    else
    {
        $error_msg = "Worng combination";
        header('Location:?page=login.php&login_error_msg='.$error_msg); 
    }

我想知道我是否应该进行任何更改以使 www.example.com 并 example.com 看到相同的登录凭据

http://www.example.com 和 http://example.com 是两个不同的域。 如果您想要一个合适的网站,请在您的 .htaccess 文件中使用 301 重定向。我的示例总是将用户重定向到 www.example.com:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www'.
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

使用

void session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]] )

$domain部分应该是.your-domain.com默认是您输入的完整域作为 URL (www.your-domain.com 或 your-domain.com)...在起始.,您告诉 PHP 在所有子域周围使用会话 cookie。这样,www.your-domain.com、your-domain.com 和falafel.your-domain.dom将共享同一个会话。

有关更多详细信息,请参阅 http://www.php.net/manual/en/function.session-set-cookie-params.php。