是否可以通过代码方式通过PHP授权? 我还在jQuery ajax请求中看到了授权,用ajax授权是否可以通过PHP授权?
我通过ajax请求获得了页面结果,并且我得到了结果,如果我将此代码添加到PHP脚本的顶部,则不会:
$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请求中有一些授权的东西,可以用来做授权吗?
最佳答案
当然是这样。查看cURL functions 。 PS,如果您发布更多信息,您会得到更好的答案。
编辑...
为了对远程系统上的用户进行身份验证,您需要知道身份验证是如何执行的。最常见的是,您需要使用 CURL 将用户名和密码发布到登录页面,并保存它发送回的 cookie 以供将来的 curl 调用。
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;
}
关于php - 通过代码通过PHP授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26344112/