session记录的问题,大家帮帮忙
本人原意是成功登陆以后就把登陆的人次数加1,但是我发现就算已经登陆的人再一次登陆还是可以登陆的,如何才能禁止他只能登陆一次.我用session无法做到,大家帮帮我用session怎么搞.
源代码:
<%@ page contentType= "text/html;charset=GB2312 " %>
<%@ page import= "java.sql.* " %>
<%@ page import= "java.util.* "%>
<html>
<link href= "css/wenzi.css " rel= "stylesheet " type= "text/css ">
<body>
<%
String driverName= "com.microsoft.jdbc.sqlserver.SQLServerDriver ";
String dbURL= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=login ";
String userName= "sa ";
String passWord= " ";
Connection con=null;
Statement sql=null;
ResultSet rs=null;
String Name=request.getParameter( "username ");
byte[] b=Name.getBytes( "ISO-8859-1 ");
Name=new String(b);
String PassWord=request.getParameter( "password ");
byte[] b1=PassWord.getBytes( "ISO-8859-1 ");
PassWord=new String(b1);
int sum=0;
String str=null;
try
{
Class.forName(driverName);
}
catch(ClassNotFoundException e)
{
out.print(e.toString());
}
try
{
con=DriverManager.getConnection(dbURL,userName,passWord);
sql=con.createStatement();
String execute= "select * from login where UserName= ' "+Name+ " ' and PassWord= "+PassWord+ " ";
rs=sql.executeQuery(execute);
if(rs.next())
{
sum=rs.getInt( "count ");
sum++;
%>
<table width= "42% " border= "0 " align= "center ">
<tr>
<td class= "wenzi ">
<div align= "center "> 个人信息 </div> </td>
</tr>
<tr>
<td class= "wenzi ">
<div align= "center "> 登陆成功,你是第 <%=sum%> 次登陆 </div> </td>
</tr>
<tr>
<td> </td>
</tr>
</table>
<%
String execute1= "update login set count= "+sum+ " where UserName= "+ " ' "+Name+ " ' ";
sql.executeUpdate(execute1);
}
else
{
out.print( " <font size=1> 登陆错误 ");
}
con.close();
}
catch(SQLException e)
{
out.print(e.toString());
}
%>
</body>
</html>
[解决办法]
怎么还有这么一句话--登陆成功,你是第 <%=sum%> 次登陆?
你不是只想让用户登陆一次的吗?
用户表中还有sum字段,什么意思呢?
---------------------------------
本人原意是成功登陆以后就把登陆的人次数加1,但是我发现就算已经登陆的人再一次登陆还是可以登陆的,如何才能禁止他只能登陆一次.我用session无法做到,大家帮帮我用session怎么搞.
[解决办法]
你是想把整个站点的总登陆次数加一,还是想把该用户在该站点的总登陆次数加一?
无论是前者还是后者,如果不把上次的数字记录下来,一旦服务器重启,数据都会消失,所以这个时候一般会使用数据库记录这个次数,有的系统使用文件。所以是总登陆次数的话,一定要从数据库里面取。每登陆一次,更新数据库加一。
至于如何让用户不能同时登陆两次。jsp里有个application对象,它的生命周期和web服务器的生命周期一样,只要服务器不重启,它都会存在不会变。所以可以把登陆了的用户记录在里面,登出的时候再消去,用户登陆的时候在里面找当前用户有没有被记录,如果记录了表示已经登陆,然后就不能登陆了。不过这都存在异常退出的问题,所以最好也同时把当前用户的session也存进去,同时也要判断session是否有效,有效才不能登陆。当然也可以通过数据库记录用户的登陆情况,需要解决的问题是一样的。