Criando uma conta de hospedagem com a api do WHM

Há um tempo atrás publiquei dois posts aqui no blog ensinando a utilizar a api do WHM para listar as contas de todos os clientes e para ver as informações de determinado cliente.

Pois bem, continuando com a série de posts utilizando a api do WHM hoje vou mostrar pra vocês como criar uma conta de hospedagem para um cliente em php de forma descomplicada.

Antes de começarmos ressalto aqui que a classe php que utilizarei não é a mesma dos outros dois posts. Agora vamos implementar nosso script com a API XML oferecida pelo próprio site oficial do CPANEL/WHM. Para fazer o download, clique aqui. (obs: não se esqueça de tirar a extensão txt no final do arquivo

Bom, então vamos lá.

Teremos de implementar 2 arquivos: Um com o formulário onde preencheremos as informações do cliente (domínio, usuário, senha, plano, etc) e outro onde vamos capturar esses dados e chamar a API para salvar.

Primeiro: index.php (formulário)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
require_once('xmlapi.php');
 
$whm = new xmlapi('dominio_no_whm', 'usuario', 'senha');
 
$planos = $whm->listpkgs();
 
?>
 
<html>
  <head>
    <title>WHM - Cadastrar conta de cliente</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
  <h1>Cadastrar conta de hospedagem</h1>
 
  <form name="form1" method="post" action="cadastrar.php">
  <input type="hidden" name="acao" value="cadastrar" />
 
  <label>Domínio:</label><br />
  <input type="text" name="dominio" /><br /><br />
 
  <label>Email:</label><br />
  <input type="text" name="email" /><br /><br />
 
  <label>Usuário:</label><br />
  <input type="text" name="usuario" /><br /><br />
 
  <label>Senha:</label><br />
  <input type="password" name="senha" /><br /><br />
 
  <label>Plano:</label><br />
  <select name="plano">
    <?php if(count($planos) > 0): foreach($planos as $plano): ?>
        <option value="<?php echo $plano->name ?>"><?php echo $plano->name ?></option>
    <?php endforeach; endif; ?>
  </select>
  <br /><br />
  <input type="submit" value="Cadastrar" />
  </form>
  </body>
</html>

No formulário coloco os campos para as informaçoes do cliente (conta). Já nesse arquivo já chamos a classe xmlapi.php para poder listar os planos (pacotes). Esse formulário será submetido para o arquivo cadastrar.php (Obs: criei um campo hidden chamado ação com o valor cadastrar para verificar se realmente o formulário foi submetido)

Agora a implementação do arquivo cadastrar.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
require_once('xmlapi.php');
 
if($_POST['acao'] == 'cadastrar'){
    $whm = new xmlapi('dominio_no_whm', 'usuario', 'senha');
 
    $acc['domain'] = $_POST['dominio'];
    $acc['username'] = $_POST['usuario'];
    $acc['password'] = $_POST['senha'];
    $acc['contactemail'] = $_POST['email'];
    $acc['msel'] = $_POST['plano'];
 
    $verifica = $whm->createacct($acc);
 
    if($verifica->result->status != 0){
        echo 'Conta para o domínio <strong>'. $acc['domain'] .'</strong> foi criado com sucesso!';
    }
    else{
        echo 'Erro ao tentar criar conta. Tente novamente! Erro: ' . $verifica->result->statusmsg;
    }
}

Mais uma vez importo o xmlapi.php. Verifico se o formulário foi submetido e em caso afirmativo eu crio um array ($acc) tendo como índice os parâmetros e nos valores as informações da conta a ser criada. Depois executo o método createacct passando o array $acc como parâmetro.

Por fim, faço uma verificação no status do retorno para ver se a conta foi criada ou se ocorreu algum erro.

E pronto!

Mais uma tarefa simples e fácil de ser utilizada através da API do WHM.

Espero que tenham gostado. Qualquer dúvida estou à disposição na caixa de comentários.

Abs

Siga-me no twitter: @rafaelwendel

É formado em Sistemas de Informação, pós-graduado em Sistemas de Banco de Dados e mestre em Educação com foco em Tecnologias Sociocomunitárias. Trabalha como professor de ensino técnico e tecnológico no Instituto Federal de Educação, Ciência e Tecnologia de São Paulo ministrando disciplinas nas áreas de programação, banco de dados, desenvolvimento de projetos e engenharia de software.

Posts relacionados

Comentários

  1. Muito bom rafael, como sempre um tutorial fantástico, estou utilizando a API “whm.php” para criação e gerenciamento de contas de hospedagem e a “xmlapi.php” para lidar com as contas de e-mail, outro ponto muito sensívev e até chato para quem trabalha com hospedagem, tendo em vista muitas vezes os clientes esquecerem as senhas de webmail.

    Parabéns pelos post.

  2. Ow Mano, eu tenho q configurar alguma coisa no xmlapi.php? Tipo como o formulario vai saber que é pra criar uma conta de hospedagem no meu servidor?

    Estou no aguardo, grato.

    1. Você não precisa configurar nada no xmlapi.php

      A linha 5 do arquivo cadastrar.php:
      $whm = new xmlapi(‘dominio_no_whm’, ‘usuario’, ‘senha’);

      Voce coloca o seu dominio que utiliza o WHM com usuario e senha.

      Abs

  3. Mano eu consigo cadastrar o dominio no whm mais nao cosigo mostrar os planos na pagina de cadastro de dominio, não deveria pegar os planos do WHM e mostrar na pagina de cadastro, para o usuário selecionar o plano desejado? ou é eu que tenho que criar os planos manualmente?

    Aguardando retorno

  4. Olá, muito obrigado, partindo do seu artigo consegui usar várias funções para agora poder administrar todo meu whm por PHP de forma muito mais rápida e automatizada.

    Muito obrigado mesmo e parabéns.

  5. Rafael, você poderia atualizar os scripts de criação e suspensão para a nova API, pois essa não está funcionando mais, acho que foi devido a atualização do WHM

  6. pode me dar uma ajuda estou usando seus codigos no localhost mais esta mostrando esse erro abaixo pode me ajudar a resolver?

    Fatal error: Uncaught exception ‘Exception’ with message ‘curl_exec threw error “Could not resolve host: dominio_no_whm” for https://dominio_no_whm:2087/xml-api/listpkgs?’ in C:\xampp\htdocs\listex\admin\classes\xmlapi.php:725 Stack trace: #0 C:\xampp\htdocs\listex\admin\classes\xmlapi.php(647): xmlapi->curl_query(‘https://dominio…’, ”, ‘Authorization: …’) #1 C:\xampp\htdocs\listex\admin\classes\xmlapi.php(1441): xmlapi->xmlapi_query(‘listpkgs’) #2 C:\xampp\htdocs\listex\whm_panel.php(6): xmlapi->listpkgs() #3 {main} thrown in C:\xampp\htdocs\listex\admin\classes\xmlapi.php on line 725

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *