Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DarkDragonLord

Formulario de Contato: Quebras de linha

Recommended Posts

Galera, beleza total :D?

 

Bom, queria saber uma coisa.. Estou com um formulario que, ao dar Enviar, passa por um JS e depois, vai para o PHP. Se o php der algum erro, o JS faz um update na div do formulario falando dos erros.

 

Bom, tudo funciona certinho e maravilhoso. POREM, qualquer coisa escrita no textarea vira uma linha unica, ou seja, os 'enters' / quebra de linha que alguem escreveu nao sao detectados...

 

EXEMPLO:

"Oi

Meu nome é joao

gostei do seu site

 

Abs"

 

Vem assim pra mim

"OiMeu nome é joaogostei do seu siteAbs"

 

 

Como faco uma verificacao se existe ou nao quebras, tipo, substitui-las por \n ou <br /> pra nao vir no meu email tudo grudado?

 

 

Abaixo, os codigos, caso precisem: (OS $texto['qualquer coisa'] sao as minhas variaveis do sistema multilingua.

 

 

FORM

CODE
<div id="contactarea">

<form name="contactform" id="contactform" action="">

<table width="100%" border="0" cellspacing="5" cellpadding="5">

<tr>

<td width="50%" align="right" valign="top"><?php echo $texto['contact_name']; ?>:</td>

<td width="50%" align="left" valign="middle"><input type="text" name="name" id="inputbox"></td>

</tr>

<tr>

<td align="right" valign="top">E-mail:<br /><span style="font: 9px Verdana, Arial;color:#FF0000"><?php echo $texto['contact_email_info']; ?></span></td>

<td align="left" valign="middle"><input type="text" name="email" id="inputbox"></td>

</tr>

<tr>

<td align="right" valign="top"><?php echo $texto['contact_sub']; ?>:</td>

<td align="left" valign="middle"><input type="text" name="subject" id="inputbox"></td>

</tr>

<tr>

<td align="right" valign="top"><?php echo $texto['contact_msg']; ?>:</td>

<td align="left" valign="middle"><textarea name="msg" rows="10" id="textarea"></textarea></td>

</tr>

 

 

<tr>

<td align="right" valign="top"> </td>

<td align="left" valign="middle">

<input type="button" value="<?php echo $texto['contact_send']; ?>" name="send" id="submitbutton" onclick='sendemail();'></td>

</tr>

</table>

</form>

</div>

JS/AJAX

CODE
function createRequestObject() {

var ro;

var browser = navigator.appName;

if(browser == "Microsoft Internet Explorer"){

ro = new ActiveXObject("Microsoft.XMLHTTP");

}else{

ro = new XMLHttpRequest();

}

return ro;

}

 

var http = createRequestObject();

 

function sendemail() {

var msg = document.contactform.msg.value;

var name = document.contactform.name.value;

var email = document.contactform.email.value;

var subject = document.contactform.subject.value;

document.contactform.send.disabled=true;

document.contactform.send.value='Enviando|Sending';

 

http.open('get', 'contact/contact.php?msg='+msg+'&name='+name+'&subject='+subject+'&email='+email+'&action=send');

http.onreadystatechange = handleResponse;

http.send(null);

}

 

function handleResponse() {

if(http.readyState == 4){

var response = http.responseText;

var update = new Array();

 

if(response.indexOf('|' != -1)) {

update = response.split('|');

document.getElementById(update[0]).innerHTML = update[1];

 

}

}

}

 

PHP QUE ENVIA TUDO (email pra mim com dados + email confirmacao pro contactante)

CODE
<?php

 

 

include "../languages/setidioma.php";

 

 

if(!isset($_GET['action']))

{

die("You must not access this page directly!"); //Just to stop people from visiting contact.php normally

}

 

/* Now lets trim up the input before sending it */

 

$name = trim($_GET['name']); //The senders name

$email = trim($_GET['email']); //The senders email address

$subject = trim($_GET['subject']); //The senders subject

$message = trim($_GET['msg']); //The senders message

 

 

if ($name=="" || $email=="" || $subject=="" || $message=="" )

{

echo "contactarea|". $texto['contact_error']."<br /><a href=\"java script:window.location.reload( false );\">".$texto['back']."<a/>";

}

else {

//do email format validation

 

if(!eregi('^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,3})?)$', $email)) {

 

echo "contactarea|".$texto['invalid_email']."<br /><a href=\"java script:window.location.reload( false );\">".$texto['back']."<a/>";;

exit;

}

 

$to = "ddl@raphaelddl.com"; //This is the email address you want to send the email to

$noreply = "noreply@raphaelddl.com";

$headers = "From: RaphaelDDL.com <$noreply>\n";

$subjects = "WebSite Contact".$subject;

 

 

// Assunto do e-mail auto resposta que o visitante receberá!

$assunto_r = $name.",".$texto['email_resposta_assunto'];

$url_site = "http://raphaelddl.com";

$nome_ass = "Raphael DDL";

// Mensagem que será enviada no e-mail auto resposta!

$resposta =

$name.",".$texto['email_resposta_tex']."\n\n".$nome_ass."\n".$url_site;

 

$ip = $_SERVER['REMOTE_ADDR']; // Envia o IP do visitante para o seu e-mail!

 

// (Código 02) Enviar os dados capturados pelo formulário para seu e-mail!

$messages .= "RaphaelDDL.com Contact\n--------------------------\n\n";// Frase que aparecerá no topo da mensagem!

$messages .= "IP registrado: $ip\n\n";

$messages .= "Nome: $name\n";

$messages .= "E-mail: $email\n\n";

$messages .= "Assunto: $subject\n\n";

$messages .= "Mensagem: $message";

 

//----------------------------------------------------------------------------------------------------------------------//

 

// Responsável pelo envio do e-mail!

mail($to, $subjects, $messages, $headers);

// Responsável pelo envio da auto resposta!

mail($email, $assunto_r, $resposta, "From: $noreply");

 

echo "contactarea|<center><img src=\"../images/contact/mail.png\" style=\"width:384px;height:384px;\"><br />".$texto['contact_thx']."</center>";

 

}

 

//now lets update the "contactarea" div on the contact.html page. The contactarea| tell's the javascript which div to update.

?>

Já tentei mexer no PHP usando isso:

 

Eu coloquei o nl2br no ultimo $messages...

 

Assim

CODE

$messages .= "Assunto: $subject\n\n";

$messages .= "Mensagem:" nl2br($message);

Nem funciona mais o contact com isso...

 

Olhei qual o output do JS para o php.. Olha aqui.. Escrevi uns dados quaisquer

 

http://raphaelddl.com/contact/contact.php?msg=testetesttesttesttest&name=Raphael&subject=lol&email=thebugvt@gmail.com&action=send

 

no MSG já vem sem quebra de linha... acho que tem que mudar entao é no JS e nao no PHP.............

 

 

Alguem me ajuda a remontar o meu JS? http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Que legal. Ainda nom sou f*** em PHP, nunca tinha visto isso..

 

 

Mas assim,

 

Exemplo #1 usando nl2br()

<?php

echo nl2br("foo isn't\n bar");

?>

 

O exemplo acima irá imprimir:

 

foo isn't<br />

bar

 

Eu vo ter que falar pra galera escrever o linebreak de php (\n) no formulario ?? SHauSah

 

Eu coloquei o nl2br no ultimo $messages...

 

Assim

CODE

$messages .= "Assunto: $subject\n\n";

$messages .= "Mensagem:" nl2br($message);

Nem funciona mais o contact com isso...

 

 

Olhei qual o output do JS para o php.. Olha aqui.. Escrevi uns dados quaisquer

 

http://raphaelddl.com/contact/contact.php?msg=testetesttesttesttest&name=Raphael&subject=lol&email=thebugvt@gmail.com&action=send

 

no MSG já vem sem quebra de linha... acho que tem que mudar entao é no JS e nao no php, né?

se for, alguem poderia mover o tópico para o JavaScript? Se for no php mesmo, ai dxa aqui xD

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, em seu textarea que você acusa não funcionar a quebra de linha, você coloca apenas isso:

nl2br($var);
foi oq eu fiz

 

Mas ai quando cliquei no enviar, ficou "enviando" forever and ever :blink: :blink: :blink: :blink:

 

 

entao troquei.

Coloquei no

$message = trim($_GET['msg']); //The senders message

ficou

$message = trim(nl2br($_GET['msg'])); //The senders message

e ficou mesma coisa....

 

achu que tinha que ser algo no java, pq o java nao passa pro php as line break, soh passa texto plano

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pede um auxílio na área do java então mano...

É.

 

Peço a qualquer moderador que ler, favor mover este tópico para a seção JavaScript, POR FAVOR.

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Obrigado Alaerte :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de mover, observe os seguintes:

 

1) caso a página pra onde é feita a requisição não imprima nada, não haverá um response, e o script ficara "carregando", como você disse que está. Experimente colocar um texto fora do PHP, e comentar todo o código, só pra ter certeza de que o problema não está no script PHP. Por exemplo, seu arquivo poderia ser isso:

<?php
/**
tudo comentado
*/
?>
texto
2) Você não acharia melhor formular um novo tópico lá? digo isto porque este está cheio de respostas, e quanto maior um tópico, menos as pessoas se interessam em participar dele, a não aquele que já estão dentro da discussão.

 

Mas se mesmo assim você achar por bem mover, tudo bem, eu movo pra lá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de mover, observe os seguintes:

 

1) caso a página pra onde é feita a requisição não imprima nada, não haverá um response, e o script ficara "carregando", como você disse que está. Experimente colocar um texto fora do PHP, e comentar todo o código, só pra ter certeza de que o problema não está no script PHP. Por exemplo, seu arquivo poderia ser isso:

<?php
/**
tudo comentado
*/
?>
texto
2) Você não acharia melhor formular um novo tópico lá? digo isto porque este está cheio de respostas, e quanto maior um tópico, menos as pessoas se interessam em participar dele, a não aquele que já estão dentro da discussão.

 

Mas se mesmo assim você achar por bem mover, tudo bem, eu movo pra lá.

1>

bom, se acessado diretamente, ele imprime a mensagem lah e dá um die.

se com os parametros todos, ele usa 2 mails e imprime um 'update' na div. O.o~

 

2> apaga os posts entao e deixa soh o primeiro post meu, pode ser :P?

