• 0
Sign in to follow this  
Eder

Formmail - Enviar Esta Pagina Pra Um Amigo

Question

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','[email protected]'); // 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 = "[email protected]";

$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...

:(

Share this post


Link to post
Share on other sites

22 answers to this question

Recommended Posts

  • 0

Você tem que alterar:

$destino = "[email protected]";

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'];

Share this post


Link to post
Share on other sites
  • 0

ola..amigo..beleza??

Beleza..entendi...e a questão do endereço da pagina que deve ir pro amigo....como ele irá levar??

valeu...grato por ajudar.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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..

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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....

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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']....

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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:

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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....

Share this post


Link to post
Share on other 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)...

Share this post


Link to post
Share on other 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+

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites
  • 0

É só colocar o $pagina dentro da tag do link... <a href...

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites
  • 0

<a href=\"$pagina\">$pagina</a>

Share this post


Link to post
Share on other sites
  • 0

Valeu...carinha..fechou..

muito Agradecido pela ajuda e paciência.

Um otimo final de semana e bom descanso...

até uma próxima oportunidade.

Abraço :D

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this