如何使我的PHP会话适应数组

时间:2013-10-29 10:38:15

标签: php mysql arrays session

我有这个PHP代码,我用它来触发用户登录。为了成功登录,用户使用他们注册的电子邮件和密码。我当前的PHP代码允许在使用$ _SESSION ['loggedin'] = $ dbusername的任何页面上回显用户名。我现在要做的是调整这个PHP代码,将一个数组放入'loggedin'会话。我希望数组保存用户注册详细信息,即名字,姓氏,公司和电子邮件,以及他们的用户名(dbusername)。这是为了让我能够在“用户帐户页面”

上回应这些详细信息

我的代码:

<?php

session_start();

$email = $_POST['email'];
$password = $_POST['password'];

if ($email&&$password)
{
$connect = mysql_connect("*****","***","**********") or die ("Login failed!");
mysql_select_db("dbname") or die ("Could not connect to Database"); 

$query = mysql_query("SELECT * FROM regusers WHERE email='$email'");

$numrows = mysql_num_rows($query);

if($numrows !=0)

{
while ($row = mysql_fetch_assoc($query))

{
$dbemail = $row['email'];
$dbpassword = $row['password'];
$dbusername = $row['username'];

}
if ($email==$dbemail&&$password==$dbpassword)

{
include 'loginIntro.php';
$_SESSION['loggedin']=$dbusername;

}

else
echo "Incorrect Password";

}

else
die ("That email doesn't exist");

}

else
die ("Enter a registered email and password");

?>

然后在我的'用户帐户页'上我有:

<?php

session_start();
$dbusername = $_SESSION['loggedin'];

?>

为了回显用户名,这个PHP代码工作正常,因为我所要做的就是:任何时候我想显示用户的用户名。回到我原来的问题 - 请提供必要的知识来调整这个PHP代码以保存用户注册详细信息,以便我可以在任何使用相关会话的页面上回应这些详细信息。请原谅我缺乏知识和理解,我已经摸不着头脑,我有摇篮帽 - 只有婴儿才能得到,但在这个PHP游戏中,我是​​一个胚胎。感谢您提供的任何帮助

2 个答案:

答案 0 :(得分:2)

$_SESSION是一个数组

您可以简单地在其中保存关联数组。

$_SESSION['id'] = $x;
$_SESSION['username'] = $y;
$_SESSION['realname'] = $z;

或嵌套数组

$_SESSION['user']['id'] = $x;
$_SESSION['user']['username'] = $y;
$_SESSION['user']['realname'] = $z;

当心

  • 您正在使用已弃用的功能。
  • 传递的数据没有验证。
  • SQL注入存在风险(看起来像100%)。
  • 正如bwoebi所说,您可能无法以明文保存密码。

建议阅读

答案 1 :(得分:0)

如果要将Array用作Session变量,则必须先将其序列化。 (http://php.net/manual/en/function.serialize.php)。

然后你可以将它添加到$ _SESSION,并在其他页面上反序列化(http://php.net/manual/en/function.unserialize.php)。

现在有两个建议:使用sha1(http://us2.php.net/manual/en/function.sha1.php)散列您的密码,并且不要使用过时的mysql_ *函数。考虑使用mysqli ou PDO。