Jump to content


Photo

Quebras De Linha


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

#1 lanlan

lanlan

    12 Horas

  • Usuários
  • 180 posts
  • Sexo:Não informado
  • Localidade:Teresina
  • Interesses:design, php, photoshop. ;} webdesign em geral!

Posted 28/07/2006, 22:46

Então, eu uso essa proteção para a maioria das validações de campo dos meus formulários antes de inserior no banco de dados mysql.

function anti_injection($sql_in){  
$sql = preg_replace("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/ie","",$sql_in);  
$sql = trim($sql);  
$sql = strip_tags($sql);  
$sql = mysql_real_escape_string($sql);
$sql_out = addslashes($sql);
return $sql_out;
}


O problema é que não adianta o que eu faça, ele não imprime as quebras de linha corretamente.
Um texto que deveria ser assim:

Oi.
Tudo bom?


Fica assim:

Oi.\r\nTudo bom?

Eu sei que o nl2br faz a quebra de linha.
Já tentei no while, assim:

$descricao = nl2br($r["descricao"]);

Já tentei no echo, assim:

echo nl2br($descricao);

Já li todos os tópicos do fórum com a palavra chave 'quebra de linha'.
Já li e tentei usar todas as função de replace da página do nl2br do PHP.NET.
Mas nada. :(

Obrigada desde já.

Edição feita por: lahlahbarros, 13/08/2006, 00:39.


#2 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 29/07/2006, 11:19

1: procure aqui no forum sobre SQL INJECTION, tópicos e o que não falta ;)

2: ue, se você faz um texto na TEXTAREA e pressionando a tecla ENTER, ele irá gravar no banco de dados \r\n ! Assim, basta usar a função NL2BR() quando for exibir os dados para o usuário!

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#3 lanlan

lanlan

    12 Horas

  • Usuários
  • 180 posts
  • Sexo:Não informado
  • Localidade:Teresina
  • Interesses:design, php, photoshop. ;} webdesign em geral!

Posted 29/07/2006, 12:22

1: procure aqui no forum sobre SQL INJECTION, tópicos e o que não falta ;)

2: ue, se você faz um texto na TEXTAREA e pressionando a tecla ENTER, ele irá gravar no banco de dados \r\n ! Assim, basta usar a função NL2BR() quando for exibir os dados para o usuário!

T+



A função anti_injection que eu uso funciona normalmente (antes de inserir os dados na tablea0>
Meu problema é a quebra de linha na hora de imprimir. O nl2br não funciona.

Edição feita por: lahlahbarros, 13/08/2006, 00:41.


#4 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 29/07/2006, 13:28

uai, como isso -> /r/n, não seria \r\n ?

esse \r\n e adicionado pelo ENTER que o usuário da num campo TEXTAREA. Assim, quando for exibir com 'quebra de linha' use a função NL2BR(), ou use a função STR_REPLACE() para substituir todos os \r\n

um Exemplo que fiz com NL2BR(), ADDSLASHES() E STRIPSLASHES()
<?php

$Texto = "Óla, \r\n isso e apenas um teste \r\n =)";
$Formt = addslashes($Texto);
echo $Formt."<br /><br />";
echo "<hr />";
echo nl2br(stripslashes($Formt));

?>

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#5 lanlan

lanlan

    12 Horas

  • Usuários
  • 180 posts
  • Sexo:Não informado
  • Localidade:Teresina
  • Interesses:design, php, photoshop. ;} webdesign em geral!

Posted 30/07/2006, 14:23

uai, como isso -> /r/n, não seria \r\n ?

esse \r\n e adicionado pelo ENTER que o usuário da num campo TEXTAREA. Assim, quando for exibir com 'quebra de linha' use a função NL2BR(), ou use a função STR_REPLACE() para substituir todos os \r\n

um Exemplo que fiz com NL2BR(), ADDSLASHES() E STRIPSLASHES()

<?php

$Texto = "Óla, \r\n isso e apenas um teste \r\n =)";
$Formt = addslashes($Texto);
echo $Formt."<br /><br />";
echo "<hr />";
echo nl2br(stripslashes($Formt));

?>

T+



Não funciona, não adianta. ;/
Já tentei 557 funções dos comentários do php.net, já tentei o nl2br, mais nada.
Eu vou enlouquecer com isso.

