#!/usr/bin/perl use CGI qw/:standard/; use CGI::Carp qw(fatalsToBrowser); use DBI; use strict; use vars qw (%FORM $dbh %cache_template %PARAM); %PARAM = ( mailprog => '/usr/sbin/sendmail', mailprogparams => "-oi", sender => 'www@hobbypromoclub.com', to => 'consultas@hobbypromoclub.com', from => 'noresponda@hobbypromoclub.com', ); Parse(); Conectarse(); $| ++; Inicio(); sub Inicio { my $error; my $buscar_tag = "msg"; if ($FORM{proc} == 1) { $FORM{tarjeta} = uc($FORM{tarjeta}); ### verificar si la tarjeta es válida ### y si está libre my $tarjeta = Trim($FORM{tarjeta}); $tarjeta =~ s/\'/\\\'/g; my $ocupada = ExecQueryUnRow(" select count(*) from clientes where tarjeta = '$tarjeta' and fecha_registro is not null and t1 <> '' "); my $existe = ExecQueryUnRow(" select count(*) from clientes where tarjeta = '$tarjeta' "); my $activa = ExecQueryUnRow(" select activa from clientes where tarjeta = '$tarjeta' "); if ($activa eq 'N') { $error = "La tarjeta se encuentra desactivada, contactese con su vendedor"; } if (!$existe) { $error = "El número de serie ingresado no es válido"; } if ($ocupada) { $error = "La tarjeta ya fue registrada"; } if (!$error) { RegistrarTarjeta(); } else { $buscar_tag = ""; } } my @exportar = qw (tarjeta nombre email telefono direccion cp localidad); my $templatefile = "template_registro_hersan.htm"; my %namespace = ( ERROR => $error, ); Template($templatefile,\%namespace,\@exportar,$buscar_tag); exit; } sub RegistrarTarjeta { my $buscar_tag; my $now = time(); my $clave; my @random = ("A"..."Z"); for (my $i=0;$i < 4;$i++) { my $rand2 = (int(rand(27)) + 1); $clave .= $random[$rand2]; } my @campos = qw (tarjeta nombre email telefono direccion cp localidad); my $tarjeta = uc($FORM{tarjeta}); my $from = qq~$FORM{nombre} <$FORM{email}>~; my $datos = \%FORM; foreach (@campos) { $FORM{$_} = Trim($FORM{$_}); $FORM{$_} =~ s/\'/\\\'/g; } $FORM{suscripcion} = 'N' if (!$FORM{suscripcion}); my $q = qq~update clientes set nombre = '$FORM{nombre}', clave = '$clave', direccion = '$FORM{direccion}', cp = '$FORM{cp}', localidad = '$FORM{localidad}', telefono = '$FORM{telefono}', email = '$FORM{email}', nifocif = '$FORM{suscripcion}', t1 = '$now', fecha_registro = now() where tarjeta = '$tarjeta' ~; ExecQuery($q); ### enviar el mensaje al cliente y al administrador EnviarMailAdmin($tarjeta,$from,$clave); EnviarMailCliente($tarjeta,$datos,$clave); ### salir a la plantilla my @exportar = qw (tarjeta nombre email telefono direccion cp localidad); foreach (@exportar) { $FORM{$_} = $datos->{$_}; } my $templatefile = "template_registro_listo_hersan.htm"; my %namespace = ( TARJETA => $tarjeta, CLAVE => $clave, ); Template($templatefile,\%namespace,\@exportar,$buscar_tag); exit; } sub EnviarMailCliente { my $tarjeta = shift; my $datos = shift; my $clave = shift; my $subject = "Nuevo Registro Tarjeta $tarjeta"; open (MAIL,"|$PARAM{mailprog} $PARAM{mailprogparams} -t -f $PARAM{sender}"); print MAIL "To: $datos->{email}\n"; print MAIL "From: HobbyPromoClub <$PARAM{from}>\n"; print MAIL "Subject: $subject\n"; print MAIL 'Content-Type: text/plain; charset=iso-8859-1\n\n'; print MAIL qq~Gracias por Registrarse a HOBBY PROMO CLUB. Recuerde visitar nuestro sitio Web quincenalmente Datos ingresados: Nombre: $datos->{nombre} N. de Tarjeta: $tarjeta Clave de Ingreso: $clave Email: $datos->{email} Teléfono: $datos->{telefono} Dirección: $datos->{direccion} Código Postal: $datos->{cp} Población: $datos->{localidad} Recuerde que puede cambiar estos datos en el Área de Clientes. ingresando a http://www.hobbypromoclub.com/ ~; close MAIL; } sub EnviarMailAdmin { my $tarjeta = shift; my $from = shift; my $clave = shift; my $subject = "(Hersan) Nuevo Registro Tarjeta HobbyPromoclub $tarjeta"; open (MAIL,"|$PARAM{mailprog} $PARAM{mailprogparams} -t -f $PARAM{sender}"); print MAIL "To: $PARAM{to}\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-Type: text/plain; charset=iso-8859-1\n\n"; print MAIL "Aviso de registro de tarjeta\n"; print MAIL "se le asignó la clave $clave\n"; close MAIL; } sub ExecQuery { my ($q) = @_; my $sth = $dbh->prepare($q) || die SqlError("$!
$DBI::errstr
$q"); $sth->execute() || die SqlError("$!
$DBI::errstr
$q"); $sth->finish; } sub ExecQueryUnRow { my ($q,$columna) = @_; my $h = $dbh->prepare($q) || die SqlError("$!
$DBI::errstr
$q"); $h->execute() || die SqlError("$!
$DBI::errstr
$q"); my %r; my @devolver; my $unica; my @c = @{ $h->{NAME_lc} }; $h->bind_columns( \( @r{ @{$h->{NAME_lc} } } )); $h->fetch; $h->finish; if ($columna) { return $r{"$columna"}; } for (my $n = 0; $n < $h->{NUM_OF_FIELDS}; $n++) { $unica = $r{$c[$n]}; push (@devolver, $r{$c[$n]}); } my $cant_elem = @devolver; if ($cant_elem > 1) { return @devolver; } else { return $unica; } } sub Template { my ($templatefile,$r_namespace,$export,$reemplazar) = @_; my ($template,$solapas,$id_raiz,$opciones); if (!open(TEMPLATE,"$templatefile")) { print "Content-type: text/html\n\n"; print qq~No puedo abrir la plantilla $templatefile
$!
~; exit; } else { { local($/) = undef; $template =