Jump to content
bonucci

ação da forma executada mas dentro da pagina

Recommended Posts

bonucci

Olá pessoal, tenho um contacto de anexo que funciona muito bem, mas ando com uma duvida no seguinte, abaixo como vêm no script da acção da forma depois de enviado aparece a mensagem a avisar que foi feito o envio, mas eu gostaria que ele dissesse que a mensagem foi enviado dentro da pagina dos contactos, que não fosse numa pagina em branco, alguém sabe-me dizer como o faço?

<?php

$nome     = $_POST['nome'];
$email    = $_POST['email'];
$assunto  = $_POST['assunto'];
$msg      = $_POST['msg'];

$corpo = "Nome: $nome<br>E-mail: $email<br>Mensagem: $msg";
$bound = "XYZ-" . date("dmYis") . "-ZYX";
if (($fp = fopen($_FILES['arquivo']['tmp_name'],"rb")))
{
$anexo = fread($fp,filesize($_FILES['arquivo']['tmp_name']));
$anexo = base64_encode($anexo);
fclose($fp);
$anexo = chunk_split($anexo);
}
if ($anexo)
{
$mensagem = "--$bound\nContent-type: text/html\nContent-Transfer-Encoding: 7bit\n\n$corpo\n\n"
. "--$bound\nContent-type: $_FILES[arquivo][type]\nContent-Disposition: attachment; filename=" . $_FILES['arquivo']['name'] . "\nContent-Transfer-Encoding: base64\n\n$anexo\n"
. "--$bound\r\n";
mail("meuemail@.com",$assunto,$mensagem,"From: $email\nMIME-Version: 1.0\nContent-type: multipart/mixed; boundary=\"$bound\"");
print("Mensagem Enviada com Sucesso!");
//print($fp);
}
else
{
mail("meuemail@hotmail.com",$assunto,$corpo,"From: $email\nContent-type: text/html");
print("Mensagem Enviada com Sucesso - Sem Anexo");
}
?>

Share this post


Link to post
Share on other sites
ruimcosta

Biba,

Do formulário encaminhas para outro ficheiro. Em vez disso encaminhas para o próprio formulário e fazes lá tudo.


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
bonucci

então a ação faz-se dentro da pagina de contactos?! e se eu quisesse que o print a dizer mensagem enviada seja feito num certo sitio da pagina? Ao fazer isso o Print da mensagem não vai aparecer fora do sitio?

Share this post


Link to post
Share on other sites
ruimcosta

A acção dentro da mesma página so poderá funcionar se houver o "Post" e a mensagem pode aparecer onde bem entenderes.


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
bonucci

Pois, acabei de fazer, e ao entrar nos contactos, aparece logo no topo o print de "MEnsagem enviada" e o meu email recebe uma mensagem em branco

Share this post


Link to post
Share on other sites
bonucci

pus dessa maneira, o nome desta pagina é contacto.php, o que esta mal?

<?php

$nome     = $_POST['nome'];
$email    = $_POST['email'];
$assunto  = $_POST['assunto'];
$msg      = $_POST['msg'];

$corpo = "Nome: $nome<br>E-mail: $email<br>Mensagem: $msg";
$bound = "XYZ-" . date("dmYis") . "-ZYX";
if (($fp = fopen($_FILES['arquivo']['tmp_name'],"rb")))
{
$anexo = fread($fp,filesize($_FILES['arquivo']['tmp_name']));
$anexo = base64_encode($anexo);
fclose($fp);
$anexo = chunk_split($anexo);
}
if ($anexo)
{
$mensagem = "--$bound\nContent-type: text/html\nContent-Transfer-Encoding: 7bit\n\n$corpo\n\n"
. "--$bound\nContent-type: $_FILES[arquivo][type]\nContent-Disposition: attachment; filename=" . $_FILES['arquivo']['name'] . "\nContent-Transfer-Encoding: base64\n\n$anexo\n"
. "--$bound\r\n";
mail("meuemail@hotmail.com",$assunto,$mensagem,"From: $email\nMIME-Version: 1.0\nContent-type: multipart/mixed; boundary=\"$bound\"");
print("Mensagem Enviada com Sucesso!");
//print($fp);
}
else
{
mail("meuemail@hotmail.com",$assunto,$corpo,"From: $email\nContent-type: text/html");
print("Mensagem Enviada com Sucesso - Sem Anexo");
}
?>

<style type="text/css">
<!--
.style3 {font-family: Arial, Helvetica, sans-serif; font-size: 12px; }
-->
</style>


<p><img src="imagens/separador_esq.png" alt="separador" /></p>

<div class="submenu_contactos">
<?php include ("submenu_contactos.php");
?></div>

<div class="contactos_empresa_orcamentos">
<h1>quer trabalhar?</h1>


<p style="width:470px;line-height:1.6;">nossa equipa de trabalho<br /> envie o seu curriculum:</p>
<p><a href="mailto:recrutamento@site.com" style="text-decoration:none;color:#565656;">recrutamento</a> </p>

<table>
<form action='contactos.php' method='post' enctype='multipart/form-data'>
<tr>
    <td><span class="style3">Nome:</span></td>
    <td><input type='text' name='nome'></td>
</tr>
<tr>
    <td><span class="style3">E-mail:</span></td>
    <td><input type='text' name='email'></td>
</tr>
<tr>
    <td><span class="style3">Cidadade:</span></td>
    <td><input type='text' name='assunto'></td>
</tr>
<tr>
    <td><span class="style3">Comentários</span>:</td>
    <td><textarea name='msg' cols='30' rows='5'></textarea></td>
</tr>
<tr>
    <td><span class="style3">Curriculo:</span></td>
    <td><input type='file' name='arquivo'></td>
</tr>
<tr>
    <td><input type='submit' value='Enviar'></td>
</tr>
</form>
</table>
</div>


Share this post


Link to post
Share on other sites
ruimcosta

Ao colocares apenas dessa forma, como não existe o $_POST na 1ª chamada do ficheiro vai dar uma série de warnings e fatal error porque não foi ainda enviado nada.

Tens de verificar se houve POST:

if( $_SERVER['REQUEST_METHOD'] == 'POST' ){
    $nome     = $_POST['nome'];
$email    = $_POST['email'];
$assunto  = $_POST['assunto'];
$msg      = $_POST['msg'];

$corpo = "Nome: $nome<br>E-mail: $email<br>Mensagem: $msg";
$bound = "XYZ-" . date("dmYis") . "-ZYX";
if (($fp = fopen($_FILES['arquivo']['tmp_name'],"rb")))
{
$anexo = fread($fp,filesize($_FILES['arquivo']['tmp_name']));
$anexo = base64_encode($anexo);
fclose($fp);
$anexo = chunk_split($anexo);
}
if ($anexo)
{
$mensagem = "--$bound\nContent-type: text/html\nContent-Transfer-Encoding: 7bit\n\n$corpo\n\n"
. "--$bound\nContent-type: $_FILES[arquivo][type]\nContent-Disposition: attachment; filename=" . $_FILES['arquivo']['name'] . "\nContent-Transfer-Encoding: base64\n\n$anexo\n"
. "--$bound\r\n";
mail("meuemail@hotmail.com",$assunto,$mensagem,"From: $email\nMIME-Version: 1.0\nContent-type: multipart/mixed; boundary=\"$bound\"");
print("Mensagem Enviada com Sucesso!");
//print($fp);
}
else
{
mail("meuemail@hotmail.com",$assunto,$corpo,"From: $email\nContent-type: text/html");
print("Mensagem Enviada com Sucesso - Sem Anexo");
}

}

Isto garante que houve post mas a superglobal $_SERVER pode ser manipulada, por isso convem adicionares segurança.


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
bonucci

Enviar até enviou na mesma página, mas a mensagem de dizer "Mensagem enviada" apareceu no topo da página e o CSS da pagina desapareceu, ficou a pagina toda desconfigurada :\

Porque será?

Share this post


Link to post
Share on other sites
ruimcosta

em vez de print("Mensagem Enviada com Sucesso!"); mete $msg = "Mensagem Enviada com Sucesso!";

E o mesmo para as outras mensagens. Depois mandas no local onde queres que apareça a mensagem escreves:

if( isset($msg) ) {
echo $msg;
}


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.