php实现登陆
⑴ 请教用php实现自动登录问题
1、在登录页面中添加一个复选框,让用户选择是否愿意在一定时间内实现自动登陆,例如两周。
代码:
<input type="checkbox" name="autologin">两周内自动登录
2、在负责处理登录过程的Servlet中,判断用户是否选择了该复选框。如果是,则执行这两个操作:向用户发送两个Cookie,以及向数据库写入一条相应的记录。
代码:
Cookie ckUsername, ckSessionid;
if (autologin.equals("on")) {
// 如果用户选择了“两周内自动登录”,则向用户发送两个cookie。
// 一个cookie记录用户名,另一个记录唯一的验证码,
// 并将此验证码写入数据库,以备用户返回时查询。(防止伪造cookie)
ckUsername = new Cookie("autoLoginUser", user.getUsername()); // user是代表用户的bean
ckUsername.setMaxAge(60 * 60 * 24 * 14); //设置Cookie有效期为14天
res.addCookie(ckUsername);
sessionid = session.getId(); // 取得当前的session id
ckSessionid = new Cookie("sessionid", sessionid);
ckSessionid.setMaxAge(60 * 60 * 24 * 14);
res.addCookie(ckSessionid);
// 在数据库中插入相应记录
userSessionDAO.insertUserSession(user, sessionid);
}
3、实现自动登录。因为用户下次访问的时候,可能直接访问网站的任何页面(例如通过收藏夹),而不一定是首页或者登录页面,所以我们需要用Filter拦截到达该网站的所有请求,并执行自动登录。
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
HttpSession session = request.getSession(true);
String username;
String sessionid; // 此sessionid是上次用户登录时保存于用户端的识别码,用于用户后续访问的自动登录。不是本次访问的session id。
Cookie[] cookies;
CookieManager cm = new CookieManager(); // CookieManager是一个自定义的类,用于从Cookie数组中查找并返回指定名称的Cookie值。
boolean isAutoLogin;
// 如果session中没有user对象,则创建一个。
User user = (User) session.getAttribute("user");
if (user == null) {
user = new User(); // 此时user中的username属性为"",表示用户未登录。
}
// 如果user对象的username为"",表示用户未登录。则执行自动登录过程。
// 否则不自动登录。
if (user.getUsername().equals("")) {
// 检查用户浏览器是否发送了上次登录的用户名和sessionid,
// 如果是,则为用户自动登陆。
cookies = request.getCookies();
username = cm.getCookieValue(cookies, "autoLoginUser");
sessionid = cm.getCookieValue(cookies, "sessionid");
isAutoLogin = userSessionDAO.getAutoLoginState(username, sessionid); // 如果在数据库中找到了相应记录,则说明可以自动登录。
if (isAutoLogin) {
user.setUsername(username);
user.setNickname(DBUtil.getNickName(username));
session.setAttribute("user", user); // 将user bean添加到session中。
}
}
chain.doFilter(req, resp);
}
⑵ php登陆页面完整代码
PHP登陆后跳转到登陆前页面,利用$_SERVER全局变量可以实现这个功能,下面有个不错的示例,希望对大家有所帮助
最近手上一个小项目让我接触到PHP编程,简单的登陆功能已经OK。可是在实际使用的时候发现一个问题:用户A发送一个链接给用户B,B打开时页面提示登陆,可是登陆成功后,却跳转到了首页,而并不是A发送的链接。为了有更好的用户体验,B登陆成功后应该自动跳转到登陆前的链接。查了PHP帮助手册,利用$_SERVER全局变量可以实现这个功能。 $_SERVER是PHP的一个超全局变量,关于$_SERVER变量的详细解释可以参考:http://www.php.net/manual/zh/reserved.variables.server.php 具体实现方法为:在提示用户登录的同时,在session或者cookie中记录下请求页面的URL;登录验证成功后在跳转回该URL。 checklogin.php 代码如下: session_start(); if (!isset ($_SESSION['login_ok'])) { echo "<script language=javascript>alert ('要访问的页面需要先登录。');</script>"; $_SESSION['userurl'] = $_SERVER['REQUEST_URI']; echo '<script language=javascript>window.location.href="login.php"</script>'; } login.php 代码如下: session_start(); //此处省略了账号密码验证代码,验证OK再执行下面代码 if (isset ($_SESSION['userurl'])) { //会话中有要跳转的页面 $url = $_SESSION['userurl']; } else { //没有要跳转的页面,则转到首页 $url = "home.php"; } //0.5s后跳转 echo "<meta http-equiv="refresh" content="0.5;url=$url">";
⑶ php如何实现登陆后返回原页面
在跳转到登录页面前要将访客访问的页面的url作为参数传递过去,登录验证后,授予访问权限之后跳转到该url指定的页面。
比如登录前的url为:openphp.html 当访客访问时,点击无权限,跳转到登录页面的地址就为login.php?url=openphp.html,这样在登录时就可以用GET方式获取该参数 openphp.html,登录验证成功后跳转到openphp.html 这个页面就可以了。
⑷ php登录系统怎么做
简单地说,登录系统,就是用php程序获取等表单数据,并记录相关数据进入数据库,设置相关数据写入session,记录登录状态后,进入登陆后界面就可以了
当然还需要很多细节的知识,需要仔细了解了,可以从网上下载一个简单登录系统,研究研究吧!
⑸ PHP来实现网站的注册和登录
说明: 对于小白学习php还是先下一个phpstudy吧 比较便捷许多且自带mysql
1、打开phpstudy并启动
2、打开mysql管理器并启动MYSQL-front 如图所示
1、建立一个名为register的html文件
2、建立一个名为registApi的php文件并刚建立的html相连
-拿到用户的字段和密码
-查询是否有重名现象(注:可以在php中嵌入html语句但一般写在外面如该图末尾所示)
-根据返回值判断是否成功
1、返回登录页面
2、创建一个名为loginApi的php文件并与刚刚的html相连接
3、若用户登录成功返回一个成功的界面所以创建一个success的html
⑹ 怎么用php模拟登陆
php 模拟登陆,可以使用 curl,以下是示例代码:
$post="name=2&userType=1&passwd=asdf&loginType=1&rand=6836&imageField.x=25&imageField.y=7";
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,"http://网址/login.action");
curl_setopt($ch,CURLOPT_HEADER,false);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_jar);
$result=curl_exec($ch);
curl_close($ch);
