通过代码传递PHP授权

时间:2014-10-13 15:56:47

标签: php jquery ajax authorization

是否可以通过代码传递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请求中有一些用于授权的内容,可以用于此吗?

2 个答案:

答案 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