簡體   English   中英

使用會話獲取行並顯示

[英]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\">&times;</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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM