Php 使用会话获取行并显示

Php 使用会话获取行并显示,php,mysql,session,Php,Mysql,Session,一直在这个项目上工作,我希望人们登录,并在成功时看到我们从数据库中获得的信息。我不知道如何将用户电子邮件和其他数据存储到会话中 我的问题是,我很难在会话中存储数据。我可以登录并回显为其创建会话的用户名,但其他数据无效 我已经在这里浏览了很多东西,但显然我有点迷路了 下面是我的checklogin.php的代码 <?php session_start(); ob_start(); include_once 'config.php'; // Connect to server and se

一直在这个项目上工作,我希望人们登录,并在成功时看到我们从数据库中获得的信息。我不知道如何将用户电子邮件和其他数据存储到会话中

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

我已经在这里浏览了很多东西,但显然我有点迷路了

下面是我的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();

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

$q= "select * from user where username = '$yoursessionusername'"
通过此查询,您将获得loggedin用户的所有详细信息

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

会话_start()


并且可以在你的页面上使用这些变量。

这应该是一条评论,但我在这里名声不好

首先,请考虑约束你的价值观。幸运的是PDO有这个功能。另外,作为观察,stripslashes并不能完全阻止SQL注入

据我所见,您的电子邮件地址没有保存在任何会话变量中。这应该可以解决

$myemail = $_SESSION['name_of_email_from_database'];
另外,不要忘记,要访问会话变量,请在每个需要它的页面上都包含session_start()。为防止PHP发出会话启动过多的警告消息,请添加以下代码:

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

?>


我没有看到在会话中存储电子邮件的行。只有用户名和密码。为什么要在会话中存储用户密码。这是不安全的,强烈反对。另外,您的代码很容易受到SQL注入的攻击。请使用准备好的查询语句!这不好:Sql注入、PDO和mysqli的混合、要存储在会话中的纯文本密码等等。您可能应该重新开始。嘿,感谢所有的评论,我已经稍微更新了代码。我只是想看看我们能不能让它工作。这实际上只是我们正在创建的东西的一个测试运行。我真正想知道的是如何从数据库中获取数据(如电子邮件),并将这些信息存储在会话中,以便我们以后使用?嗨,我已经这样做了,但我想知道我应该在哪里以及如何设置会话。你可以创建一个session.php页面,并在需要时将其包含在其中。嗨,感谢你的宝贵输入和建议,我在这里添加了一行代码$\u SESSION['username]=$myusername;$myemail=$\会话['email'];然后在成功登录后,我在index.php页面上回显它,但什么也没有显示。我还加了一句
$myemail = $_SESSION['name_of_email_from_database'];
<?php
if(!isset($_SESSION)){
  session_start();
}

?>