Foros del Web » Programación para mayores de 30 ;) » Programación General »

Ayuda con formulario

Estas en el tema de Ayuda con formulario en el foro de Programación General en Foros del Web. Le he pedido al administrador que me instale este módulo pero me ha contestado que no es posible instalar aplicaciones a nivel de servidor ya ...

  #31 (permalink)  
Antiguo 01/04/2005, 02:54
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 11 meses
Puntos: 0
Modulo CGI.PM

Le he pedido al administrador que me instale este módulo pero me ha contestado que no es posible instalar aplicaciones a nivel de servidor ya que afectarian a todos los usuarios. ¿es esto posible?, porque no me entra en la cabeza que no sean capaces de instalar este módulo. ¿de que sirve entonces contratar el hosting en un servidor de Perl si no voy a disponer de todas sus funcionalidades? lo comprenderia si fuese un servidor gratuito, pero no es es caso.
De todas formas, si esto es así, ¿significa que tendré que implementar el script en todas mis CGI´s?
  #32 (permalink)  
Antiguo 01/04/2005, 05:59
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 23 años
Puntos: 90
Empecemos definiendo todo porque tu última pregunta no tiene sentido...

CGI: Common Getway Interface: Interface de pasarela común: Forma de trabajar de algunos lenguajes en la cual varios usuarios pueden ejecutar el mismo programa al mismo tiempo independientemente uno de otros...

Script: Mini programa que tiene alguna funcionalidad: carrito de compla, foro, chat, libro de visitas....)

PERL: lenguaje con el cual se pueden programar scripts CGI.

Módulo: Librería que se instala en el intérprete para aumentar la funcionalidad del mismo y tener funciones PRE programadas, para que el programador que programe el script no tenga que volver a programar cosas tediosas como hacer la entrada de datos, manejar cookies, etc.

SOLUCIONES:
1) Deciles a los de tu server que el intérprete de perl ya trae varios módulos, que esto no es algo que programaste vos, sino que lo instalen directamente desde el CPAN !!! que es el organismoi oficial en todo esto

2) Cambiar de Servidor

3) Realizar la entrada de datos manualmente con esa función fea que toma el string y lo divide y esas cosas que no te gustan...

Espero que te sirva

Saludos
PD: La idea es que tengas esa funcionalidad ya instalada en el intérprete para que no tengas que volver a programarlo vos, sino que ya lo puedas usar desde cualquier script que hagas...Solo con llamar a el módulo.
__________________
Esteban Quintana
  #33 (permalink)  
Antiguo 06/04/2005, 00:05
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 11 meses
Puntos: 0
Moduo CGI.PM

Nada tio...está claro que los de soporte de mi servidor me odian. Les pedí que instalasen eso tal y como me dijiste y me responden lo siguiente:
CGI esta instalado a nivel del servidor, es decir afecta a todos los dominio
alojados en la maquina, cualqueir cambio en su configuración afectaria a los
scripts instalados por los demás clientes.

Lamentablemnte no es posible restringir la aplicación para un solo dominio y asi
utilizar usted sus ventajas.

Anda que si llego a saber esto al principio iba a contratar este dominio.... Por si te interesa saber cual es para NO contratarlo nunca es Evidalia.com.
Voy a intentar hacerlo implementando el script en cada CGI, pero me parece un poco chapuza, además ya lo he probado alguna vez y tampoco me ha funcionado...
Grascias por todo, si tengo alguna duda mas ya se donde acudir....
  #34 (permalink)  
Antiguo 07/04/2005, 02:48
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 11 meses
Puntos: 0
Un último intento....

Hola, queria comentar que aún no me he dado por vencido...soy muy cabezón y me he puesto a realizar pruebas empezando de 0. Te comento los resultados por si se te ocurre a ti algo, Te explico.
Para empezar hice una pagina html similar a la tipica "hola mundo" y la llamé desde la pagina CGI donde tengo formulario (el de usuario y contraseña), y cual fué mi sorpresa cuando al pulsar submit me mostró el "Hola Mundo" (fué sorpresa el que algo funcionase...)
Lo siguiente que hice fué convertir esta página html en una cgi. Le coloqué la cabecera, le cambie el nombre y la guarde en la carpeta cgi-bin. Hice otra prueba y...coñó! tambien funciona. Entonces ya me envalentoné y decidí colocar tambien las siguientes lineas al principio del documento:
use strict;
use CGI;
my $cgi = new CGI;
my %input_data = $cgi->Vars;

Aqui ya me asalta la duda, porque la página seguia funcionando, lo cual no me cuadra, se supone que el servidor no tiene instalado el módulo CGI.PM, con lo que al escribir estas lineas deberia darme error ¿o no?
En cualquier caso y tomando como válido que esté instalado el módulo (a pesar de lo que diga el administrador...) yo continué con mis pruebas.
Lo siguiente que añadí fue la linea :
$nombre=$input_data('usuario');
Y aquí fué donde me dió el error, además el mismo error de siempre.
He probado reescribir esta linea de mil formas diferentes, con " en vez de ', con {} en vez de ()....pero siempre da el mismo error.
¿se te ocurre a ti por qué puede dar este error? Y otra cosa, ¿es posible que no me de error al escribir "use CGI..." anque no esté instalado el módulo o resulta que al final va a ser que si está instalado?'
  #35 (permalink)  
Antiguo 07/04/2005, 05:41
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 23 años
Puntos: 90
Primero que nada $nombre=$input_data('usuario'); debería ser $nombre=$input_data{'usuario'};

Ahora bien...Veamos probaste algo así...

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hola mundo";
exit;

Y funcionó...?

Intentaste
#!/usr/bin/perl
use strict;
use CGI;
my $cgi = new CGI;
my %input_data = $cgi->Vars;
print "Content-type: text/html\n\n";
print "Hola mundo";
exit;

