如果我使用没有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。