Jump to content


Photo

Como Instalar Um Cgi Numa Pagina Criada No Dreamwe


  • Faça o login para participar
17 replies to this topic

#1 Jorge_cortez

Jorge_cortez

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Não informado

Posted 04/08/2004, 16:11

:) Pessoal , é a primeira vez que estou usando um CGI, por isto esta pergunta (para alguns deve ser idiota, mas ... fazer o que né).
O caso é o seguinte...
criei uma pagina na internet e o cliente pediu uma modificação... que fosse colocado um login na pagina inicial ...
se o usuario e senha estiver cadastro ok, ele entra.... senão preciso abrir um formulario para que o mesmo se cadastre e depois receba um e-mail confirmando o cadastro.
Após uma pesquisa me pareceu que com CGI é possivel fazer todo este trabalho ( ou parte dele) sem a utilização de banco de dados.
Baixei um programa de Login em CGI (login.cgi) porém não sei o que fazer com ele... como incluo ele numa pagina??? é preciso abrir ??? preciso ter o Perl na minha máquina??? enfim estou totalmente perdido.... HELP !!!!! :(

#2 Whitesnake

Whitesnake
  • Visitantes

Posted 04/08/2004, 18:40

Olá Jorge, fique tranquilo pois isso é normal.

Primeiramente, você deve checar se o servidor onde sua página está hospedada aceita uso de scripts em cgi. Se informe com o proprietário sobre isso e responda novamente! (y)

Abraços

#3 Jorge_cortez

Jorge_cortez

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Não informado

Posted 04/08/2004, 20:30

:o O provedor onde hospedo a pagina(BigHost) tem uma pasta própria para CGI ..

EDITADO

Desculpe, a minha resposta não foi clara... Sim ele aceita scrips CGI e tb banco de dados...

#4 Whitesnake

Whitesnake
  • Visitantes

Posted 05/08/2004, 00:04

Ok, me dê alguns dias que faço o sistema de login para você blz!

Quais informações o usuário deverá fornecer no cadastro?
Somente username?

Até +!

Ah sempre quando esquecer de alguma informação, use o botão editar! (y)

#5 Jorge_cortez

Jorge_cortez

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Não informado

Posted 06/08/2004, 17:29

ok, bem como eu disse o cliente pediu esse login na pagina inicial que se cadastrado será redirecionado para outra pagina, senão estiver cadastrado ele teria de abrir um formulário contendo nome e e-mail (pelo menos) para que pudessemos enviar a senha.
Não sei se isto é possivel fazer em CGI, de qualquer forma o que for possivel ja me ajuda.

Grato Stone (y)

Estou no aguardo Ate +

#6 Whitesnake

Whitesnake
  • Visitantes

Posted 08/08/2004, 00:28

Tah + você vai especificar uma senha ou será enviada ao usuário senhas randomizadas?

#7 Jorge_cortez

Jorge_cortez

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Não informado

Posted 08/08/2004, 00:36

Pra que o cliente tenha controle de quem vai acessar a pagina creio que seria melhor eu escolher a senha...
Pelo que entendendo se for pra enviar ao usuario senhas randomizadas o cliente não teria nenhum controle pois elas seriam enviadas automaticamente, certo ?
Se estou certo então é melhor o cliente escolher(é claro que vai sobrar pra eu montar esta senhas mas tudo bem ..) :rolleyes:

Valeu !!!!

#8 Whitesnake

Whitesnake
  • Visitantes

Posted 08/08/2004, 01:01

Ok mais ainda estou em dúvidas.

Uma senha será usada para todos os usuários ou uma senha será criada para cada usuário?

#9 Jorge_cortez

Jorge_cortez

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Não informado

Posted 08/08/2004, 20:59

uma senha pra cada usuario... (y)

#10 Whitesnake

Whitesnake
  • Visitantes

Posted 08/08/2004, 21:42

Cara mais veja bem, o cara vai lah prenche o form e se cadastra, ai você vai lah e escolhe a senha do usuário..... aí entra mais 20 caras e se cadastram, vc vai ter que bolar mais 20 senhas.

Seilah, se for isso mesmo q eu to pensando, eh loucura vc fazer isso cara.

#11 Jorge_cortez

Jorge_cortez

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Não informado

Posted 08/08/2004, 22:05

Concordo totalmente com voce... mas vou explicar o problema que tenho com este cliente... foi montado um site que tem paginas de dois tipos de negócios (com paginas diferentes) diferentes temporariamente estão em um unico site, mas no futuro será desmembrado, a idéia é que na página do negócio principal topdos entran e na pagina do negócio que se inicia só terá acesso à pagina, o usuário que estiver cadastrado, quem não estiver não poderá entrar...
Ja usei varios argumentos para mudar a idéia dele (falei que a internet é para divulgação do produto, etc...) até propus negociarmos um novo site, porém ele não consegue enxergar, então o jeito é fazer do jeito dele.
Acho que agora deu pra entender o porque desta coisa confusa, né...
O que ele quer é distribuir senhas para alguns clientes referente á pagina do novo produto, e é claro à medida que isto crescer ou ficar muito dificil o controle, ele acabará abrindo para todos, ou seja retirando o controle de login... (y)

#12 Jorge_cortez

Jorge_cortez

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Não informado

Posted 16/08/2004, 20:13

:( olá Stone, e aí alguma novidade, amigo ???

#13 Whitesnake

Whitesnake
  • Visitantes

Posted 17/08/2004, 17:17

Cara, eu já fiz o script, só estava esperando a liberação de meu servidor, para que eu possa testar o envio de emails. Mas visto que você tem pressa, aí vai o script prontinho. Lembrando que para acessar a página de administração você deverá incluir a querystring ?admin ao link do arquivo.

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

$usuarios="usuarios.txt";                # Arquivo de logs de usuários

$login="demo";                                # Login do administrador
$senha="demo";                            # Senha do administrador
$site    = "meusite@site.com";        # Email de seu Site
$assunto  = "Dados do cadastro"; # Assunto da mensagem à enviar aos usuários
$sendmail = "/usr/sbin/sendmail";  # Local do sendmail

$mensagem =qq| # Coloque abaixo a mensagem que  usuário cadastrado receberá em seu email. (HTML Ativado)

Olá usuário, você está recebendo este email porque se cadastrou no site $site.

Abaixo estão os dados de seu cadastro:

Nome: $CAMPO{nome}
Senha: <b><em>$CAMPO{senha}</em</b>

Atenciosamente,
$site
|;


$protegido=qq|

<!-- COLOQUE AQuI O CONTEÚDO PROTEGIDO DE SEU SITE //-->















<!-- COLOQUE AQuI O CONTEÚDO PROTEGIDO DE SEU SITE //-->

|;

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@conteudo = split(/&/, $buffer);
foreach $par (@conteudo) {
        ($campo, $valor) = split(/=/, $par);
        $valor =~ tr/+/ /;
        $valor =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $CAMPO{$campo} = $valor;
}

$qs = "$ENV{QUERY_STRING}";

if ($qs eq ""){
&index;
}

if ($qs eq "admin"){
print qq|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Acesso Restrito</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.texto {font-family:Sans-Serif;font-size:8pt}
INPUT {font-family:Sans-Serif;font-size:8pt; font-weight:bold}
A    {font-family:Sans-Serif;font-size:8pt; color:#888888; text-decoration:none}
A:hover{font-family:Sans-Serif;font-size:8pt; color:#333333; text-decoration:none}
</style>
</head>

<body>
<form name="form1" method="post" action="?logar">
  <table width="100%">
    <tr>
      <td bgcolor="#E8E8E8"><table width="100%" class="texto">
          <tr>
            <td bgcolor="#003333" colspan="2"><div align="center"><font color="#FFFFFF"><strong>Acesso
                Restrito</strong></font> </div></td>
          </tr>
          <tr>
            <td colspan="2">Se voc&ecirc; &eacute; o administrador, logue-se no
              campo abaixo</td>
          </tr>
          <tr>
            <td width="50%"><div align="right">Login:</div></td>
            <td width="50%"><input name="login" type="text" id="login" value=""></td>
          </tr>
          <tr>
            <td><div align="right">Senha:</div></td>
            <td><input name="senha" type="password" id="senha2" value=""></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td><input name="submit" type="submit" value="Entrar"></td>
          </tr>
        </table></td>
    </tr>
  </table>
  </form>
</body>
</html>
|;
}

if ($qs eq "cadastra"){
&cadastra;
}

if ($qs eq "cadastrar"){
&cadastrar;
}

if ($qs eq "edita"){
&edita;
}

if ($qs eq "logar"){
if ($CAMPO{login} eq "$login"){
if ($CAMPO{senha} eq "$senha"){
open(USUARIOS,$usuarios);
@usuarios = <USUARIOS>;
close(USUARIOS);

print qq|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Acesso Restrito</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.texto {font-family:Sans-Serif;font-size:8pt}
INPUT {font-family:Sans-Serif;font-size:8pt; font-weight:bold}
A    {font-family:Sans-Serif;font-size:8pt; color:#888888; text-decoration:none}
A:hover{font-family:Sans-Serif;font-size:8pt; color:#333333; text-decoration:none}
</style>
</head>

<body>
<form name="form1" method="post" action="?edita">
  <table width="100%">
    <tr>
      <td bgcolor="#E8E8E8"><table width="100%" class="texto">
          <tr>
            <td width="100%" bgcolor="#003333"><div align="center"><font color="#FFFFFF"><strong>Acesso
                Restrito</strong></font> </div></td>
          </tr>
          <tr>
            <td>Abaixo est&aacute; a lista de usu&aacute;rios cadastrados. Os
              dados est&atilde;o organizados como: NOME\|EMAIL\|SENHA\| <br>
              Consequentemente, voc&ecirc; pode adicionar senhas aos usu&aacute;rios
              que ainda n&atilde;o possuem na formata&ccedil;&atilde;o especificada
              acima: </td>
          </tr>
          <tr>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td><div align="center">
                <textarea name="usuarios" cols="100%" rows="10" id="usuarios">@usuarios</textarea>
              </div></td>
          </tr>
          <tr>
            <td><div align="center"> </div></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td height="17"><strong>ATEN&Ccedil;&Atilde;O</strong>: Se voc&ecirc; modificou/adicionou
              uma senha &agrave; um usu&aacute;rio, coloque o email do usu&aacute;rio
              para que ele seja informado: Caso contr&aacute;rio deixe o campo
              abaixo vazio</td>
          </tr>
          <tr>
            <td><div align="center">
                <input name="sendmail" type="text" id="sendmail" value="">
              </div></td>
          </tr>
          <tr>
            <td><div align="center"> </div></td>
          </tr>
          <tr>
            <td> <div align="center">
                <input name="submit2" type="submit" value="Modificar">
                &nbsp; </div></td>
          </tr>
        </table></td>
    </tr>
  </table>
  </form>
</body>
</html>
|;
}else{print qq|Senha errada!|;}
}else{print qq|Login errado!|;}
}

if ($qs eq "verifica"){
&verifica;
}

sub cadastra{
print qq|

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Cadastro</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.texto {font-family:Sans-Serif;font-size:8pt}
INPUT {font-family:Sans-Serif;font-size:8pt; font-weight:bold}
A    {font-family:Sans-Serif;font-size:8pt; color:#888888; text-decoration:none}
A:hover{font-family:Sans-Serif;font-size:8pt; color:#333333; text-decoration:none}
</style>
</head>

<body>
<form name="form1" method="post" action="?cadastrar">
  <table width="100%">
    <tr>
      <td bgcolor="#E8E8E8"><table width="100%" class="texto">
          <tr>
            <td bgcolor="#003333" colspan="2"><div align="center"><font color="#FFFFFF"><strong>Cadastro</strong></font></div></td>
          </tr>
          <tr>
            <td colspan="2">Complete os campos abaixo e clique em cadastrar.</td>
          </tr>
          <tr>
            <td width="50%"><div align="right">Nome:</div></td>
            <td width="50%"><input name="nome" type="text" id="login2" value=""></td>
          </tr>
          <tr>
            <td><div align="right">E-mail:</div></td>
            <td><input name="email" type="text" id="email" value=""></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td><input name="submit" type="submit" value="Cadastrar"></td>
          </tr>
        </table></td>
    </tr>
  </table>
  </form>
</body>
</html>

|;}

sub cadastrar{
$a="0";
open(USUARIOS,$usuarios);
@usuarios = <USUARIOS>;
close(USUARIOS);

foreach (@usuarios){
chomp;
($nome,$email,$senha) = split(/\|/);
$nome =~ s/Nome://;
$email =~ s/Email://;
$senha =~ s/Senha://;

if ($nome eq "$CAMPO{nome}"){
$a = "1";
}else{}}

if ($a eq "1"){
print qq|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Cadastro</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.texto {font-family:Sans-Serif;font-size:8pt}
INPUT {font-family:Sans-Serif;font-size:8pt; font-weight:bold}
A    {font-family:Sans-Serif;font-size:8pt; color:#888888; text-decoration:none}
A:hover{font-family:Sans-Serif;font-size:8pt; color:#333333; text-decoration:none}
</style>
</head>

<body>
<form name="form1" method="post" action="?cadastrar">
  <table width="100%">
    <tr>
      <td bgcolor="#E8E8E8"><table width="100%" class="texto">
          <tr>
            <td width="100%" bgcolor="#003333"><div align="center"><font color="#FFFFFF"><strong>Cadastro</strong></font></div></td>
          </tr>
          <tr>
            <td>Este usu&aacute;rio j&aacute; existe, volte e tente novamente.
            </td>
          </tr>
          <tr>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td><input name="Voltar" type="button" id="Voltar" value="Voltar" onClick="self.location.href('java script:history.back()')"></td>
          </tr>
        </table></td>
    </tr>
  </table>
  </form>
</body>
</html>
|;
}else{
print qq|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Cadastro</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.texto {font-family:Sans-Serif;font-size:8pt}
INPUT {font-family:Sans-Serif;font-size:8pt; font-weight:bold}
A    {font-family:Sans-Serif;font-size:8pt; color:#888888; text-decoration:none}
A:hover{font-family:Sans-Serif;font-size:8pt; color:#333333; text-decoration:none}
</style>
</head>

<body>
<form name="form1" method="post" action="?cadastrar">
  <table width="100%">
    <tr>
      <td bgcolor="#E8E8E8"><table width="100%" class="texto">
          <tr>
            <td width="100%" bgcolor="#003333"><div align="center"><font color="#FFFFFF"><strong>Cadastro</strong></font></div></td>
          </tr>
          <tr>
            <td>Parab&eacute;ns $CAMPO{nome}, voc&ecirc; foi cadastrado com sucesso.<br>
              Após a liberação de seu cadastro você receberá um email contendo o login e a senha.</td>
          </tr>
        </table></td>
    </tr>
  </table>
  </form>
</body>
</html>
|;
&grava;
}}

sub edita{
open(USUARIOS,">$usuarios");
print USUARIOS $CAMPO{usuarios};
close(USUARIOS);

open(USUARIOS,"$usuarios");
@usuarios = <USUARIOS>;
close(USUARIOS);

open(SENDMAIL,"|$sendmail -t");
print SENDMAIL qq|
To:$CAMPO{sendmail}
From:$site
Subject:$assunto
Content-type:text/html


$mensagem|;
close(SENDMAIL);


print qq|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Acesso Restrito</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.texto {font-family:Sans-Serif;font-size:8pt}
INPUT {font-family:Sans-Serif;font-size:8pt; font-weight:bold}
A    {font-family:Sans-Serif;font-size:8pt; color:#888888; text-decoration:none}
A:hover{font-family:Sans-Serif;font-size:8pt; color:#333333; text-decoration:none}
</style>
</head>

<body>
<form name="form1" method="post" action="?edita">
  <table width="100%">
    <tr>
      <td bgcolor="#E8E8E8"><table width="100%" class="texto">
          <tr>
            <td width="100%" bgcolor="#003333"><div align="center"><font color="#FFFFFF"><strong>Acesso
                Restrito</strong></font> </div></td>
          </tr>
          <tr>
            <td>Os dados foram editados com sucesso, veja como ficou sua lista de usuários: </td>
          </tr>
          <tr>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td><div align="center">
                <textarea name="usuarios" cols="100%" rows="10" id="usuarios">@usuarios</textarea>
              </div></td>
          </tr>
          <tr>
            <td><div align="center"> </div></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td height="17"><strong>ATEN&Ccedil;&Atilde;O</strong>: Se voc&ecirc; modificou/adicionou
              uma senha &agrave; um usu&aacute;rio, coloque o email do usu&aacute;rio
              para que ele seja informado: Caso contr&aacute;rio deixe o campo
              abaixo vazio</td>
          </tr>
          <tr>
            <td><div align="center">
                <input name="sendmail" type="text" id="sendmail" value="">
              </div></td>
          </tr>
          <tr>
            <td><div align="center"> </div></td>
          </tr>
          <tr>
            <td> <div align="center">
                <input name="submit2" type="submit" value="Modificar">
                &nbsp; </div></td>
          </tr>
        </table></td>
    </tr>
  </table>
  </form>
</body>
</html>
|;
}

sub grava{
open(USUARIOS,">>$usuarios");
print USUARIOS "Nome:$CAMPO{nome}|Email:$CAMPO{email}|Senha:$CAMPO{senha}|";
close(USUARIOS);
}

sub index{
print qq|

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Acesso Restrito</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.texto {font-family:Sans-Serif;font-size:8pt}
INPUT {font-family:Sans-Serif;font-size:8pt; font-weight:bold}
A    {font-family:Sans-Serif;font-size:8pt; color:#888888; text-decoration:none}
A:hover{font-family:Sans-Serif;font-size:8pt; color:#333333; text-decoration:none}
</style>
</head>

<body>
<form name="form1" method="post" action="?verifica">
  <table width="100%">
    <tr>
      <td bgcolor="#E8E8E8"><table width="100%" class="texto">
          <tr>
            <td bgcolor="#003333" colspan="2"><div align="center"><font color="#FFFFFF"><strong>Acesso
                Restrito</strong></font> </div></td>
          </tr>
          <tr>
            <td colspan="2">Voc&ecirc; deve ser um usu&aacute;rio registrado antes
              de prosseguir.</td>
          </tr>
          <tr>
            <td width="50%"><div align="right">Nome:</div></td>
            <td width="50%"><input name="nome" type="text" id="nome" value=""></td>
          </tr>
          <tr>
            <td><div align="right">Senha:</div></td>
            <td><input name="senha" type="password" id="senha2" value=""></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td><input name="submit" type="submit" value="Entrar"></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td>N&atilde;o &eacute; cadastrado? <a href="?cadastra">Clique aqui</a></td>
          </tr>
        </table></td>
    </tr>
  </table>
  </form>
</body>
</html>

|;}

sub verifica{

if ($CAMPO{senha} eq ""){
print qq|Sua senha esta errada ou ainda não foi ativada|;
}else{
open(USUARIOS,"$usuarios");
@usuarios = <USUARIOS>;
close(USUARIOS);

foreach (@usuarios){
chomp;
($n,$e,$s) = split(/\|/);
$n=~ s/Nome://;
$e =~ s/Email://;
$s =~ s/Senha://;

if ($CAMPO{nome} eq "$n"){
if ($CAMPO{senha} eq "$s"){

print "$protegido";

}else{print qq|Senha errada!|;}
}else{print qq|Login errado!|;}

}}}





Teste aí e veja se esta funcionando, ok!

#14 Jorge_cortez

Jorge_cortez

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Não informado

Posted 17/08/2004, 18:39

Cara,desculpe,não era esta a minha intenção (de apressa-lo), mas estou impressonado com o tamanho do código...
Agora vamos ao festival de perguntas tontas (como disse no meu primeiro post, não conheço nada de CGI)..
1- este código precisa de compilação ou algo assim?... como faço para testa-lo??
2 - minha intenção é colocar uma pagina específica para o usuario se logar, então a pergunta é ... para testar basta inserir este código numa pagina Html?? é isto que tenho que fazer ??

Stone desculpe a pergunta idiotas, mas se estas respostas não sei como implementar este código ok ??? (y)

agradeço a força t+

#15 Whitesnake

Whitesnake
  • Visitantes

Posted 17/08/2004, 20:20

Não nao, isso daí é cgi. Antes, veja com o dono de seu servidor se seu site possui acesso à scripts cgi. Caso aceite, você deverá salvar este arquivo com a estenssão .cgi (pelo bloco de notas mesmo) e enviar para sua pasta cgi-bin, e depois efetuar o CHMOD 755, mas primeiro verifique sobre o acesso à scripts cgi.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq