[英]Fetch row and display using sessions
一直致力于这个项目,我希望人们登录并在成功时查看我们从数据库中获得的信息。 我不确定如何将用户电子邮件和其他数据存储到会话中
我的问题是我正在努力将数据存储在会话中。 我可以登录并回显我为其创建会话的用户名,但其他数据不起作用。
我在这里浏览了成堆的东西,但显然我有点迷失了。
这是我的 checklogin.php 的代码
<?php
session_start();
ob_start();
include_once 'config.php';
// Connect to server and select databse.
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$db = new PDO('mysql:host='.$host.';dbname='.$db_name.';charset=utf8', $username, $password);
}
catch(Exception $e)
{
die('Error : ' . $e->getMessage());
}
// Define $myusername and $mypassword
$myusername = $_POST['myusername'];
$mypassword = $_POST['mypassword'];
$myemail =
// To protect MySQL injection
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$stmt = $db->query("SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'");
// rowCount() is counting table row
$count = $stmt->rowCount();
// If result matched $myusername and $mypassword, table row must be 1 row
if($count == 1){
// Register $myusername, $mypassword and print "true"
echo "true";
$_SESSION['username'] = $myusername;
$_SESSION['email'] = $myemail;
}
else {
//return the error message
echo "<div class=\"alert alert-danger alert-dismissable\"><button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button>Wrong Username or Password</div>";
}
ob_end_flush();
?>
然后我的 index.php 看起来像这样
<?php
session_start();
if(!isset($_SESSION['username'])){
header("location:main_login.php");
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Login</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap -->
<link href="css/bootstrap.css" rel="stylesheet" media="screen">
<link href="css/main.css" rel="stylesheet" media="screen">
</head>
<body>
<div class="container">
<div class="form-signin">
<div class="alert alert-success">You have been <strong>successfully</strong> logged in as <?php echo $_SESSION['username']; ?>. Your email is <?php echo $row['email']; ?></div>
<a href="logout.php" class="btn btn-default btn-lg btn-block">Logout</a> </div>
</div>
<!-- /container -->
</body>
</html>
请注意,在 index.php 上,当我回显时,用户名工作正常,但不是电子邮件。
任何帮助,将不胜感激
您可以在此处使用查询通过选择查询获取会话用户的所有数据。
$q= "select * from user where username = '$yoursessionusername'"
通过此查询,您将获得登录用户的所有详细信息。
可以使用以下代码创建一个 session.php:
session_start();
$username=$_SESSION['username'];
$email=$_SESSION['email'];
并且可以将这些变量用于您的页面。
这应该是评论,但我在这里的声誉很低。
首先,请考虑绑定您的价值观。 幸运的是,PDO 具有该功能。另外,作为观察,stripslashes 并不能完全防止 SQL 注入。
据我所知,您的电子邮件地址未保存在任何会话变量中。 这应该解决,
$myemail = $_SESSION['name_of_email_from_database'];
另外不要忘记,要访问您的会话变量,请在需要它的每个页面上包含 session_start()。 为了防止 PHP 出现过多会话启动的警告信息,添加以下代码:
<?php
if(!isset($_SESSION)){
session_start();
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.