Foros del Web » Programando para Internet » PHP »

Gestion de Hosting - Básico - APORTE

Estas en el tema de Gestion de Hosting - Básico - APORTE en el foro de PHP en Foros del Web. Hola a todos , he estado buscando un script para administrar mis clientes, solo buscaba algo que le envíe a los clientes un mail automaticamente ...
  #1 (permalink)  
Antiguo 05/08/2010, 13:03
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.339
Antigüedad: 10 años
Puntos: 177
Gestion de Hosting - Básico - APORTE

Hola a todos , he estado buscando un script para administrar mis clientes, solo buscaba algo que le envíe a los clientes un mail automaticamente para informarle que deben pagar la cuota mensual o anual, encontré el AcountLabPlus pero requiere tener activado en el servidor CURL, y mi hosting no lo permite, y asi encontré varios pero todos requerias el CURL, entonces decidí crear este pequeño pero util script, que avisa a los clientes que deben pagar.
Por favor si quieren modificarlo y mejoraarlo haganló, yo lo hice a mi manera y seguramente que se puede mejorar 100%
Atencion: para usar este script se debe programar el CronJobs del control panel de tu cuenta. con la siguiente linea:

php -q /home/USUARIO/public_html/mail.php

( Donde dice usuario cambialo por tu usuario, si no conoces esta ruta lo que puedes hacer para conocerla es hacer un archivo php con un error asi te devuelve el error con la ruta )

Programar el cronjobs para que se ejecute una vez por día.

Dejo aqui los codigos:

ARCHIVO ADMIN.PHP 1° parte

Código PHP:
<?php 
include("conexion.php");

####### consulta general para ver cuantos clientes tenemos########
$c_hosting=mysql_query("select * from hosting",$conexion);

############# consulta editar clientes ya existentes###################
$id=$_REQUEST['id'];
$c_editar=mysql_query("select * from hosting where id='$id'",$conexion);
$r_c_editar=mysql_fetch_array($c_editar);


#############BORRAR CLIENTE####################
if (isset($_GET['borrar'])){
    
$confirmado=$_GET['borrar'];
    
?>
    <p align="center">Est&aacute; seguro que quiere borrar este cliente?<br/>
    <a href="admin.php?confirmado=<?php echo $confirmado?>">SI</a> - 
    <a href="javascript:history.go(-1)">NO</a> </p>
    
    <?php
    
exit;
}    
if (isset(
$_GET['confirmado'])){

    
$borrar_cliente=mysql_query("delete from hosting where id ='".$_GET['confirmado']."' ",$conexion);
    echo 
'<p align="center">El cliente ha sido borrado con exito... <br /><br /><a href="admin.php>VOLVER</a></p>';
    exit;
}

###############################################

##### die mes y año actuales############################################
$hoy=date("d");
$mes_hoy=date("m");
$ano_hoy=date("Y");

############## si recibimos la variable $_POST['ingresarcliente'] del boton del formulario 
/* procedemos a actualizar o ingresar nuevo cliente
si recibimos la variable del campo del formulario, llamada $_POST['update'] actualizamos un cliente
ya existente , sinó ingresamosuno nuevo */

