rusox escribió:
Alguien sabe como se hace un cgi en perl u otro para una pagina wap, asi se puede enviar mensajes a email desde el celu..AYUDA...Gracias...
El sistema es el mismo que para HTML. La diferencia son las marcas que vas a utilizar para wap, que has de usar WML.
Cuando el celular se rellenen los campos y el usuario pulse el botón de enviar, se ejecutará el cgi, de la misma manera que si fuera una página web con un formulario.
El cgi debe leer los parámetros enviados, enviar el correo electrónico y crear una página de respuesta.
Depende de la forma que tengas para enviar el correo en el servidor, podrás utilizar Mail::Simple o Mail::Send.
Yo me hice un cgi wap hace años, para sacar la cartelera de cine de mi ciudad. Algunas partes importantes son:
Código:
#!/usr/bin/perl
$|=1; # No buffer de salida
use CGI;
$query=new CGI; # Leemos los parámetros
# enviados por el usuario
($arg= $query->param("arg")) =~ s/\0//go;
($cual= $query->param("cual")) =~ s/\0//go;
%salas = ();
# (Aqui se leía la cartelera y se prepara la salida en formato wml)
# Si el usuario había pulsado una opción, respondemos según
if ($arg eq "cines") {
print "Content-type: text/vnd.wap.wml\n\n";
print <<'EOD1';
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml1_1.1.xml">
<wml>
<card id="cines" title="Cines de Pucela">
<do type="accept" label="Ver Peliculas">
<go href="/cgi-bin/cines.pl?arg=pelis&cual=$(cine)"/>
</do>
<p><select name="cine" title="Cine:">
EOD1
$i=0;
foreach $cine (sort keys %salas) {
$i++;
print "<option value="$i">$cine</option>\n";
}
print <<'EOD2';
</select></p>
<p><a href="/cgi-bin/cines.pl?arg=pelis&cual=$(cine)">Ver Peliculas</a></p>
<p><a href="/index.wml">Atras</a></p>
</card>
</wml>
EOD2
}
if ($arg eq "pelis") {
print "Content-type: text/vnd.wap.wml\n\n";
print <<'EOD3';
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml1_1.1.xml">
<wml>
<card id="pelis" title="Peliculas en Pucela">
<do type="prev" label="Ver Cines">
<prev/>
</do>
EOD3
# <go href="/cgi-bin/cines.pl?arg=cines"/>
$i=0;
foreach $cine (sort keys %salas) {
$i++;
if ($i == $cual) {
print "<p>Peliculas de la sala<br/>$cine<br/>\n";
print "<select iname="peli" title="Proyecciones:">\n";
foreach $peli (@{$salas{$cine}}) {
print "<option>$peli</option>\n";
}
print "<\/select><\/p>\n";
last;
}
}
print <<'EOD4';
</card>
</wml>
EOD4
}
exit;
Ves que es muy sencillo, ya que el contenido de las páginas wml está incluído en el própio código, y para que el celular lo reconozca como wml, las cabeceras http han de ser:
Código:
Content-type: text/vnd.wap.wml
Cuidado con los acentos y comillas. Con que se se escape uno mal puesto, el celular no sacará nada.