phpajax登录
⑴ php。通过ajax设置cookie成功后,客户端浏览器会更新cookie信息吗就是说网页不刷新
这样是不会刷新的,你必须在通过ajax设置cookie后由后端返回设置结果(成功/失败)
然后在前端通过js更新页面
因为网页在显示时已经下载完毕,不会改变了,你需要改变网页内容,就要用js修改,ajax取回来数据,然后前端用js根据数据来修改页面
你的后端将cookie删除了,但前端页面已经被浏览器解析,所以浏览器不会自己修改登录信息
解决方法:
ajax发送请求→PHP接到退出请求→PHP删cookie→PHP返回成功码{"success":1}或失败码{"success":0}→前端接受到返回码→如果是1,则通过js将用户名改掉(如document.getElementById('username').innerHTML='请登录')等
一般退出是直接用一个链接,用户访问连接后,后端清理cookie,然后用302或301跳转到原来页面或首页,目前大部分网站都是跳转的方式退出的
虽然ajax不刷新页面的方式理论上用户体验更好,但个人认为,退出账户这类操作不会经常使用,没有必要用ajax,通常是网页中动态展示的数据(如天气、抽奖结果、活动参与信息)等经常需要变动的数据用ajax
⑵ thinkPHP3.2.3利用Ajax前台实现验证码验证,但通过form表单的按钮提交后,验证码一直错误!如何解决
验证码一直错误那就是:后台生成的和前台显示的不是同一个验证码,你可以把后台生成的打印出来测试一下。
1:验证码生成代码:
//输入验证码
function verifyimg(){
//验证码做配置
$config = array(
'seKey' => 'ThinkPHP.CN', // 验证码加密密钥
'codeSet' => '', // 验证码字符集合
'expire' => 1800, // 验证码过期时间(s)
'useZh' => false,
'useImgBg' => false, // 使用背景图片
'fontSize' => 14, // 验证码字体大小(px)
'useCurve' => true, // 是否画混淆曲线
'useNoise' => true, // 是否添加杂点
'imageH' => 45, // 验证码图片高度
'imageW' => 100, // 验证码图片宽度
'length' => 4, // 验证码位数
'fontttf' => '4.ttf', // 验证码字体,不设置随机获取
'bg' => array(243, 251, 254), // 背景颜色
'reset' => true, // 验证成功后是否重置
);
$verify=new Verify($config); //实例化Verify类。 空间类元素引入。使用次数多的情况下。
//verify= new \Think\Verify 完全限定名称方式。 使用次数少的情况下。
$verify->entry(); //数据验证码。
}
2.下面的是一段验证码显示代码:
<ul>
<li class="user_main_text">验证码: </li>
<li class="user_main_input">
<input class="TxtValidateCodeCssClass" id="captcha" name="captcha" type="text">
验证码输出
<img src="{$smarty.const.__CONTROLLER__}/verifyimg" onclick="this.src='{$smarty.const.__CONTROLLER__}/verifyimg/'+Math.random()" alt="" />
</li>
</ul>
希望对你有帮助。
⑶ thinkphp ajax 请求 登录超时了怎么解决
1、请检查一下网络环境
2、请检查一下你的连接地址
3、ajax要访问单独的方法,不要和页面的控制器写在一个方法中,避免页面的加载
4、看看是不是操作数据库的时候,查询时间过长了
⑷ php 为什么 ajax 得到的$_COOKIE 跟页面打开时的$_COOKIE数据不一致
这个页面单开的时候cookie已经取出就是你开始的,通过ajax改变后只有刷新当前页面cookie才会改变
⑸ thinkphp中怎么用ajax
thinkphp中使用ajax很简单.主要掌握的地方有三个.
第一.tp中ajax的url需要使用大U方法.比如:$.post("{:U('User/add')}")
第二.控制器中返回结果得第一种方法.$this->error('失败','',true); 第三个参数为true.则发挥的是json数据.包含info.status.url三项.
第三.控制器中返回结果的第二种方法.$this->ajaxReturn(array('customKey1'=>'customValue1','customKey2'=>'customValue2','customKey3'=>'customValue3')).
掌握以上三点和ajax基本使用方法.那么在tp中使用ajax也就掌握了.简单的例子如下.伪代码,或许有错.
模板中:
<script>
$.post("{:U('User/add')",{uname:xiaoming,age:15},function(data){
//data接收返回数据
if(data.status==1){
alert(data.info);
location.href=data.url;
}else{
alert('错误');
}
});
</script>
控制器中:
publicfunctionadd(){
if(IS_AJAX){
$name=I('post.name','','trim');
$age=I('post.age','','trim');
if($name&&$age){
//插入数据
$this->success('添加成功',U('User/index'),true);
}else{
$this->ajaxReturn(array(
'status'=>0,
'info'=>'大爷,您没输入名字',
'url'=>U('User/add')
));
}
}else{
returnfalse;
}
}
大概就是这样子.至于剩下的$.ajax.$.getJson等等都是一样的道理
⑹ php 登录无页面刷新的问题
我觉得用jquery应该是比较简单的
提交信息后,先用jquery获取表单数据,然后jquery通过路径的形式发送信息给后台PHP页面,php页面去查询,如果正确,则返回一个真值,不正确就返回false
$.get(
"php端路径/user_name/" + $("#user_name").val(),
{user_name:$("#user_name").val()},
function(data){
if(data == '1') $("#e_user_name").html("恭喜你!登录成功!");
else $("#e_user_name").html("用户名不正确");
});
⑺ ajax 访问php页面提示 NetworkError: 500 Internal Server Error
500是服务器端错误,你到你的php里的vip/proct/ajax_book
,随便输出一个数字试试
⑻ php,ajax。我用ajax做退出登录,没做成功,我就是在点击“【退出】”将ajax请求到服务器
理论上是可以的,但要重新刷新页面,或者跳转
⑼ php ajax 302怎么解决
先保证你要Ajax的程序能正常执行。一般如果你的Ajax出错,是由于PHP程序或访问路径引起的,需要仔细检查。
⑽ php页面5分钟操作,就提示重新登录
//你可以在客户端也加一个全局事件只要有点击不管是哪里都触发
//然后在判断上一次触发时间和本次触发时间的间隔是否超过5分钟就可以了
//如下
document.addEventListener('click',function(){
varnow=newDate().getTime();
window.$lastOpTime=window.$lastOpTime||now;
if(now-window.$lastOpTime>5*60*1000){
alert('超时');
//doclient
//doserver
}
window.$lastOpTime=now;
console.log(now);
});