2016-10-21 119 views
0

我想在登录成功后显示特定的用户名。通过使用会话我打电话给我的用户名。但它显示所有用户名。显示特定的登录用户名

请给出建议,只显示特定的用户名。 这是我的代码。

在会议:

$_SESSION ['admin_name'] = $row['name']; 
$admin_name = $_SESSION['admin_name']; 

插入到DB:

$sql = "INSERT INTO account_info (name) 
     VALUES ('$admin_name')"; 

显示:

<?php 
    $count = 1; 
    $sel_query = "Select * from account_info ORDER BY id;"; 
    $result = mysql_query($sel_query); 
    while ($row = mysql_fetch_assoc($result)) { 
?> 
     <td align="left"><?php echo $row["name"]; ?></td> 
<?php 
     $count++; 
    } 
?> 

我个墨迹显示时我需要过滤名称。请回复任何人知道如何过滤。

更新:

enter image description here

+1

在你选择查询,你需要使用WHERE来选择你想要的用户!并删除“;”在您的查询ID后! – Soheyl

+2

并且不忘记'session_start()' – devpro

+0

有关信息:正如我所看到的,您是PHP中的新成员,因此请勿使用MySQL_,学习PDO,如果您正确使用它,这将更容易且更安全! – Soheyl

回答

0

你应该重新此方法,因为它的设计缺陷,但要获得你想要达到的目标:

while($row = mysql_fetch_assoc($result)) { 
    if($row['name'] == $_SESSION['admin_name']) { 
     ... 
    } 
} 

甚至更​​好...

$sel_query="Select name from account_info WHERE name = '$admin_name'";

0
$sel_query="Select * from account_info WHERE name = '$admin_name' "; 
+1

如果'$ admin_name'是字符串,这将不起作用。 – devpro

+0

@devpro thx我的不好 – Twinfriends

+0

现在它看起来不错,:) – devpro

-1

你得到,因为查询的所有用户名:

Select * from account_info ORDER BY id; 

这将返回所有的用户数据,则需要在添加用户名WHERE子句特定用户为:

Select * from account_info WHERE name = '$admin_name'; 

更重要的是,我没有在你的代码中看到session_start()函数,不要忘记使用这个,否则你无法获得$_SESSION的值。

其他重要的事情,你的代码是开放的SQL注入,你可以使用Prepared Statement防止SQL攻击。这将帮助你:How can I prevent SQL injection in PHP?

非常特殊的点,mysql_*已过时,在PHP关闭7

旁注:

在你当前的查询,无需使用ORDER BY id因为当你为特定用户使用WHERE时,这部分在这里应该没用。

不知道,你在哪里使用$count++;在你的要求中,你只需要打印特定的用户数据,所以这里也没用。

+0

感谢您的答案, – Keerthi

+0

我有session_start()。 – Keerthi

+0

但是,如果我写select * from account_info WHERE name ='$ admin_name'; – Keerthi

0

您不需要将会话值保存到数据库中,以在登录成功后显示它。

只有将其存储到session数组是这样的:

$_SESSION['user_name'] = $row['name']; 

和登录页面检查这个环节阵列设置或设置not.If然后显示它 像:

if(isset($_SESSION['user_name'])) { echo $_SESSION['user_name']; } 
相关问题