2015-10-20 64 views
0

社交網絡項目。將VB.Net中繼器鏈接到配置文件頁面

這是放置在中繼器內的代碼:

<asp:HyperLink ID="HyperLink1" runat="server" 
NavigateUrl='<%# Eval("uname", "~/XsProfile.aspx?uname={0}") %>'> 
<%# Eval("uname")%> 
</asp:HyperLink> 

該代碼將生成的x次的鏈接。 點擊鏈接, 它重定向到該人的個人資料。

需要在個人資料中提取詳細信息。 下面的代碼將實現這種輸出將會發生什麼?

<asp:AccessDataSource ID="fav_music_data" runat="server" 
DataFile="~/paperhome_data.accdb" 
SelectCommand="SELECT * FROM [userinfo] 
WHERE ([uname] = *****?*****)"> 
</asp:AccessDataSource> 

究竟是什麼進入'WHERE'從句?

回答

0

由於您的URL有?uname =答案應該在ASP.NET的Request對象中。您可能可以使用Request(「uname」),但這通常是皺眉。

惡意用戶可以輸入自己的用戶名是:

''; drop table userinfo;

...以及可能發生在您的網站上的非常糟糕的事情。

我很欣賞你試圖簡單地做你的工作(例如使用聲明性數據源),但在某些時候你可能需要編寫一些代碼。

+0

對不起,只是想到了一些更多的潛在問題。如果uname確實是一個「名稱」,並且可能包含特殊字符(特別是&符號),那麼在URL中傳遞它就沒有什麼好處了。 你真正想要在第一頁做什麼就是將uname(或更好的ID)存儲到Session()變量中,然後在下一頁中讀取它。 –

+0

嘿史蒂夫!感謝回覆。 當然,會話是可行的。但是,如何通過單擊鏈接將uname存儲到會話中? 什麼會進入onclick事件的代碼隱藏? 感謝您指出風險 - 我會研究它。 這是一個學校項目,所以我不會過分擔心。呵呵。 –

+0

不要讓它成爲超鏈接。讓它成爲LinkBut​​ton。在click事件中,將值存儲,然後將response.redirect存儲到下一頁。 –