【发布时间】:2014-05-10 22:25:28
【问题描述】:
我已经制作了 2 个使用登录系统的网站,并且它们都运行良好。用户可以登录和注销两者。我正在使用 xampp 并在 Chrome 中的两个选项卡中打开这两个网站。在这两个网站上,我都在用户登录时显示了用户的电子邮件地址。问题是当我登录网站 A 时,切换到网站 B 并刷新我在该网站上登录的页面以及电子邮件地址我在网站 A 上登录的那个地址。当没有与相应网站关联的帐户时,也会显示此地址。我的问题是如何将会话限制在单个网站上。
这是登录操作
<?php
include 'db.inc';
session_start();
$UserEmail =$_POST["EmailAddress"];
$UserPassword =$_POST["Password"];
$query = "SELECT * FROM members WHERE EmailAddress = '$UserEmail'
AND password = '$UserPassword' ";
$connection = mysql_connect($hostname, $username, $password) or die ("Unable to connect!");
mysql_select_db($databaseName) or die ("Unable to select database!");
$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error());
// see if any rows were returned
if (mysql_num_rows($result) > 0) {
$_SESSION["authenticatedUser"] = $UserEmail;
// Relocate to the logged-in page
header("Location: Index.php");
}
else
{
$_SESSION["message"] = "Could not log in as $UserEmail " ;
header("Location: Login.php");
}
mysql_free_result($result);
mysql_close($connection);
?>
这是用户登录的时候。
<?php
session_start();
if (!isset($_SESSION["authenticatedUser"]))
{
$_SESSION["message"] = "Please Login";
header("Location: Login.php");
}
else
{ ?>
这是显示用户电子邮件地址的地方
<div class="Login">
<ul>
<?php if(isset($_SESSION['authenticatedUser']) && $_SESSION['authenticatedUser'] != null ) {?>
<li><a href="ProfilePage.php">Welcome <?php echo $_SESSION["authenticatedUser"] ?></a> </li>
<li><a href="logout.php"><span>Log Out</span></a></li>
<?php } else {?>
<li><a href="login.php"><span>Log In</span></a></li>
<?php } ?>
希望这一切都是相关的!
【问题讨论】:
-
我猜他们都在同一个 URL 下的同一台机器上运行?您能否提供有关设置的更多细节?
-
是的,它们都在同一台机器上,我正在使用 xampp 并通过 localhost 访问它们。
-
所以事件是相同的 url,只是路径不同,对吧?
-
危险:您使用的是an obsolete database API,应该使用modern replacement。您也容易受到SQL injection attacks的影响,现代 API 可以让您更轻松地从 defend 中获得。