Ir para conteúdo
Fórum Script Brasil
  • 0

Formmail - Enviar Esta Pagina Pra Um Amigo


Eder

Pergunta

Ola...pessoal..sou fraquinho em PHP.

Tenho este modelo de formmail pra SOLICITAR VISITA

Queria adaptar este FORMMAIL pra enviar no meu site assim: ENVIAR ESTA PAGINA PRA UM AMIGO...notei que é bem diferente do form se SOLICITAR VISITA..pois no SOLICITAR VISITA...eu já configuro diretamente o email do recebimento enquanto que no ENVIAR ESTA PAGINAS PRA UM AMIGO...eu tenho que pegar o email que o camarada digita no site e enviar...e também enviar o endereço da pagina visitada...é ai que não sei como fazer.

alguém poderia me ajudar apartir deste codigo abaixo SOLICITAR VISITA....O que tenho que alterar...acredito que não deva ser mta coisa..mas como sou fraco em php....tou batendo cabeça...hehehe.

segue abaixo o form SOLICITAR VISITA:

<?

class SmtpMailer{

var $sock, $host, $port, $error;

var $isAuth, $user, $pass;

function SmtpMailer($host,$port=25,$isAuth=true){

$this->host = $host;

$this->port = $port;

$this->isAuth = $isAuth;

$this->sock = fsockopen($host, $port, $errno, $errstr, 30);

if( $this->Get() <> 220 ) $error = "Falha ao tentar se conectar ao servidor";

$this->Put("EHLO $host");

if( $this->Get() <> 250 ) $error = "Falha ao tentar enviar o comando EHLO";

}

function Auth(){

$this->Put("AUTH LOGIN");

if( $this->Get() <> 250 ) $error = "Falha ao tentar enviar o comando AUTH PLAIN";

$this->Put(base64_encode($this->user));

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar o USUARIO";

$this->Put(base64_encode($this->pass));

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar a SENHA";

if( $this->Get() <> 235 ) $error = "Falha ao tentar autentificar";

}

function MakeHeader($to, $from, $subject){

$header = "MIME-Version: 1.0\r\n";

$header .= "Content-type: text/html; charset=iso-8859-1\r\n";

$header .= "Message-Id: < " . date('YmdHis') .".". md5(microtime()).".". strtoupper($from) ." > \r\n";

$header .= "From: < $from > \r\n";

$header .= "To: < $to > \r\n";

$header .= "Subject: $subject \r\n";

$header .= "Date: " . date('D, d M Y H:i:s O') . " \r\n";

$header .= "X-MSMail-Priority: High \r\n";

return $header;

}

function Send($to, $from, $subject, $msg){

if( $this->isAuth == true )

$this->Auth();

$this->Put("MAIL FROM: <$from>");

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar o comando MAIL FROM";

$this->Put("RCPT TO: <$to>");

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar o comando RCPT TO";

$this->Put("DATA");

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar o comando DATA";

$this->Put($this->MakeHeader($to, $from, $subject));

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar as HEADERS";

$this->Put("\r\n");

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar o comando NEWLINE";

$this->Put($msg);

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar a MENSAGEM";

$this->Put(".");

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar a SENHA";

if( $this->Get() <> 250 ) return false; else return true;

$this->Close();

}

function Close(){

$this->Put("QUIT");

return fclose($this->sock);

}

function Put($value){

return fputs($this->sock, $value . "\r\n");

}

function Get(){

$line = fgets($this->sock). "<br>\n";

return $line{0}.$line{1}.$line{2};

}

}

//configuração do servidor linux

define('SMTP_HOST','117.0.0.1'); // host do servidor smtp

define('SMTP_PORT',15); // porta do servidor smtp

define('SMTP_USER','xxxx@xxxxxxxx.com.br'); // usuario para autentificação

define('SMTP_PASS','xxxxxxxx'); // senha para autentificação

//variáveis criadas abaixo para manipulação das informações dos campos do formulário.

$destino = "yyyyyy@xxxxxxxx.com.br";

$assunto = "Mens. Enviada do Site - Sol. de Visita";

$subject = $_POST['email'];

$fone = $_POST['fone'];

$nome = $_POST['nome'];

$cidade = $_POST['cidade'];

$estado = $_POST['estado'];