if(isset($_POST['ingresarcliente'])){
    
    
    
#####recuperamos las variables#########
    
$usuario=$_POST['usuario'];
    
$dominio=$_POST['dominio'];
    
$ingreso_dia=$_POST['ingreso_dia'];
    
$ingreso_mes=$_POST['ingreso_mes'];
    
$ingreso_ano=$_POST['ingreso_ano'];
    
$mail=$_POST['mail'];
    
$observaciones=$_POST['observaciones'];
    
$importe=$_POST['importe'];
    
$periodo=$_POST['periodo'];
    
$anual_enviado=$_POST['anual_enviado'];
    
    
    if(isset(
$_POST['update'])&&($_POST['update']!="")){
    
###### actualizamos/editamos cliente, recibimos el id del cliente mediante  $_POST['update'] ###
    
$c_editar_datos=mysql_query("update hosting set    usuario='$usuario',
                                                       dominio='$dominio',
                                                       ingreso_dia='$ingreso_dia',
                                                       ingreso_mes='$ingreso_mes',
                                                       ingreso_ano='$ingreso_ano',
                                                       mail='$mail',
                                                       observaciones='$observaciones',
                                                       importe='$importe',
                                                       periodo='$periodo'
                                                        where id='"
.$_POST['update']."'",$conexion);
    }else{
    
#####insertamos nuevo cliente##########
    
$c_nuevo_cliente=mysql_query("insert into hosting (
                                                       usuario,
                                                       dominio,
                                                       ingreso_dia,
                                                       ingreso_mes,
                                                       ingreso_ano,
                                                       mail,
                                                       observaciones,
                                                       importe,
                                                       periodo, 
                                                       anual_enviado
                                 
                                                       )values( 
                                                       
                                                       '$usuario',
                                                       '$dominio',
                                                       '$ingreso_dia',
                                                       '$ingreso_mes',
                                                       '$ingreso_ano',
                                                       '$mail',
                                                       '$observaciones', 
                                                       '$importe',
                                                       '$periodo', 
                                                       '$anual_enviado'
                                                       )"
,$conexion)or die(mysql_error());
    }
    
    
######### volvemos a admin.php para ver los datos actualizados
    
header("Location: admin.php");

    
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Gestion de hosting - Básico</title>
<style type="text/css">
<!--
.fondotabla {
    background-color: #CCC;
}
.colorgris {
    color: #333;
    padding-left: 5px;
}
body,td,th {
    font-family: Verdana, Geneva, sans-serif;
    font-size: 12px;
}
.rojo {
    color: #900;
    padding-left: 5px;
    font-weight: bold;
}
.margenderecha {
    padding-right: 5px;
}
.centro {
    text-align: center;
}
.tamano9 {
    font-size: 9px;
}
-->
</style>
</head>

<body>
<h2 class="centro">Gestion de Hosting - Básico</h2>
<p><a href="admin.php">inicio</a></p>
<table width="900" border="0" align="center" cellpadding="0" cellspacing="1" class="fondotabla">
  <tr>
    <td height="35" align="left" bgcolor="#E2E2E2" class="colorgris"><strong>Clientes actuales</strong></td>
    <td align="left" bgcolor="#E2E2E2"><span class="colorgris"><strong>Fecha de ingreso</strong></span></td>
    <td align="left" bgcolor="#E2E2E2" class="colorgris"><strong>Periodo</strong></td>
    <td align="left" bgcolor="#E2E2E2" class="colorgris"><strong>Observaciones</strong></td>
    <td align="left" bgcolor="#E2E2E2" class="colorgris"><strong>Editar</strong></td>
  </tr>
    
    <?php 
    
## mostramos los datos de los clientes en este while
    
while($r_c_hosting=mysql_fetch_array($c_hosting)){?>
      <tr>
    <td align="left" valign="middle" bgcolor="#FFFFFF" class="rojo">
    
        <?php echo $r_c_hosting['dominio'];?>
        
        </td>
    <td align="left" valign="middle" bgcolor="#FFFFFF" class="colorgris">
    <?php echo $r_c_hosting['ingreso_dia'];?> - 
    <?php echo $r_c_hosting['ingreso_mes'];?> - 
    <?php echo $r_c_hosting['ingreso_ano'];?></td>
    <td align="left" valign="middle" bgcolor="#FFFFFF" class="colorgris">
    <?php     
    
## mostramos si el cliente paga por mes o por año, con este switch
    
switch ($r_c_hosting['periodo']) {
    case 
1:
    echo 
"Mensual";
    break;
    case 
2:
    echo 
"Anual";
    break;
    default:
    echo 
"No definido";
}
?>
    </td>
    <td align="left" bgcolor="#FFFFFF" class="colorgris"><?php echo $r_c_hosting['observaciones'];?></td>
    <td align="left" bgcolor="#FFFFFF" class="colorgris"><a href="admin.php?editar=1&id=<?php echo $r_c_hosting['id'];?>">editar</a></td>
  </tr>

        
    <?php }?>
    
    
    
    
    
    
