是否可以通过代码传递PHP授权? 我还在jQuery ajax请求中看到了授权,使用ajax授权是否可以通过PHP授权?
我通过ajax请求获得了一个页面结果,我得到了结果,如果我将此代码添加到PHP脚本的顶部,则为no:
$valid_passwords = array ("admin" => "123456");
$valid_users = array_keys($valid_passwords);
$user = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
$validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]);
if (!$validated) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
die ("Not authorized");
}
现在它想要输入用户名和密码。可以通过代码输入用户名和密码吗?在ajax请求中有一些用于授权的内容,可以用于此吗?
答案 0 :(得分:3)
当然可以。看看cURL functions。 PS,如果你发布更多信息,你会得到更好的答案。
编辑...
要在远程系统上验证用户身份,您需要知道如何执行身份验证。最常见的是,您需要使用CURL将用户名和密码发布到登录页面,并保存它发回的cookie,以备将来的卷曲调用。
function Request($url,$params=array()){
$cookiefile = "/path/to/textfile";
if(!file_exists($cookiefile)){
@fopen($cookiefile, "w");
if(!file_exists($this->cookiefile)){
echo 'Cookie file missing. '.$cookiefile; exit;
}
}else if(!is_writable($cookiefile)){
echo 'Cookie file not writable. '.$cookiefile; exit;
}
$ch = curl_init();
$curlOpts = array(
CURLOPT_URL => $url,
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0',
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_COOKIEJAR => realpath($cookiefile),
CURLOPT_COOKIEFILE => realpath($cookiefile),
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTPHEADER => array(
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
"Connection: keep-alive",
"Content-Type: application/x-www-form-urlencoded")
);
if(!empty($params)){
$curlOpts[CURLOPT_POST] = true;
$curlOpts[CURLOPT_POSTFIELDS] = $params;
}
curl_setopt_array($ch,$curlOpts);
$answer = curl_exec($ch);
if (curl_error($ch)) {
echo curl_error($ch); exit;
}
curl_close($ch);
return (@gzdecode($answer)) ? gzdecode($answer) : $answer;
}
答案 1 :(得分:2)
你可以通过用户和;传递URL如下
http://username:password@www.example.com