pq senao vai ser ctrl+c ctrl+v ai o povo vai me xingar pq postei em 2 luar diferente a mesma coisa.

neah

 

 

e ja editei o 1o post pra ser o 'post de JS'

Compartilhar este post


Link para o post
Compartilhar em outros sites

DarkDragonLord, o problema se dá antes do PHP receber os dados. O problema é no javascript mesmo. Por exemplo, digite assim: tudo&name=bem

Poderá ser retornado um erro, isso pq, será considerado que você passou 2 vezes a variável name na url. Por isso, ao passar parâmetros para o ajax, deve-se usar uma função para Codificar os valores obtidos em códigos, evitando conflitos com os códigos javascript. Sua função então deveria ficar assim:

 

function sendemail() {
	var msg = escape(document.contactform.msg.value);
	var name = escape(document.contactform.name.value);
	var email = escape(document.contactform.email.value);
	var subject = escape(document.contactform.subject.value);
	document.contactform.send.disabled=true;
 	document.contactform.send.value='Enviando|Sending'; 
   http.open('get', 'contact/contact.php?msg='+msg+'&name='+name+'&subject='+subject+'&email='+email+'&action=send');
	http.onreadystatechange = handleResponse;
	http.send(null);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

DarkDragonLord, o problema se dá antes do PHP receber os dados. O problema é no javascript mesmo. Por exemplo, digite assim: tudo&name=bem

Poderá ser retornado um erro, isso pq, será considerado que você passou 2 vezes a variável name na url. Por isso, ao passar parâmetros para o ajax, deve-se usar uma função para Codificar os valores obtidos em códigos, evitando conflitos com os códigos javascript. Sua função então deveria ficar assim:

 

function sendemail() {
	var msg = escape(document.contactform.msg.value);
	var name = escape(document.contactform.name.value);
	var email = escape(document.contactform.email.value);
	var subject = escape(document.contactform.subject.value);
	document.contactform.send.disabled=true;
 	document.contactform.send.value='Enviando|Sending'; 
   http.open('get', 'contact/contact.php?msg='+msg+'&name='+name+'&subject='+subject+'&email='+email+'&action=send');
	http.onreadystatechange = handleResponse;
	http.send(null);
}

ALOC!!!!

num sabia dessa ;P

 

testei aqui e na verdade enviou.. mas por exemplo, testei o nome ser tudo&name=bem... no email que recebi so veio o bem, o JS ignorou o primeiro parametro tudo.

 

coloquei do jeito que tu falou, agora apareceu tudo&name=bem como nome haushauashsauhashu q f*** http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

e a mensagem, agora tem quebra de página!!!!! Tu é rox cara http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Aparece assim no meu email:

 

Nome: tudo&name=bem

E-mail: xxxx@hotmail.com

 

Assunto: teste2

 

Mensagem: sasaHushsa<br />

aasdsad<br />

sda<br />

quebra<br />

quebra<br />

 

 

 

tentei uma function de php pra mudar os <br /> pra \n mas sem sucesso

 

tu sabe se dá pra fazer isso no proprio JS?

 

 

EDIT:

Ignore minha lezera.. Eu tinha esquecido de tirar o nl2br da string message XD

agora tá perfeito

 

 

TU É 10 MARCOS! MUITO OBRIGADO!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.