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