如何使用PHP(和Curl)登录DirectAdmin

Pvd*_*vdL 0 php post curl login

嘿伙计们,我正在尝试创建一个脚本,它将从DirectAdmin中提取日志,以便将它们解析并提交给数据库,问题是DirectAdmin的登录.

我尝试了很多脚本,但我似乎无法让它工作......

当前脚本:

$url = 'http://213.247.000.000:2222/CMD_SHOW_LOG?domain=mydomain.com&type=log';
$username = 'xxx';
$password = 'xxx';
    $fields = array(
        'username'=>urlencode($username),
        'password'=>urlencode($password)
        );
    $fields_string='';
    foreach($fields as $key=>$value) { 
        $fields_string .= $key.'='.$value.'&'; 
    }
    rtrim($fields_string,'&');
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_POST,count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
    $result = curl_exec($ch);
    if($result===false) {
        echo 'CURL ERROR: '.curl_error($ch);
    }
    curl_close($ch);

    var_dump($result);
Run Code Online (Sandbox Code Playgroud)

Pvd*_*vdL 5

我懂了!

从中做了一点功能:

function getlog($ip,$username,$password,$domain) {
    $url = 'http://'.$ip.':2222';

    // set temp cookie
    $ckfile = tempnam ("/tmp", "CURLCOOKIE"); 

    // make list of POST fields
    $fields = array(
        'referer' =>urlencode('/'),
        'username'=>urlencode($username),
        'password'=>urlencode($password)
        );
    $fields_string='';
    foreach($fields as $key=>$value) { 
        $fields_string .= $key.'='.$value.'&'; 
    }
    rtrim($fields_string,'&');
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_COOKIEJAR, $ckfile);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_URL,$url.'/CMD_LOGIN');
    curl_setopt($ch,CURLOPT_POST,count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
    $result = curl_exec($ch);
    if($result===false) {
        die('CURL ERROR: '.curl_error($ch));
    } else {
        curl_setopt($ch,CURLOPT_URL,$url.'/CMD_SHOW_LOG?domain='.$domain.'&type=log');
        curl_setopt($ch,CURLOPT_COOKIEFILE, $ckfile);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
        $result = curl_exec($ch);
        curl_close($ch);
        if($result===false) {
            die('CURL ERROR: '.curl_error($ch));
        } else {
            return $result;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)