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);
});