2016-10-21 118 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']; } 
相關問題