Criar subdomínio em cPanel usando PHP

Facebook
Google+
Twitter
LinkedIn
Criar subdomínio em cPanel usando PHP

Muitas vezes precisamos de soluções simples que infelizmente as grandes empresas de hopedagem não resolvem para nos vender um produto mais caro…

Pesquisando, encontrei uma forma simples de criar subdomínios no cPanel usando PHP, os créditos de onde encontrei o código estão no fim dessa postagem…

Vamos lá?

Para criar subdomínios em Cpanel usando o script PHP, usaremos a classe XMLAPI hospedada no GitHub.

Começaremos criando o arquivo index.php.
Obs: Não apaguei os comentários que estão em espanhol..

<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Crear Subdominios en  cPanel usando PHP</title>
	<!-- Latest compiled and minified CSS -->
	<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">

	<!-- Optional theme -->
	<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
	<style>
		body {
			margin: 80px auto;
			width: 500px;
			text-align: center;
		}
	</style>
</head>
<body>
	<h2>Crear Subdominios en  cPanel usando PHP</h2>
	<?php 
		if ($errors){
			?>
			<div class="alert alert-danger alert-dismissible" role="alert">
			  <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
			  <strong>Error!</strong> <?php echo $errors;?>
			</div>
			<?php
		}
	?>
	<?php 
		if ($messages){
			?>
			<div class="alert alert-success alert-dismissible" role="alert">
			  <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
			  <strong>Bien hecho!</strong> <?php echo $messages;?>
			</div>
			<?php
		}
	?>
				<form method='post' class="navbar-form" role="form">
                        <div class="input-group">
                            <span class="input-group-addon"><i class="glyphicon glyphicon-globe"></i></span>
                            <input id="subdominio" type="text" class="form-control" name="subdominio" value="" placeholder="Subdominio" pattern="[a-zA-Z0-9]{2,20}"  required title='Sólo se admiten de 2 a 20 caracteres alfa numéricos'>                                        
							
						</div> .<?php echo $_SERVER['SERVER_NAME'];?>


   

                        <button type="submit" class="btn btn-primary" name="crear">Crear</button>
                  </form>
</body>
</html>

Incluímos o alerta de início para poder ver as mensagens no caso de serem declaradas. A validação também foi feita usando expressões regulares HTML5.
Agora, o código php será criado para criar o subdomínio, para este exemplo, o código foi colocado no início do arquivo index.php

<?php
//Validación del lado del servidor
if (isset($_POST['crear'])){
	if (empty($_POST['subdominio'])) {//Verifica q el campo no esté vacío
            $errors = "Ingrese el subdominio";
        }  elseif (strlen($_POST['subdominio']) > 20 || strlen($_POST['subdominio']) < 2) {//Verifica q el campo contenga de 2 a 20 caracteres
            $errors = "El subdominio no puede ser inferior a 2 o más de 20 caracteres";
        } elseif (!preg_match('/^[a-zd]{2,20}$/i', $_POST['subdominio'])) {//Verifica que solo contenga caracteres alfa numéricos de 2 a 20 caracteres
            $errors = "El subdominio no permitido: Sólo están permitidos  de 2 a 20 caracteres alfa numéricos";
        } else if (!empty($_POST['subdominio'])){//Sino esta vacío entonces
			
			$subdominio=strtolower($_POST['subdominio']);//Convierto a minisculas
			$domain='ejemplo.com';//nombre de tu dominio
			/*------------------------ SubDomain Create ---------------*/
			  require("xmlapi.php");//Llamar la clase xmlapi
			  $cpanelusr = '';//nombre del usuario cPanel
			  $cpanelpass = '';//Contraseña del usuario cPanel
			  $xmlapi = new xmlapi('127.0.0.1');//Instanciamos la clase xmlapi pasando como parametro 127.0.0.1 
			  $xmlapi->set_port( 2082 );//Puerto cPanel puede ser 2082 ó 2083
			  $xmlapi->password_auth($cpanelusr,$cpanelpass);//Autenticacion en cPanel
			  $xmlapi->set_debug(1); //Salida de errores 1= verdadero
			  $json=$xmlapi->set_output('json');//Convierte mensajes de la api en formato json
			 
			  
			 $result = $xmlapi->api1_query($cpanelusr, 'SubDomain', 'addsubdomain', array($subdominio,$domain,0,0, '/public_html/'.$subdominio));//Creamos el subdominio
				 
				$array = json_decode($result);//Convierte en un array los datos json enviados por la API
				$errors_api= $array->{'error'}; //Extrae el mensaje de Mensaje de error
				if ($errors_api==null)
				{
			  if ($result){
				  $messages="El dominio <strong>$subdominio.$domain</strong> ha sido creado con éxito.";
				  
			  } else {
				  $errors="No se pudo crear el subdominio.";
			  }
				}
				else {
					$errors=$errors_api;
				}
			/*------------------------ fin SubDomain Create ---------------*/
		}
		else {
			$errors='Error desconocido';
		}
}

 

O que o código faz é o seguinte:

  • Valide os dados passados ​​através da entrada “subdomínio” no lado do servidor.
  • Ligue para a classe xmlapi.
  • Classe instantânea xmlapi.
  • Autenticação do usuário em nosso cPanel.
  • Se o script passou todas as validações, o subdomínio é criado.

Bem, isso seria tudo para criar um subdomínio em nosso cPanel, a partir de um formulário codificado com PHP.

Aviso Importante! Este script foi desenvolvido para fins educacionais, portanto, é sua responsabilidade implementar as medidas de segurança necessárias, caso você queira usá-lo em ambientes de produção.
Fonte: https://obedalvarado.pw

Deixe uma resposta

Comunidade