Y funcionó...?

Pero cuando metiste el
$nombre=$input_data{'usuario'};

Ya te saltó el error ????

Pues eso no puede ser !!!!!!!

A ver, Intentá esto

#!/usr/bin/perl
use strict;
use CGI ':standard';
$usuario = param('usuario');

print "Content-type: text/html\n\n";
print "Hola $usuario";
exit;

Decime si te funciona o no ?

Saludos
__________________
Esteban Quintana
  #36 (permalink)  
Antiguo 07/04/2005, 06:07
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 11 meses
Puntos: 0
....

OK, he probado con es script que me dijiste pero sigue dando el mismo error.
Tambien he mirado en la carpeta donde se almacenan los errores, en mi caso se llama error_docs. Pero en ella dice lo mismo que en el explorador:
Internal Server Error 500
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator to inform of the time the error occurred and of anything you might have done that may have caused the error.
More information about this error may be available in the server error log.


Ah, otra cosa, en las especificaciones del servidor me dicen que la cadena #!/usr/bin/perl debe ir terminada en -w, es decir #!/usr/bin/perl -w. No creo que esta sea la causa, de todas formas he probado sin la w y da igual...

No se ya que mas pruebas hacer...se seguro que el error me lo dá cuando introduzco la linea &input_data... Estoy pensando en comunicarselo al administrador, pero viendo lo participativo que se muestra....
¿se te ocurre algo mas que pueda probar???
  #37 (permalink)  
Antiguo 07/04/2005, 07:11
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 23 años
Puntos: 90
Hola, el -w es uno de los modos que tiene el intérprete de Perl para ser ejecutado...No le des mayor importancia, pero igual ponelo si te lo dicen...

El error te lo da cuando colocas &input_data ??? pero no tenés que colocar eso !!!!

si con

#!/usr/bin/perl
use strict;
use CGI ':standard';
$usuario = param('usuario');

print "Content-type: text/html\n\n";
print "Hola $usuario";
exit;

Te da error es que el módulo CGI está funcionando mal, al igual que con ese script

#!/usr/bin/perl
use strict;
use CGI ':standard';
my $cgi = new CGI;
my %input_data = $cgi->Vars;

print "Content-type: text/html\n\n";
print "Hola mundo";
exit;

Deberían de funcionar ambos !!!

Saludos
PD: Y si te cambias a un server más serio ? yo conozco varios muy baratos acá en Argentina...
__________________
Esteban Quintana
  #38 (permalink)  
Antiguo 07/04/2005, 07:22
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 11 meses
Puntos: 0
...

Ok, voy a quejarme energicamente a los administradores y ya veré lo que hago luego...
Tambien he pensado en lo del cambio de servidor...pero me jode perder así el dinero.
Bueno, ya te comentaré ¿ok? Oye y muchas gracias por todo.
Hasta pronto.
  #39 (permalink)  
Antiguo 12/04/2005, 00:25
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 11 meses
Puntos: 0
Módulo CGI.PM

Hola amigo...¿como va todo?, yo sigo peleandome con los administradores de mi servidor y tengo alguna novedad...
Tras darle mucho el follón conseguí que me enviasen parte del archivo log de mi dominio y en el he obserbado una linea que podria referirse al error este que me lleva loco. Lo que pasa es que no entiendo muy bien a que se refiere, a lo mejor tu tienes alguna idea al respecto....

[Fri Apr 08 10:53:37 2005] [error] [client 80.58.39.174] Global symbol "$nombre" requires explicit package name at pruebacgi.pl line 7., referer: http://www.alextroydjworld.com/cgi-bin/validar.cgi
[Fri Apr 08 10:53:37 2005] [error] [client 80.58.39.174] Execution of pruebacgi.pl aborted due to compilation errors., referer: http://www.alextroydjworld.com/cgi-bin/validar.cgi
[Fri Apr 08 10:53:37 2005] [error] [client 80.58.39.174] Premature end of script headers: pruebacgi.pl, referer: http://www.alextroydjworld.com/cgi-bin/validar.cgi

Estas son las últimas lineas del archivo, la que me llamo a mi la atención es la primera, la que hace referencia a "$nombre", Supongo que se referirá al error que dá cuando introduzco la linea $nombre=$input_data{'usuario'}; pero no entiendo lo que quiere decir lo de "explicit package". ¿se refiere a algún tipo de declaración previa de la variable??

En fin compañero...si tienes alguna idea de porqué puede ser esto no dudes en decirmelo, a ver si conseguimos hacer que esto funcione de una vez...
  #40 (permalink)  
Antiguo 12/04/2005, 01:54
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 11 meses
Puntos: 0
Modulo CGI.PM

Ya está!!! por fin, se acabo la pesadilla. ¿sabes lo que era??? Habia que escribirlo asi: my $nombre=$input_data{'usuario'}; No me preguntes por qué, espero que lo sepas tu porque lo que es yo....
En fin muchas gracias por todo, voy a ver si puedo avanzar por fin en el tema, si tengo alguna duda te consultaré (cosa que es casi segura...). Bueno lo dicho... nos vemos.
  #41 (permalink)  
Antiguo 12/04/2005, 05:54
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 23 años
Puntos: 90
Claro !!!!!!! que pedazo de |@#|@# que soy !!!!!!!

Cuando usas

use strict;

Te obliga a programar bien, o sea declarando las variables siempre con my, ya que es un error usar variables globales en los scripts...

Me alegro que hayas posido solucionarlo y disculpa ese pequeño detalle...Se me pasó...

Lo que si el error log es muy util para programar, te deberían dar acceso más fácilmente...

Saludos
__________________
Esteban Quintana
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 10:23.