$msg = $_POST['msg'];

$monta = "Nome: $nome<BR>

Fone: $fone<BR>

E-mail: $subject<BR>

Cidade: $cidade<BR>

Estado: $estado<BR>

Mensagem: $msg"; //aqui a gente monta a variável que será chamada no e-mail

//testa abaixo o campo nome para não ficar vazio..

If ($nome =="")

{

echo "<script language='JavaScript'>";

echo "alert('É necessário preencher o campo Nome!');";

echo "</script>";

echo "<br><br><left><a href=\"java script:history.back(1)\">Erro:<br>Por favor, informe seu <strong>Nome</strong>!</a></left>";

Exit;}

//

If ($subject =="")

{

echo "<script language='JavaScript'>";

echo "alert('É necessário preencher o campo E-Mail!');";

echo "</script>";

echo "<br><br><left><a href=\"java script:history.back(1)\">Erro:<br>Por favor, informe seu <strong>E-mail</strong>!</a></left>";

Exit;}

//

If ($fone =="")

{

echo "<script language='JavaScript'>";

echo "alert('É necessário preencher o campo Telefone!');";

echo "</script>";

echo "<br><br><left><a href=\"java script:history.back(1)\">Erro:<br>Por favor, informe seu <strong>fone</strong>!</a></left>";

Exit;}

//

$smtp = new SmtpMailer(SMTP_HOST,SMTP_PORT,true);

$smtp->user = SMTP_USER;

$smtp->pass = SMTP_PASS;

//este abaixo é pra se eu não quizer validar a mensagem com a pagina de ok ou de erro

//$smtp->Send($destino, SMTP_USER, $assunto, $monta); //chamamos a $monta que por sua vez

trará o nome, email e msg do usuário.

//Agora este codigo abaixo já valida a pagina obrigado.htm e erro.htm..atraves da variavel $enviar

$enviar = $smtp->Send($destino, SMTP_USER, $assunto, $monta); //chamamos a $monta que por sua vez trará o nome, email e msg do usuário.;

if ($enviar)

header ("Location:obrigado.htm");

else

header ("Location:erro.htm");

?>

Valeu..muito grato...

