日期:2014-05-18  浏览次数:20390 次

本人新手问已经成长起来的人一个小问题
用户控制系统效果:
注册在网站的用户,可以发帖子,没有注册的过客无法进行该操作.

是不是象下面这样做
  在登陆按钮提交事件里   判断用户名是否存在   如果为真   并密码符合   生成一个     COOKIE   用户名   和密码
然后跳转至发帖页面或其他页面用户可操作页面
在每项操作的按钮里去判断COOKIE的值


请高手指点指点    




------解决方案--------------------
大致看了看你的代码,提出几点问题:

1 既然可以读 if(mr.Read ()) ,也就是说本身查询条件就是按照用户名来查询,那么 ,那么就不用写 if(TextBox1.Text.Trim ()==mr[0].ToString ()) ,多写了个判断。

2 此段代码在写SQL语句时 应该用传参方法来实现,可以防止注入式攻击。目前,前台验证总是不怎么可靠,所以 后台代码就非常重要。例: SqlConnection sc = new SqlConnection( "server=.;database=studentforum;user=sa;pwd= ");
SqlCommand scd = new SqlCommand();
scd.Connection = sc;
try
{

sc.Open();
scd.CommandText = "select " + b + " from " + c + " where " + b + " = @a ";
scd.Parameters.Add( "@a ",a);
SqlDataReader rd = scd.ExecuteReader();
while(rd.Read())
{
return rd[b].ToString();
}

return " ";
}
catch
{
return " ";
}
finally
{
scd.Parameters.Clear();
sc.Close();
}

以上 代码是个 查询 用户是否存在的 代码,你可以扩展下 变成登陆,其中 b 为表中 用户名字段, c 为表明,a 为条件, a 就是 传参数形势。

3 TextBox的Text属性 本身就是 string 类型,不用加 ToString()。