密码被更改,cPanel 坏了。修复了密码,它仍然坏了!我必须遍历停放的域。我已经通过 PuTTY 验证了用户/密码组合是否正确。
<?php
include_once('cpanel_api_xml.php');
$domain = 'example.com';
$pass = '';//etc
$user = '';//etc
$xmlapi = new xmlapi('127.0.0.1');
$xmlapi->password_auth($user,$pass);
$domains_parked = $xmlapi->listparkeddomains($user);
foreach ($domains_parked as $k1=>$v1)
{
if ($v1->domain == $domain) {$return = true; break;}
}
?>
该代码生成以下错误:
为 foreach() 提供的参数无效
显然$domains_parked
甚至没有设置!我花了时间查看被调用的函数,所以没有转储所有 86KB 这里是清理后的版本$xmlapi->listparkeddomains
:
<?php
public function listparkeddomains($username, $domain = null)
{
$args = array();
if (!isset($username))
{
error_log("listparkeddomains requires that a user is passed to it");
return false;
}
if (isset($domain))
{
$args['regex'] = $domain;
return $this->api2_query($username, 'Park', 'listparkeddomains', $args);
}
return $this->api2_query($username, 'Park', 'listparkeddomains');
}
?>
我不知道他们将变量设置为第二个参数是做什么的。我在有和没有的情况下都调用了这个函数,并用一个简单的mail()
.
接下来我尝试以更直接的方式调用 API:
$xmlapi->api2_query($username, 'Park', 'listparkeddomains')
那也行不通。好的,让我们尝试一些非常原始的输出测试:
echo "1:\n";
print_r($xmlapi);
echo "2:\n";
print_r($xmlapi->api2_query($user, 'Park', 'listparkeddomains'));
echo "3:\n";
$domains_parked = $xmlapi->listparkeddomains($user);
print_r($domains_parked);
die();
输出以下内容:
1:xmlapi对象(
[debug:xmlapi:private] => [host:xmlapi:private] => 127.0.0.1 [port:xmlapi:private] => 4099 [protocol:xmlapi:private] => https [output:xmlapi:private] => simplexml [auth_type:xmlapi:private] => pass [auth:xmlapi:private] => <pass> [user:xmlapi:private] => <user> [http_client:xmlapi:private] => curl ) 2: 3:
我从来没有遇到过这么脆弱的代码,虽然我别无选择,只能使用它。请帮忙?