:(

Link para o comentário
Compartilhar em outros sites

22 respostass a esta questão

Posts Recomendados

  • 0

Você tem que alterar:

$destino = "yyyyyy@xxxxxxxx.com.br";

Destino vai ser o e-mail do "amigo" então esse e-mail vai ser digitado em um form que você vai ter que criar, dai basta colocar no lugar do que está ai em cima:

$destino = $_POST['nome_do_campo'];

Link para o comentário
Compartilhar em outros sites

  • 0
Como assim "do endereço da pagina que deve ir pro amigo" o endereço que o amigo está indicando? Isso vai no corpo da mensagem... que é o $monta

ok..entendi...você quer dizer que tenho que configurar na variavel $monta ???

não tem uma maneira do codigo pegar automaticamente o endereço da pagina??

porque senão tenho que fazer varios formularios um para cada pagina visitada ai..seria trabalhoso.

grato..

Link para o comentário
Compartilhar em outros sites

  • 0

Sinceramente não entendi o que você quer dizer com "endereço da pagina?" você quer que o formulário envie o endereço de cada páginas especifia do site? Por exemplo você tem três páginas:

a.php

b.php

c.php

Quer que ele descubra de que página o formulário foi requisitado...então usa o $_SERVER['HTTP_REFERER'] isso vai te retornar o endereço completo da origem da página atual, então se o cara clicar no b.php para enviar o formulário, na página do formulário o $_SERVER['HTTP_REFERER'] vai retornar http://www.seuendereço/b.php

Link para o comentário
Compartilhar em outros sites

  • 0
Sinceramente não entendi o que você quer dizer com "endereço da pagina?" você quer que o formulário envie o endereço de cada páginas especifia do site?
Resposta: é assim.....veja....eu tenho uma pagina na net...e tem um camarada visitando ela.....vamos supor que o camarada goste da pagina e queira indicar a um amigo....então ele click num linck que vai abrir um formulario:

Nome:

seu emal:

Nome do amigo:

email do amigo

mensagem:

ai ele preenche e manda .......o camara que vai receber deveria receber assim:

Nome do remetente:

Email do remetente:

mensagem: achei interessante esta pagina e estou de enviando o

linck da pagina: http://www.hjhjhjhhj.com.br

comprrendeu.....é muito comum...tem bastante nos sites terra.

Eu até já estou conseguindo mandar...mas o linck ainda não sei como seguir no email....

Link para o comentário
Compartilhar em outros sites

  • 0
Mas se é uma URL basta colocar diretamente no $monta o

<a href=\"http://www.hjhjhjhhj.com.br\">http://www.hjhjhjhhj.com.br</a>

Se você tem N URLs e quer usar o mesmo formulário apenas pegue o endereço do site utilizando $_SERVER['SERVER_NAME']

Resposta:

Testei e pegou o nome do site tipo oficial servidor tipo: www.xxxx.com.br

mas vamor supor que a pagina não é esta é esta:

www.xxxx.com.br/dicas.htm

na verdade vamos supor que eu queira mandar a pagina dicas.htm.....como ficaria??

estamos chegando lá....hehehe...valeu carinha muito grato pela ajuda.

Link para o comentário
Compartilhar em outros sites

  • 0

Nós estamos indo para o que eu disse a umas 3 mensagens atrás... para pegar o nome do arquivo você tem 2 possibilidades, se o formulário estiver dentro da própria página usa o $_SERVER['PHP_SELF'] se você for colocar um link do tipo "clique aqui para enviar essa página..." ai você vai ter que usar o $_SERVER['HTTP_REFERER'], que como eu disse acima vai retornar o endereço completo da página http://www.... ai é só você usar o explode para dividir o resultado do $_SERVER['HTTP_REFERER] e pegar o último elemento do array... ou outra opção é no próprio link "clique aqui..." que eu falei acima você passar por querystring o resultado do $_SERVER['PHP_SELF']....

Link para o comentário
Compartilhar em outros sites

  • 0
Nós estamos indo para o que eu disse a umas 3 mensagens atrás... para pegar o nome do arquivo você tem 2 possibilidades, se o formulário estiver dentro da própria página usa o $_SERVER['PHP_SELF']se você for colocar um link do tipo "clique aqui para enviar essa página..." ai você vai ter que usar o $_SERVER['HTTP_REFERER'], que como eu disse acima vai retornar o endereço completo da página http://www.... ai é só você usar o explode para dividir o resultado do $_SERVER['HTTP_REFERER] e pegar o último elemento do array... ou outra opção é no próprio link "clique aqui..." que eu falei acima você passar por querystring o resultado do $_SERVER['PHP_SELF']....

Resposta: Amigão..entendi..tudo o que você mencionou acima....mas veja por favor...se eu tenho uma pagina.....e quero mandar ela pra um amigo....então eu coloco um linck...chamando o formmail pra ser preenchido(eamigo.htm)então eu preencho..e quando vou enviar....ele acaba mandando o endereço do formmail e não da pagina que era pra mandar ....

neste caso eu usei o

$pagina = $_SERVER['HTTP_REFERER'];

ele mandou assim exemplo: http://www.xxxx.com.br/formmail/eamigo.htm

deveria ter mandando a pagina anterior que era esta: http://www.xxxx.com.br/pagina55.htm

se eu usar o

$pagina = $_SERVER['PHP_SELF'];

ele vai me retornar este endereço(que é o formmail originado):

/formmail/enviar_amigo.php

é isto que me refiro.......perdão se não soube explicar direito.

então eu nenhum dos codigos passados mostra o endereço da pagina correta.

Valeu.

Link para o comentário
Compartilhar em outros sites

  • 0

Vamos acertar os nossos relógios, ok?

Olha, se você tivesse entendido, teria funcionado...

O problema é o seguinte, você está chamando o HTTP_REFERER no lugar errado, veja:

Você tem a página - O formulário de envio - e por último o script que vai enviar, então, o num fluxograma simples tudo vai ser apenas:

A - B - C

Você está colocando o HTTP_REFERER na página C (pelo que eu estou entendendo) e ai eu te pergunto, QUAL página é a anterior a C, seria a A (que é página que você quer enviar) ou a B (que é a origem do formulário que envia os dados para o script)? Então... o que você tem que fazer é, colocar o HTTP_REFERER na página B (que é onde está o formulário que envie os dados para o script de envio) e então a partir de algum método (campo do tipo hidden ou sessão) enviar para o o script o valor do guardado do HTTP_REFERER...

Link para o comentário
Compartilhar em outros sites

  • 0
Vamos acertar os nossos relógios, ok?

Olha, se você tivesse entendido, teria funcionado...

O problema é o seguinte, você está chamando o HTTP_REFERER no lugar errado, veja:

Você tem a página - O formulário de envio - e por último o script que vai enviar, então, o num fluxograma simples tudo vai ser apenas:

A - B - C

Você está colocando o HTTP_REFERER na página C (pelo que eu estou entendendo) e ai eu te pergunto, QUAL página é a anterior a C, seria a A (que é página que você quer enviar) ou a B (que é a origem do formulário que envia os dados para o script)? Então... o que você tem que fazer é, colocar o HTTP_REFERER na página B (que é onde está o formulário que envie os dados para o script de envio) e então a partir de algum método (campo do tipo hidden ou sessão) enviar para o o script o valor do guardado do HTTP_REFERER...

shiiii...carinha agora ferrou tudo....

bom vamos lá....não posso desistir agora...mas estou quase...hehehe.

concordo com você eu tenho a pagina A-que é a pagina que quero mandar pro usuario.

A pagina B seria o formmail

e o C seria o spript de envio. tudo correto.

Você está colocando o HTTP_REFERER na página C (pelo que eu estou entendendo) e ai eu te pergunto, QUAL página é a anterior a C, seria a A (que é página que você quer enviar) ou a B (que é a origem do formulário que envia os dados para o script)?

Sim estou colocando o HTTP_REFERER No script e a pagina anterior a C seria realmente a A(esta que quero enviar.)

Então... o que você tem que fazer é, colocar o HTTP_REFERER na página B (que é onde está o formulário que envie os dados para o script de envio) e então a partir de algum método (campo do tipo hidden ou sessão) enviar para o o script o valor do guardado do HTTP_REFERER

Ok..mas poderias me dizer como colocar o HTTP_REFERER na pagina B ??? e depois como o script vai pegar este dado e enviar?é aqui que não consigo fazer

Valeu...muito grato :unsure:

Link para o comentário
Compartilhar em outros sites

  • 0

Então salva o formulário (se ele ainda não estiver em PHP) com a extensão .php e coloca lá as tags do PHP:

<?php

$pag_anterior = $_SERVER['HTTP_REFERER'];

?>

No formulário você coloca (se a página não for toda em PHP)...

<input name=pagina_anterior" type="hidden" value="<?php echo $pag_anterior; ?>"> (coloca isso entre as tags FORM)

Na página do script (que envia o e-mail) você pega esse valor por $_POST['pagina_anterior]; ou $_GET['pagina_anterior'] (depende se os dados estão sendo enviados por POST ou GET...) e coloa isso no $monta...

Link para o comentário
Compartilhar em outros sites

  • 0

ola...Bom Dia!

Então salva o formulário (se ele ainda não estiver em PHP) com a extensão .php e coloca lá as tags do PHP:

<?php

$pag_anterior = $_SERVER['HTTP_REFERER'];

?>R. ele esta em htm

No formulário você coloca (se a página não for toda em PHP)...

<input name="pagina_anterior" type="hidden" value="<?php echo $pag_anterior; ?>"> (coloca isso entre as tags FORM)R. Coloquei assim..por favor veja se esta correto:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

</head>

<input name="pagina_anterior" type="hidden" value="<?php echo $pag_anterior; ?>">

<body background="images/pfundo2.gif" bgcolor="white" text="black" link="blue"

vlink="purple" alink="red" onload="na_preload_img(false, 'images/voltar1.gif');">

Na página do script (que envia o e-mail) você pega esse valor por $_POST['pagina_anterior]; ou $_GET['pagina_anterior'] (depende se os dados estão sendo enviados por POST ou GET...) e coloa isso no $monta...R. Ok...está facil..eu coloquei:

$pagina = $_POST['pagina_anterior];

e depois coloquei pra fazer parte do monta ...esta parte tenho certeza que está certo..

Mas não funcionou....quando recebo o email...não vem nada.....vem em branco.

:unsure:

valeu....

Link para o comentário
Compartilhar em outros sites

  • 0

Esquece o que eu falei sobre...

<?php

$pag_anterior = $_SERVER['HTTP_REFERER'];

?>

Mas o resto precisa... coloca assim então:

<input name=pagina_anterior" type="text" value="<?php echo $_SERVER['HTTP_REFERER]; ?>">

Note que mudei o valor de hidden para text, isso vai fazer com que o campo seja exibido assim você consegue ver o valor do HTTP_REFERER

Mas só salientando:

1 - A página do formulário terá que ser salva com a extensão .php

2 - Esse input tem que estar entre as tags FORM (pois senão ele não vai ser enviado junto com o formulário)...

Link para o comentário
Compartilhar em outros sites

  • 0
Mas o resto precisa... coloca assim então:

<input name="pagina_anterior" type="text" value="<?php echo $_SERVER['HTTP_REFERER']; ?>">

Note que mudei o valor de hidden para text, isso vai fazer com que o campo seja exibido assim você consegue ver o valor do HTTP_REFERER

Sim inseri o codigo.

Mas só salientando:

1 - A página do formulário terá que ser salva com a extensão .php

R. sim salvei em *.php

Esse input tem que estar entre as tags FORM (pois senão ele não vai ser enviado junto com o formulário)...

R. coloquei assim veja se esta correto:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

<html>

<head>

<input name="pagina_anterior" type="text" value="<?php echo $_SERVER['HTTP_REFERER]; ?>">

<title>MailSmtp - Formul&aacute;rio de Contato</title>

<meta name="generator" content="Namo WebEditor v3.0">

Seguinte ....nesta pagina eamigo.php onde coloquei este input....ele acabou criando um campo(input) na propria visualização.....até foi bom pra ver se funciona, se ele está pegando o nome da pagina anterior...e ai atualizei o site.....e ele pegou direitinho o endereço da pagina anterior....porem a mensagem no email veio em branco de novo.......ele NÃO esta trazendo o endereço da pagina e armazenando na variavel $Pagina:

$pagina = $_POST['pagina_anterior'];

pra ai mostrar no email...

acredito que é nesta parte de entregar pra variavel o valor dela.....não esta pegando...na transição de um arquivo eamigo.php(formmail) e o script enviar_amigo.php.

porque eu fiz um testezinho no script colocando assim:

$pagina = "TESTE...TESTE";

e ai o email chegue direitinho..

compreendeu?? será que estamos chegando perto??

valeu.....grato pela paciência...

t+

Link para o comentário
Compartilhar em outros sites

  • 0

Ele criou um campo porque eu troquei o tipo de campo de hidden para text (hidden = oculto, texto = texto)...

Se está pegando o nome de forma correta (e é pra estar mesmo, tanto que tá preenchendo o campo novo), o problema agora é que você não colocou isso ENTRE as tags do formulário...

Um formulário começa assim:

<form name="form1" method="post" action="">//Aqui pode mudar um pouco, mas vai começar com <form..

E termina assim:

</form>

Então o:

<input name="pagina_anterior" type="text" value="<?php echo $_SERVER['HTTP_REFERER']; ?>">

Tem que estar ENTRE isso dai...quando você ver que está funcionando por trocar o type="text" para type="hidden"

Link para o comentário
Compartilhar em outros sites

  • 0
Deu certo carinho.....eu sempre achava que quando você mencion TAG seria entre os HEADS......não sabia que era da forma como colocou agora deu certo.

Carinha só pra fechar...o endereço chega certinho...mas ele aparece no outlook express...sem estar linckado..ou seja deveria ter o linck nele ...já pro usuario chegar e clickar...ele veio puro texto

é dificil??

Valeu...muito Grato

Link para o comentário
Compartilhar em outros sites

  • 0

beleza....fiz assim no script:

Linck da Pagina: <a href=$pagina>Click Aqui!!</a></p><BR>
e no email veio assim:
Linck da Pagina: Click Aqui!!

Ok beleza......mas eu queria que no email chegasse a pagina(o linck completo pro usuario ver e clicar) e não o CLICK AQUI, embora que no CLICK AQUI tem certinho debaixo o linck..

é só pra saber como faz...não to conseguindo.

é que como eu mexo só com editor web visual...tipo o NamoWebEditor..então o codigo é dificil eu mexer diretamente, mas tenho que aprender admito...

Valeu ...carinha..muito grato

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...