</table>
<p>&nbsp;</p>
<form id="form1" name="form1" method="post" action="admin.php">
  <table width="900" border="0" align="center" cellpadding="0" cellspacing="1" class="fondotabla">
    <tr>
      <td width="294" height="35" align="left" bgcolor="#E2E2E2" class="colorgris"><strong><?php
      
      
#### si recibimos $_GET['editar'] mostramos el titulo "Editar cliente" sinó mostramos "Ingresar nuevo cliente"
      
      
if (isset($_GET['editar'])){echo "Editar cliente "; echo '<span style="color:red">'.$r_c_editar['dominio'].'</span>';}else {echo "Ingresar nuevo cliente";} ?></strong></td>
      <td width="374" height="35" align="left" bgcolor="#E2E2E2" class="colorgris">&nbsp;</td>
      <td width="228" align="left" bgcolor="#E2E2E2" class="colorgris">
      <?php if (isset($_GET['editar'])){?>
      <a href="admin.php?borrar=<?php echo $r_c_editar['id']; ?>">BORRAR ESTE CLIENTE</a>
      <?php }?>
      </td>
    </tr>
    <tr>
      <td bgcolor="#FFFFFF">&nbsp;</td>
      <td colspan="2" bgcolor="#FFFFFF">&nbsp;</td>
    </tr>
    <tr>
      <td align="right" bgcolor="#FFFFFF" class="margenderecha">Usuario</td>
      <td colspan="2" align="left" bgcolor="#FFFFFF"><label>
      
      <!--si recibimos la variable $_GET['editar'] quiere decir que queremos editar un cliente 
      entonces mostramos en el value del campo de texto, los valores que ya estan en la base de datos , por medio de la consulta
      " $c_editar=mysql_query("select * from hosting where id='$id'",$conexion); "-->
      
        <input name="usuario" type="text" id="usuario" size="45" value="<?php if (isset($_GET['editar'])){echo $r_c_editar['usuario'];} ?>" />
      </label></td>
    </tr>
    <tr>
      <td align="right" bgcolor="#FFFFFF" class="margenderecha">Dominio</td>
      <td colspan="2" align="left" bgcolor="#FFFFFF"><label>
        <input name="dominio" type="text" id="dominio" size="45" value="<?php if (isset($_GET['editar'])){echo $r_c_editar['dominio'];} ?>"/>
      </label></td>
    </tr>
    <tr>
      <td align="right" bgcolor="#FFFFFF" class="margenderecha">Importe</td>
      <td colspan="2" align="left" bgcolor="#FFFFFF"><label>
        <input name="importe" type="text" id="importe" size="45" value="<?php if (isset($_GET['editar'])){echo $r_c_editar['importe'];} ?>"/>
      </label></td>
    </tr>
    <tr>
      <td align="right" bgcolor="#FFFFFF" class="margenderecha">Fecha de ingreso <strong>dia</strong></td>
      <td colspan="2" align="left" bgcolor="#FFFFFF"><label>
__________________
la la la

Última edición por truman_truman; 05/08/2010 a las 13:10
  #2 (permalink)  
Antiguo 05/08/2010, 13:04
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.339
Antigüedad: 10 años
Puntos: 177
Respuesta: Gestion de Hosting - Básico - APORTE

