使用会话获取行和显示

时间:2017-02-01 09:24:41

标签: php mysql session

一直致力于这个项目,我想让人们登录,成功时看到我们从数据库中获取的信息。我不确定如何将用户电子邮件和其他数据存储到会话

我的问题是我在努力将数据存储在会话中。我可以登录并回显我为其创建会话的用户名,但其他数据无效。

我在这里经历了很多东西,但显然我有点失落。

以下是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\">&times;</button>Wrong Username or Password</div>";
}

ob_end_flush();

&GT;

然后我的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上,当我回复它时,用户名工作正常,但不是电子邮件。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

您可以在此处使用查询来获取会话用户的所有数据,方法是选择查询。

getDatabaseScore() { score in 
   guard let score = score else { return }
   // do something with unwrapped "score"
}

通过此查询,您将获得已登录用户的所有详细信息。

可以使用以下代码创建一个session.php:

在session_start();

$('#myModal').modal('show'); //display something
//...

// if you don't want to lose the reference to previous backdrop
$('#myModal').modal('hide'); 
$('#myModal').data('bs.modal',null); // this clears the BS modal data
//...

// now works as you would expect
$('#myModal').modal({backdrop:'static', keyboard:false});

并且可以将这些变量用于您的页面。

答案 1 :(得分:0)

这应该是一个评论,但我在这里的声誉很低。

首先,请考虑约束您的价值观。 PDO幸运地具有该功能。作为一个观察,stripslashes并不能完全阻止SQL注入。

据我所知,您的电子邮件地址未保存在任何会话变量中。这应该修复,

$myemail = $_SESSION['name_of_email_from_database'];

另外请不要忘记,要访问会话变量,请在每个需要它的页面上包含session_start()。要防止PHP启动会话太多的警告消息,请添加以下代码:

<?php
if(!isset($_SESSION)){
  session_start();
}

?>