2014-01-11 47 views
0

我想使用PDO和$ _SESSION ['uid']能够获取当前成员名并将其显示回来。使用PDO显示当前用户名

CREATE TABLE IF NOT EXISTS `users` (
`uid` int(10) NOT NULL AUTO_INCREMENT, 
`email` varchar(64) NOT NULL, 
`salt` varchar(16) NOT NULL, 
`password` varchar(64) NOT NULL, 
`name` varchar(255) NOT NULL, 
`birthday` date NOT NULL, 
`activation` varchar(40) DEFAULT NULL, 
PRIMARY KEY (`uid`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ; 

以上是表

<?php 
require ('common.php'); // Database connection, Session Starter 
$ps = $db->prepare("SELECT * FROM `users` WHERE uid = :uid"); 
$ps->bindParam(':uid', $_SESSION['uid'];, PDO::PARAM_STR, 0); 
$ps->execute(); 
$ps->setFetchMode(PDO::FETCH_ASSOC); 
while ($ps as $row) 
{ 
echo $row['name']; 
} 
?> 

上面显示一个空白屏幕。

<?php 
session_start(); 
Print_r ($_SESSION); 
var_dump($_SESSION); 
?> 

的print_r显示阵列([UID] =>数组) 的var_dump显示阵列(1){[ “UID”] =>串(5) “阵列”}

<?php 
require("common.php"); 

if(!empty($_POST)) 
{ 
$query = "SELECT uid, email, password, salt FROM users WHERE email = :email"; 
$query_params = array(':email' => $_POST['email']); 

try { 
$stmt = $db->prepare($query); 
$result = $stmt->execute($query_params); 
} 

catch(PDOException $ex) { die("Failed to run query: " . $ex->getMessage()); } 

$login_ok = false; 
$row = $stmt->fetch(); 
if($row) 
{ 
$check_password = hash('sha256', $_POST['password'] . $row['salt']); 
for($round = 0; $round < 222222; $round++) 
{ 
$check_password = hash('sha256', $check_password . $row['salt']); 
} 

if($check_password === $row['password']) 
{ 
$login_ok = true; 
} 
} 

if($login_ok) 
{ 
unset($row['salt']); 
unset($row['password']); 
$_SESSION['uid'] = $row; 
header("Location: https://**"); 
die("Redirecting to: https://**"); 
} 
else 
{ 
header("Location: https://**"); 
die("Redirecting to: https://**"); 
} 
} 
?> 

包括登录.PHP

+0

你有一个错字你** ** bindParam: 使用这种 '$ PS-> bindParam( ':UID',$ _SESSION [ 'UID'],PDO :: PARAM_STR,0) ;' –

+0

@MohammadMasoudian试图仍然没有改变剧本。 –

+0

显示$ _SESSION的内容;尝试var_dump或print_r并更新其中的内容 –

回答

0

改变这一行

 $ps->bindParam(':uid', $_SESSION['uid'];, PDO::PARAM_STR, 0); 

 $ps->bindParam(':uid', $_SESSION['uid'];, PDO::PARAM_STR, 12); //12 means length of the data type 
+0

我试过从$ _SESSION ['uid'];中删除了分号。仍然没有显示任何数据。 –

+0

是不是在我的实际代码不知道它是如何得到这里哈哈。 –

+0

什么不是你的代码 – sanjeev