2006-07-11 14:09 @631 |
|
|
paniks
Perlero Nuevo
|
Registrado: 2006-07-11 13:50 @618 Mensajes: 9
|
|
|
Cambiar un CGI de Linux para Windows
|
|
Tengo que decir que hasta hoy nunca habia tratado con un script CGI. No llego ni a novato. Tengo una web en un servidor Windows. Quería probar un pequeño catálogo que encontré por internet, hecho en flash y asociado al archivo "orderform.cgi". He consultado a mi servidor y me ha dicho que este CGI es para Linux y que no funcionará bajo Windows. Mi pregunta es, ¿cómo puedo "traducirlo" para que funcione en mi servidor? (si es que eso fuera posible). He buscado en el foro y en otros sites y no he encontrado nada parecio o no me he "enterado".
Probalemente a más de uno le de la risa al leer esta pregunta...
Gracias
|
2006-07-11 14:50 @660 |
|
|
paniks
Perlero Nuevo
|
Registrado: 2006-07-11 13:50 @618 Mensajes: 9
|
|
|
|
Pues no es este "orderform". Aqui esta: Código: #!/usr/bin/perl
####Most likely you will not have to change the above line. Check with host for path to Perl.
$SENDMAIL = '/usr/sbin/sendmail'; ####Path to sendmail (try this but yours may be different, check with your host) $to = 'you@yourdomain.com'; ####Target email address for orders $subject = 'MERCHANT ORDER'; ####E-MAIL subject
print "Content-type: text/html\n\n"; &get_date; %FORM; &get_arg; &send_email; print "&error=sent the email successfully"; exit();
sub get_date { @days = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); @months = ('Janurary','February','March','April','May','June','July','August','September','October','November','December'); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); if ($hour < 10) { $hour = "0$hour"; } if ($min < 10) { $min = "0$min"; } if ($sec < 10) { $sec = "0$sec"; } if ($year < 10) { $year = "0$year"; } if ($year < 90) { $cent = "20"; } else { $cent = "19"; } $date = "$days[$wday], $months[$mon] $mday, $cent$year at $hour\:$min\:$sec"; }
sub get_arg{ if ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $buffer); }else { print "error=wrong method"; exit; } foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/<!--(.|\n)*-->//g; $FORM{$name} = $value; } }
############### Order format below ... You may want to customize.
sub send_email{ $from_name=($FORM{'name'} . " <" . $FORM{'email'} . "> "); open(MAIL,"|$SENDMAIL -t") || die "error=Can't open $mailprog!\n"; print MAIL "To: $to\r\n"; print MAIL "From: $from_name\r\n"; print MAIL "Reply-To: $from_name\r\n"; print MAIL "Subject: $subject\r\n\n"; print MAIL "---------------------------------------------------------------\n\n"; print MAIL " ORDER SUBMITTED BY: \n"; print MAIL " $FORM{'name'} on $date\n\n"; print MAIL "---------------------------------------------------------------\n"; print MAIL "MERCHANDISE ORDER\n"; print MAIL "---------------------------------------------------------------\n\n"; print MAIL " $FORM{'comments'}\n\n"; print MAIL "---------------------------------------------------------------\n"; print MAIL "CARD INFORMATION\n"; print MAIL "---------------------------------------------------------------\n"; print MAIL "TYPE : $FORM{'cardtype'}\n"; print MAIL "NAME ON CARD : $FORM{'cardname'}\n"; print MAIL "CARD NUMBER : $FORM{'cardnum'}\n"; print MAIL "CARD EXPIRATION : $FORM{'cardexp'}\n\n"; print MAIL "---------------------------------------------------------------\n"; print MAIL "BILLING INFO\n"; print MAIL "---------------------------------------------------------------\n"; print MAIL "FIRST NAME : $FORM{'bfirstname'}\n"; print MAIL "LAST NAME : $FORM{'blastname'}\n"; print MAIL "EMAIL : $FORM{'bemail'}\n"; print MAIL "ADDRESS : $FORM{'baddress'}\n"; print MAIL "CITY : $FORM{'bcity'}\n"; print MAIL "STATE : $FORM{'bstate'}\n"; print MAIL "ZIP : $FORM{'bzip'}\n"; print MAIL "PHONE : $FORM{'bphone'}\n"; print MAIL "COMMENTS : $FORM{'bcomments'}\n\n"; print MAIL "---------------------------------------------------------------\n"; print MAIL "SHIPPING INFO\n"; print MAIL "---------------------------------------------------------------\n"; print MAIL "NAME : $FORM{'sname'}\n"; print MAIL "ADDRESS : $FORM{'saddress'}\n"; print MAIL "CITY : $FORM{'scity'}\n"; print MAIL "STATE : $FORM{'sstate'}\n"; print MAIL "ZIP : $FORM{'szip'}\n\n"; print MAIL "---------------------------------------------------------------\n\n"; print MAIL "<REMOTE HOST> $ENV{'REMOTE_HOST'}\n"; print MAIL "<REMOTE ADDRESS> $ENV{'REMOTE_ADDR'}\n"; print MAIL "<USER AGENT> $ENV{'HTTP_USER_AGENT'}\r\n"; close(MAIL); }
|
2006-07-11 14:59 @666 |
|
|
paniks
Perlero Nuevo
|
Registrado: 2006-07-11 13:50 @618 Mensajes: 9
|
|
|
|
|
Talvez tenga que preuntar al servidor que alternativa tengo a sendmail...?
|
2006-07-11 15:20 @680 |
|
|
paniks
Perlero Nuevo
|
Registrado: 2006-07-11 13:50 @618 Mensajes: 9
|
|
|
|
Siguiendo un link de vuestra seccion herramientas he encontrado ente enlace: http://www.microsoft.com/technet/archiv ... x?mfr=trueAqui hay un ejemplo de una alternativa a sendmail: <? $message = new COM("CDO.Message"); $message->To = 'receiver@somplace.com'; $message->From = 'Sender@MyCompany.com'; $message->Subject = "This is a subject line"; $message->HTMLBody = "<html><body>This is <b>the</b> body!</body></html>"; $message->AddAttachment('http://www.ActiveState.com'); $message->Send(); ?> Intentare ver como puedo adaptar este ejemplo al "orderfom.cgi"...
|
2006-07-11 16:22 @724 |
|
|
paniks
Perlero Nuevo
|
Registrado: 2006-07-11 13:50 @618 Mensajes: 9
|
|
|
|
|
creo que por hoy voy a dejarlo... Mañana sera otro dia, y les consultare al servidor si pueden instalarme el modulo que has comentado Mail::Sendmail.
muchas gracias por echarme una mano
Hasta mañana
|
2006-07-11 16:47 @741 |
|
|
 |
