php - 通过代码通过PHP授权

标签 php jquery ajax authorization

是否可以通过代码方式通过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/

相关文章:

php - 从 MySql 数据库中获取值/行

php - Redis sub/pub 和 php/nodejs

javascript - 从文本区域获取值

javascript - 如何在 Ajax 表单提交后将用户重定向到另一个页面

javascript - 将 id 从 ajax 发送到 Controller 以删除数据

PHP 多单选按钮数组

jquery Ui 对话框无法淡出两次

javascript - 如何获得 HTML 按钮以通过函数传递表单的字符串?

ajax - Cors 在 Wamp 或 Apache 中不起作用

php - 使用 jquery 提交多个文本区域