ARCHIVO ADMIN.PHP segunda parte
Código PHP:
      <!--en estos tres campos siguientes mostramos el dia , el mes y el año actual, podemos modificar a nuestro gusto -->
        <input name="ingreso_dia" type="text" id="ingreso_dia" size="45" value="<?php if (isset($_GET['editar'])){echo $r_c_editar['ingreso_dia'];}else{echo $hoy;}?>" />
        <strong class="rojo">*<span class="tamano9">ATENCIÓN</span></strong></label></td>
    </tr><tr>
      <td align="right" bgcolor="#FFFFFF" class="margenderecha">Fecha de ingreso <strong>mes</strong></td>
      <td colspan="2" align="left" bgcolor="#FFFFFF"><label>
        <input name="ingreso_mes" type="text" id="ingreso_mes" size="45" value="<?php if (isset($_GET['editar'])){echo $r_c_editar['ingreso_mes'];}else{echo $mes_hoy;}?>" />
      </label></td>
    </tr><tr>
      <td align="right" bgcolor="#FFFFFF" class="margenderecha">Fecha de ingreso <strong>año</strong></td>
      <td colspan="2" align="left" bgcolor="#FFFFFF"><label>
        <input name="ingreso_ano" type="text" id="ingreso_ano" size="45" value="<?php if (isset($_GET['editar'])){echo $r_c_editar['ingreso_ano'];}else{echo $ano_hoy;}?>" />
      </label></td>
    </tr>
    <tr>
      <td align="right" bgcolor="#FFFFFF" class="margenderecha">Mail</td>
      <td colspan="2" align="left" bgcolor="#FFFFFF"><label>
        <input name="mail" type="text" id="mail" size="45" value="<?php if (isset($_GET['editar'])){echo $r_c_editar['mail'];} ?>"/>
        
      </label></td>
    </tr>
    <tr>
      <td align="right" bgcolor="#FFFFFF" class="margenderecha">Periodo</td>
      <td colspan="2" align="left" bgcolor="#FFFFFF"><label>
      <!--en el caso de editar un cliente, validamos los datos del select  -->
        <select name="periodo" id="periodo">
          <option value="">Seleccionar</option>
          <option <?php if (isset($_GET['editar'])){if($r_c_editar['periodo']==1){echo 'selected="selected"';}}?> value="1" >Mensual</option>
          <option <?php if (isset($_GET['editar'])){if($r_c_editar['periodo']==2){echo 'selected="selected"';}}?> value="2">Anual</option>
        </select>
      </label></td>
    </tr>
    <tr>
      <td align="right" valign="top" bgcolor="#FFFFFF" class="margenderecha">Observaciones</td>
      <td colspan="2" align="left" bgcolor="#FFFFFF"><label>
        <textarea name="observaciones" id="observaciones" cols="45" rows="5"><?php if (isset($_GET['editar'])){echo $r_c_editar['observaciones'];} ?></textarea>
      </label></td>
    </tr>
    <tr>
      <td height="50" colspan="3" align="center" valign="middle" bgcolor="#FFFFFF" class="margenderecha"><label>
        <input type="submit" name="ingresarcliente" id="ingresarcliente" value="Enviar" />
        
    <!--  este campo indica que debemos actualizar/editar el cliente , si recibimos la variable $_GET['id'] 
          quiere decir que hicimos click en el vinculo  "editar" el cual pasa por get la id del cliente ya existente  -->
      </label><input name="update" type="hidden" value="<?php if (isset($_GET['id'])){echo $_GET['id'];} ?>" />
      <input name="anual_enviado" type="hidden" value="<?php echo  $ano_hoy;?>" />
      </td>
    </tr>
  </table>
</form>
<p align="center" class="rojo">* <span class="tamano9">ATENCIÓN: no poner 29, 30, 31, ya que hay mese que no poseen esas fechas y nunca será enviado el mail :) </span></p>
</body>
</html>
__________________
la la la

Última edición por truman_truman; 05/08/2010 a las 13:07 Razón: correccion
  #3 (permalink)  
Antiguo 05/08/2010, 13:05
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.339
Antigüedad: 10 años
Puntos: 177
Respuesta: Gestion de Hosting - Básico - APORTE

ARCHIVO MAIL.PHP

Código PHP:
<?php 
include("conexion.php");


/* este script se ejecuta  mediante el cron jobs del control panel, verifica si el dia de ingreso del cliente es igual al dia de hoy, en 
caso afirmativo envía el mail con el texto que dice que tiene que pagar la cuota de hosting */

## cambiar esto [email protected] por tu mail y cambiar esto http://www.MiDominio.com por tu dominio