explorer
Administrador
|
Registrado: 2005-07-24 18:12 @800 Ubicación: Valladolid, España Mensajes: 10216
|
|
|
|
Lo he reducido a estas 100 líneas y me funciona... Código: #!/usr/bin/perl use CGI qw':standard :cgi-lib'; use POSIX 'strftime'; use Mail::Sendmail; use strict;
#### Configuracion my $to = 'destinatario@tudominio.net'; #### Destinatario del correo my $subject = 'MERCHANT ORDER'; #### E-MAIL asunto my $smtp = 'correo.tudominio.net'; #### Servidor de correo #### Fin configuracion
#### Inicializacion my %FORM; $FORM{$_} = '' foreach qw( name email comments cardtype cardname cardnum cardexp bfirstname blastname bemail baddress bcity bstate bzip bphone bcomments sname saddress scity sstate szip );
#### Programa print header('header/html'); #### Cabecera if ( $ENV{'REQUEST_METHOD'} ne 'POST' ) { print "error=wrong method"; exit; }
#### Leer los parámetros pasados por el cliente %FORM = Vars();
#### Componer el mensaje my $date = strftime "%a, %B %e, %Y a las %H:%M:%S", localtime; my $mensaje = <<"MENSAJE"; --------------------------------------------------------------- ORDER SUBMITTED BY: $FORM{name} on $date ---------------------------------------------------------------
MERCHANDISE ORDER ---------------------------------------------------------------
$FORM{comments}
--------------------------------------------------------------- CARD INFORMATION --------------------------------------------------------------- TYPE : $FORM{cardtype} NAME ON CARD : $FORM{cardname} CARD NUMBER : $FORM{cardnum} CARD EXPIRATION : $FORM{cardexp}
--------------------------------------------------------------- BILLING INFO --------------------------------------------------------------- FIRST NAME : $FORM{bfirstname} LAST NAME : $FORM{blastname} EMAIL : $FORM{bemail} ADDRESS : $FORM{baddress} CITY : $FORM{bcity} STATE : $FORM{bstate} ZIP : $FORM{bzip} PHONE : $FORM{bphone} COMMENTS : $FORM{bcomments}
--------------------------------------------------------------- SHIPPING INFO --------------------------------------------------------------- NAME : $FORM{sname} ADDRESS : $FORM{saddress} CITY : $FORM{scity} STATE : $FORM{sstate} ZIP : $FORM{szip}
---------------------------------------------------------------
<REMOTE HOST> $ENV{REMOTE_HOST} <REMOTE ADDRESS> $ENV{REMOTE_ADDR} <USER AGENT> $ENV{HTTP_USER_AGENT} MENSAJE
#### Enviar el correo my $from_name = "$FORM{name} <$FORM{email}>"; my %mail = ( smtp => $smtp, From => $from_name, 'Reply-To' => $from_name, To => $to, Subject => $subject, Message => $mensaje, ); sendmail(%mail) or die $Mail::Sendmail::error;
#### Fin print '&error=sent the email successfully'; exit; El único problema para ti es que instalen el Mail::Sendmail, porque los otros dos, CGI y POSIX pertenecen al nucleo de Perl.
|
2006-07-12 16:03 @710 |
|
|
paniks
Perlero Nuevo
|
Registrado: 2006-07-11 13:50 @618 Mensajes: 9
|
|
|
|
|
Esta mañana me he encontrado con este script modificado ( gracias "explorer" por tu tiempo ), lo he mandado al sevidor junto com la peticion de instalacion del modulo que me recomendaste. La respuesta del servidor ha sido que no funcionaria ya que utilizaba Sendmail, les he contestado que creia que no era lo mismo Sendmail que mail::Sendmail i que si podian aclararme el asunto. De momento sigo esperando respuesta.
|
2006-07-12 16:50 @743 |
|
|
paniks
Perlero Nuevo
|
Registrado: 2006-07-11 13:50 @618 Mensajes: 9
|
|
|
|
|
Eso es lo que hare.
nos vemos....
|
2006-07-13 04:25 @226 |
|
|
paniks
Perlero Nuevo
|
Registrado: 2006-07-11 13:50 @618 Mensajes: 9
|
|
|
|
|
La respuesta definitiva que me han dado desde el servidor es que el unico modulo que tienen instalado es el AspMail.
Intentare pasar las variables con asp, a ver si lo consigo...
Gracias de nuevo
|
| Reglas del Foro |
No puedes abrir nuevos temas en este Foro No puedes responder a temas en este Foro No puedes editar tus mensajes en este Foro No puedes borrar tus mensajes en este Foro No puedes enviar adjuntos en este Foro
|
|
Socializa |
 |
|