Моя идея заключается в том, что пользователь регистрируется в "login" и "register" больше не будет замечен, и вместо этого он отобразит имя пользователя с именем на навигационной панели.
Разметка:
<ul class="nav navbar-nav">
<li>
<a href="#">Register<span class="glyphicon glyphicon-user"</span></a>
</li>
<li id="LoginBTN">
<a href="#">Log in<span class="glyphicon glyphicon-log-in"></span></a>
</li>
</ul>
Код позади:
protected void BTNLogIn_Click(object sender, ImageClickEventArgs e)
{
SqlMyName SqlUser= new SqlMyName ();
DataSet DsUser = new DataSet();
string StUser = "SELECT TblUsers.User_Name, TblUsers.Pass FROM TblUsers WHERE (((TblUsers.User_Name)= '" + TXTUserName.Text + "') AND ((TblUsers.Pass)= '" + TXTPass.Text + "'));";
DsUser = SqlUser.chkData(StUser);
if (DsUser.Tables[0].Rows.Count > 0)
{
string StShowFname = "SELECT TblUsers.Fname FROM TblUsers WHERE (((TblUsers.User_Name)= '" + TXTUserName.Text + "'));";
DataSet DsShowFname = SqlUser.chkData(StShowFname);
//How can I unshow or change text of <li>?
}
}
Что мне делать в коде?
У вас есть ряд вопиющих проблем с вашим кодом.
Начните с безопасности, потому что это всегда должно быть вашим приоритетом номер 1. Вы храните пароли в открытом тексте на своем сервере. Любой злоумышленник, который получает доступ к вашему серверу, теперь как легкий доступ для входа в систему с этими учетными записями пользователей. И поскольку пользователи часто используют те же имя пользователя и пароль на моих сайтах, вы действительно натолкнули своих пользователей на серьезную проблему. Никогда не храните пароли в открытом виде в своей базе данных. Вместо этого вы должны одним способом использовать хэш и солить пароли. Это означает, что злоумышленнику будет сложно получить фактические пароли. Чтобы убедиться, что учетные данные пользователя действительны, вы можете применить одно и то же хеширование к предоставленному им паролю и сравнить его с хешированным значением. Если они совпадают, у пользователя есть правильный пароль, и вы можете позволить им войти в систему.
Во-вторых, пользователи могут легко выполнять атаки SQL Injection против вашей базы данных, что позволяет им украсть и/или манипулировать данными. Вам нужно использовать параметризованные запросы.
Имена ваших идентификаторов не соответствуют стандартным соглашениям об именах.NET. Когда вы делитесь кодом с другими, например, с переполнением стека, это становится очевидным и делает ваш код более трудным для чтения. Используйте PascalCase для имен функций. Используйте camelCase для локальных переменных. Не используйте сокращения.
Чтобы показать или скрыть элементы управления на стороне сервера, вы можете использовать свойство .Visible
. Чтобы сделать элементы управления "серверной", вы можете добавить runat="server"
к их разметке. Установка свойства Visible
в значение false приведет к тому, что HTML не будет отображаться для этого элемента управления, и, таким образом, клиент не увидит его.
наценка
<ul class="nav navbar-nav">
<li runat="server" id="RegisterButton">
<a href="#">Register<span class="glyphicon glyphicon-user"</span></a>
</li>
<li id="LoginBTN" runat="server">
<a href="#">Log in<span class="glyphicon glyphicon-log-in"></span></a>
</li>
</ul>
Код позади:
RegisterButton.Visible = false;
LoginBTN.Visible = false;
Я сделал это .aspx
<ul class="nav navbar-nav pull-right">
<li>
<p class="navbar-text">
<% =login %><li><% =logout %></li>
</p>
</li>
</ul>
.cs
if (userLogintatus == true)
{
login = string.Format("Welcome " + (string)Session["Name"])
logout = "<a href='../Account/Logout.aspx' style='color: red;'>Logout</a>";
}
else logout = "";