##dia mes año actuales
$hoy=date("d");
$mes_hoy=date("m");
$mes_hoy2=date("m");
$ano_hoy=date("Y");

## meses del año
    
switch ($mes_hoy2) {
    case 
1:
    
$mes_hoy2"Enero";
    break;
    case 
2:
    
$mes_hoy2"Febrero";
    break;
    case 
3:
    
$mes_hoy2"Marzo";
    break;
    case 
4:
    
$mes_hoy2"Abril";
    break;
    case 
5:
    
$mes_hoy2"Mayo";
    break;
    case 
6:
    
$mes_hoy2"Junio";
    break;
    case 
7:
    
$mes_hoy2"Julio";
    break;
    case 
8:
    
$mes_hoy2"Agosto";
    break;
    case 
9:
    
$mes_hoy2"Septiembre";
    break;
    case 
10:
    
$mes_hoy2"Octubre";
    break;
    case 
11:
    
$mes_hoy2"Noviembre";
    break;
    case 
12:
    
$mes_hoy2"Diciembre";
    break;
    
    default:
    
$mes_hoy2"Actual";}





## consultamos los clientes existentes 
$c_hosting=mysql_query("select * from hosting",$conexion);


## en este while enviamos los mails
while($r_c_hosting=mysql_fetch_array($c_hosting)){
    
          
/* si el dia de ingreso del cliente es igusl al dia de hoy y el campo periodo es igual a 1 (osea que es mensual), 
          le enviamos un mail diciendo que pague, sinó si el valor de periodo es 2 que sería pago anual este no se ejecuta, se ejecuta el "if" de mas  abajo */
          
        #########################################
          
          
          
          
          
          
if  ($r_c_hosting['periodo']==1){
              
              if(
$r_c_hosting['ingreso_dia']==$hoy){
              
              
              
$asunto$r_c_hosting['dominio']." Recordatorio de orden de pago.";
              
$mensaje"Estimado ".$r_c_hosting['usuario']. "  (".$r_c_hosting['dominio']."): 

Este es un mensaje para informarle que a la fecha no hemos registrado el pago 
de la cuota por el servicio de Hosting del dominio "
.$r_c_hosting['dominio']." correspondiente al mes de ".$mes_hoy2.".
Por favor una vez realizado el pago enviar mail a [email protected]

El pago se efectúa mediante deposito bancario a la siguiente cuenta:

BANCO Provincia

N° cuenta:  0-000000-0000 
CBU :       00000000-0 00000000000-0
CUIL:       00-00000000-0 

IMPORTE: $ "
.$r_c_hosting['importe']."   (pesos argentinos)





Por favor, no dude en contactarnos por cualquier consulta sobre nuestro servicio.

Muchas gracias

Diseño y desarrollo web http://www.MiDominio.com"
;




              
$mail_destinatario $r_c_hosting['mail'];
              
$headers .= "From: [email protected]";
              
mail($mail_destinatario$asunto$mensaje$headers );
              
              
              }

              
          }
          
          
          
          
          
          
        
#########################################
          
        /*   Aqui se manda el mail para los clientes que pagan anualmente
          Comprobamos si el campo "periodo" está en 1 o en 2, 1 es mensual y 2 anual,
          si es igual a 2 (anual) y si el campo "anual_enviado" (guarda el año pagado por el cliente) es menor al año actual, osea que sería el año pasado,
          entonces se comprueba que el año actual sea igual a la suma de el año guardado en "anual_enviado" ,(osea el año pasado), y un valor 1, esto nos dá como
          resultado un año, si este año coincide con el año actual y si el  mes actual coincide con el mes guardado en el campo de la base "ingreso_mes" y el dia actual 
          coincide con el dia guardado en "ingreso_dia" , entonces se ejecuta el envio del mail con el mensaje para que el cliente pague su cuota */
          
if  ( ( $r_c_hosting['periodo']==) && ( $r_c_hosting['anual_enviado'] < $ano_hoy ) ) {
              
              
             if  (( 
$ano_hoy == ( $r_c_hosting['anual_enviado'] + ) ) && ( $mes_hoy == $r_c_hosting['ingreso_mes'] ) && ( $hoy == $r_c_hosting['ingreso_dia'] ) )   {
             
             
$asunto$r_c_hosting['dominio']." Recordatorio de orden de pago.";
              
$mensaje"Estimado ".$r_c_hosting['usuario']. "  (".$r_c_hosting['dominio']."): 

Este es un mensaje para informarle que a la fecha no hemos registrado el pago 
de la cuota por el servicio de Hosting del dominio "
.$r_c_hosting['dominio']." correspondiente al año de ".$ano_hoy.".
Por favor una vez realizado el pago enviar mail a [email protected]

El pago se efectúa mediante deposito bancario a la siguiente cuenta:

BANCO CITIBANK 

N° cuenta:  0-00000000-000
CBU :       00000000-0 0000000000000-0
CUIL:       00-00000000-0 

IMPORTE: $ "
.$r_c_hosting['importe']."   (pesos argentinos)





Por favor, no dude en contactarnos por cualquier consulta sobre nuestro servicio.

Muchas gracias

Diseño y desarrollo web http://www.MiDominio.com"
;




              
$mail_destinatario $r_c_hosting['mail'];
              
$headers .= "From: [email protected]";
              
mail($mail_destinatario$asunto$mensaje$headers );
              
              
## actualizamos el campo de la tabla "anual_enviado" para no volver a enviar el mail.
              ## en el  campo "anual_enviado" se guarda el año ya pagado por el cliente, supongamos que está guardado 2009
              ## y estamos en en 2010 , se ejecuta el script y se manda el mail, luego se actualiza ese campo con 2010, entonces hasta que 
              ## no llegue el año 2011 no se enviará el mail.
              
$c_mail_anual_enviado=mysql_query("update hosting set  anual_enviado='$ano_hoy' where id='".$r_c_hosting['id']."' ",$conexion);
              
              }

              
          }
          
          
          
          
#############################################

}
?>
__________________
la la la

