我有这个PHP代码,我用它来触发用户登录。为了成功登录,用户使用其注册的电子邮件和密码。我当前的PHP代码允许用户名在任何使用$_SESSION['loggedin'] = $dbusername的页面上回显。我现在要做的是调整这个PHP代码,将数组放入"登录"会话中。我希望数组包含用户注册详细信息,即名字、姓氏、公司和电子邮件,以及他们的用户名(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游戏中,我是一个胚胎。感谢任何帮助
$_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所说,您可能不会以明文形式保存密码。
推荐阅读
- http://php.net/manual/en/function.error-reporting.php
- http://php.net/manual/en/language.types.array.php
- http://www.php.net/manual/en/session.examples.basic.php
- http://php.net/manual/en/filter.examples.validation.php
- http://php.net/manual/en/faq.passwords.php
- http://php.net/manual/en/security.database.sql-injection.php
- http://php.net/manual/en/intro.pdo.php
如果要将数组用作会话变量,则必须先对其进行序列化。(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。