第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

ajax調(diào)用PHP類庫(kù)中的函數(shù),這是為什么呢?求解釋!

ajax調(diào)用PHP類庫(kù)中的函數(shù),這是為什么呢?求解釋!

桃花長(zhǎng)相依 2022-04-01 18:07:41
我在編寫網(wǎng)站是使用ajax異步調(diào)用php文件,這樣很麻煩,我想如歌ajax能調(diào)用PHP類庫(kù)中的函數(shù)就最好了。我的ajax代碼如下:function useridexist(){var userid=document.login.userid.value;xhr.open("GET","class/useridexist.php?id="+userid,true);xhr.onreadystatechange=showidexist;xhr.send(null);}function showidexist(){if(xhr.readyState == 1){document.getElementById('useridexist').innerHTML="Check the ID, Please wait...";}if(xhr.readyState == 4){if(xhr.status == 200){var result=xhr.responseText;document.getElementById('useridexist').innerHTML=result;}}}我不想每次都是class/useridexist.php?id="+userid,true);而是最好可以到PHP的類庫(kù)中調(diào)用函數(shù)。非常感謝你的回答!!一樓的方法我想過(guò),但是這樣還是需要寫很多的頁(yè)面的,我需要的辦法是在一個(gè)頁(yè)面中的PHP類庫(kù)中的不同函數(shù)來(lái)解決這些問(wèn)題,謝謝?。?
查看完整描述

3 回答

?
犯罪嫌疑人X

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊

直接調(diào)用不可能,但可以繞過(guò)去調(diào)用
a.php
<?php
$_token = md5(time());//令牌
$_SESSION['_TOKEN'] = $_token;
//....
?>
<html>
...
<form>
<input name="_TOKEN" value="<?php print $_token; ?>">
....
//這里說(shuō)一下令牌,令牌一般是服務(wù)器端驗(yàn)證提交數(shù)據(jù)是否為合法
//與驗(yàn)證碼功能差不多,不過(guò)驗(yàn)證碼需要手動(dòng)輸入,這個(gè)是程序內(nèi)部使用
...
處理post
<?php
if($_POST['_TOKEN'] == $_SESSION['_TOKEN'])
{
$_SESSION['_TOKEN'] = '';//清除令牌,防止網(wǎng)絡(luò)延緩的再次提交。
...
}
?>
然后是ajax
上面我為什么要在你原來(lái)的程序上加入令牌呢,因?yàn)榭梢噪S意的調(diào)用php函數(shù)是很不安全的,很容易被有心人利用,所以做一點(diǎn)安全保護(hù),當(dāng)然不一定絕對(duì)安全

function _new_ajax()
{
//創(chuàng)建XMLHTTPRequests
return xhr;
}

function _ajax(_option)//url, data, type, async
{
//初始化
if(typeof _option.url == 'undefined' || _option.url == '')
{
alert('ajax錯(cuò)誤,沒(méi)有定義請(qǐng)求路徑');
return false;
}
_option.data = _option.data || {};
_option.type = _option.type || 'GET';
_option.async = _option.async || true;
_option.callback = _option.callback || function(){};
//開始請(qǐng)求
var xhr = _new_ajax();
if(typeof _option.data == 'string')
{
_option.url += (_option.url.match(/\?/) ? "&" : "?") + _option.data;
}
else
{
for(var i in _option.data)
{
_option.url += (_option.url.match(/\?/) ? "&" : "?") + i + '=' + _option.data[i];
}
}
xhr.open(_option.type, _option.url, _option.async);
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200)
{
var res = xhr.responseText;
_option.callback(res);
}

};
xhr.send(null);
xhr = null;
}
上面的是我簡(jiǎn)單寫的,估計(jì)考慮不是很全

驗(yàn)證用戶是否存在就這樣
function check_user_id()
{
document.getElementById('useridexist').innerHTML = "Check the ID, Please wait...";
var user_id = document.login.userid.value;
//這里是上面說(shuō)的,要直接使用函數(shù)庫(kù),必須安全驗(yàn)證
var _TOKEN = document.login._TOKEN.value;
_ajax({
url:'class/useridexist.php',
data:{_TOKEN:_TOKEN, function:check_user, id:user_id},//調(diào)用php函數(shù)check_user
callback:function(res){
document.getElementById('useridexist').innerHTML = res;
}
})
}
好了,準(zhǔn)備就緒,現(xiàn)在看php端了
b.php
<?php
if($_GET['_TOKEN'] == $_SESSION['_TOKEN'])
{
//這里不清除令牌,因?yàn)樘峤籶ost還要使用,驗(yàn)證在前,提交post在后
$function = $_GET['function'];
if(function_exists($function))
{
$function($_GET);
}
else
{
print '函數(shù)'.$function.'不存在';
}
}

//以下為函數(shù)庫(kù)
function check_user($get)
{
//.....驗(yàn)證存在否,輸出
}
?>



查看完整回答
反對(duì) 回復(fù) 2022-04-06
?
肥皂起泡泡

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊

你利用一個(gè)參數(shù)傳進(jìn)去不就行了嗎...你的意思是我要調(diào)用很多次ajax.但是每次它所請(qǐng)求的頁(yè)面都不一樣(也就是說(shuō)..每個(gè)類庫(kù)都是一個(gè)頁(yè)面)..這樣就要寫很多函數(shù)是吧???

function useridexist(class)
{
var userid=document.login.userid.value;
xhr.open("GET","class/"+class+".php?id="+userid,true);
xhr.onreadystatechange=showidexist;
xhr.send(null);

}

我知道你的意思了.

有種很簡(jiǎn)單的方法..你帶一個(gè)參數(shù)進(jìn)去..

比如一個(gè)頁(yè)面里面都是函數(shù)..

那么$_get[arg]..這樣就行了..

將函數(shù)的名字用參數(shù)帶過(guò)去..然后函數(shù)頁(yè)面獲取..得到的是哪個(gè)值就相應(yīng)的運(yùn)行v..



查看完整回答
反對(duì) 回復(fù) 2022-04-06
?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊

如果你只是想省下這個(gè)參數(shù)傳遞。

用 SESSION 或者 COOKIE 就可以了。只是改變一下參數(shù)傳遞方式罷了。不用 GET 

查看完整回答
反對(duì) 回復(fù) 2022-04-06
  • 3 回答
  • 0 關(guān)注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)