Última edición por truman_truman; 05/08/2010 a las 13:07 Razón: correccion
  #4 (permalink)  
Antiguo 05/08/2010, 13:06
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.339
Antigüedad: 10 años
Puntos: 177
Respuesta: Gestion de Hosting - Básico - APORTE

BASE DE DATOS

--
-- Estructura de tabla para la tabla `hosting`
--

CREATE TABLE IF NOT EXISTS `hosting` (
`id` int(11) NOT NULL auto_increment,
`usuario` text NOT NULL,
`dominio` text NOT NULL,
`ingreso_dia` int(11) NOT NULL,
`ingreso_mes` int(11) NOT NULL,
`ingreso_ano` int(11) NOT NULL,
`mail` text NOT NULL,
`observaciones` text NOT NULL,
`importe` varchar(50) NOT NULL,
`periodo` int(11) NOT NULL,
`anual_enviado` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;

--
-- Volcar la base de datos para la tabla `hosting`
--

INSERT INTO `hosting` (`id`, `usuario`, `dominio`, `ingreso_dia`, `ingreso_mes`, `ingreso_ano`, `mail`, `observaciones`, `importe`, `periodo`, `anual_enviado`) VALUES
(11, 'Juan Perz', 'ejemploUNO.com', 5, 8, 2010, '[email protected]', 'Pagina de productos alimenticios, paga por mes', '25', 1, 2010),
(12, 'Roberto Gomez', 'ejemploDOS.com', 5, 8, 2009, '[email protected]', 'Paga anualmente', '50', 2, 2010);
__________________
la la la

Última edición por truman_truman; 05/08/2010 a las 13:08 Razón: correccion
  #5 (permalink)  
Antiguo 07/08/2010, 09:17
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.339
Antigüedad: 10 años
Puntos: 177
Respuesta: Gestion de Hosting - Básico - APORTE

saludos
Gracias
__________________
la la la

Última edición por truman_truman; 06/12/2011 a las 23:43

Etiquetas: gestion, hosting, aportes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:04.