0

我的网站中有一个登录系统,如果我使用没有 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 看到相同的登录凭据

4

2 回答 2

2

http://www.example.comhttp://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>
于 2013-09-17T15:10:56.970 回答
1

利用

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 。

于 2013-09-17T15:04:20.290 回答