Olha como aparecem os dados usando:

echo nl2br("$comentario");

Dados:

noussa como ficou legal agora -~~\r\n\r\neu tava tentando fazer tpw esse sistema, mas naum consegui =X\r\n\r\nchora descontroladamente\r\n\r\nAbraço o//

#6 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 30/07/2006, 14:53

use a função STR_REPLACE(), ai tudo que for \r\n você substitui por <br />

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#7 lanlan

lanlan

    12 Horas

  • Usuários
  • 180 posts
  • Sexo:Não informado
  • Localidade:Teresina
  • Interesses:design, php, photoshop. ;} webdesign em geral!

Posted 13/08/2006, 00:42

Não funciona. :(
Nada funciona. ;~
Será alguma configuração do servidor?
Já tentei de tudo.
Mas, continuam os \r\n aparecendo no lugar da quebra.

#8 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 13/08/2006, 09:34

configuração no servidor eu acredito que não é...

da um ECHO no valor que retorna da função anti_injection para ver o que realmente retorna, depois da outro ECHO ( se estiver aparecendo \r\n ) só que usando a função que lhe passeiSTR_REPLACE() no valor que retorna da função anti_injection

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#9 lanlan

lanlan

    12 Horas

  • Usuários
  • 180 posts
  • Sexo:Não informado
  • Localidade:Teresina
  • Interesses:design, php, photoshop. ;} webdesign em geral!

Posted 13/08/2006, 14:33

Eu fiz o que você disse.
O valor retornado no echo da anti_injection tem os r\n\.
Então eu devo usar a str replace antes de inserir na tabela é isso?
Porque a anti_injection só é usada na hora de inserir na tabela e não na hora de imprimir.

#10 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 13/08/2006, 15:44

não, você só usa a função STR_REPLACE() quando FOR EXIBIR os dados!

Assim, como a função NL2BR() ;)

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#11 lanlan

lanlan

    12 Horas

  • Usuários
  • 180 posts
  • Sexo:Não informado
  • Localidade:Teresina
  • Interesses:design, php, photoshop. ;} webdesign em geral!

Posted 13/08/2006, 15:49

Então, deixa eu ver se eu entendi:

// FUNÇÃO DE STR REPLACE
function quebra($text, $replacement = '<br />')
{
return preg_replace("((\r\n)+)", trim($replacement), $text);
}

// WHILE DE QUERY QUE EU QUERO QUEBRAS AS LINHAS

while($row=mysql_fetch_array($query)){
$bio = $row["bio"];

// ECHO PARA EXIBIR OS DADOS COM A QUEBRA

echo nl2br(quebra($bio));


Porque usando só uma das duas não funciona. :(


EDIT:

Não funciona. Você teria alguma função de str replace que faça isso?
Porque todas que eu tento não dão certo.

Edição feita por: lahlahbarros, 13/08/2006, 15:59.


#12 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 13/08/2006, 16:49

porque você ta usando aquela função quebra() ?
não entendi...

abre o phpmyadmin ae e ve como ta gravado a informação!
depois não USE NENHUM FUNÇÃO! apenas a função NL2BR()

se não funcionar, use no lugar da função NL2BR() a função STR_REPLACE()

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#13 lanlan

lanlan

    12 Horas

  • Usuários
  • 180 posts
  • Sexo:Não informado
  • Localidade:Teresina
  • Interesses:design, php, photoshop. ;} webdesign em geral!

Posted 13/08/2006, 18:36

Ok, eu vou enlouquecer.
Tentei apenas com o nl2br e NADA.
Tentei com o str replace assim:

echo str_replace("\r\n", "<br>", $comentario);

e NADA. O que diabos as minhas querys têm que não mudam os \r\n por <br>?

:(

#14 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 15/08/2006, 07:17

tem a função PREG_REPLACE()

mas, cara estranho isso, já era pra ter FUNCIONANDO!

tem como você nós passar o código inteiro que você grava e exibe ?
somente estes 2.

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#15 PoSiTiVe_WaVe

PoSiTiVe_WaVe

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Masculino

Posted 02/02/2007, 10:23

Valew galera, matei um leão com esse tópico....
[]'s




1 user(s) are reading this topic

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

IPB Skin By Virteq