Ir para conteúdo

Arquivado

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

mamotinho

textarea não esta enviando palavra acentuada ao POST

Recommended Posts

Olá pessoal queria a ajuda de vocês si pode min ajuda ficarei grato já tentei arrumar mais ta min dando dor de cabeça

só vou especificar o que eu já tentei fazer:

já tenho o header("Content-Type: text/html; charset=utf-8",true) ; no conf,php e também na página da programação , também já tentei muda o charset para iso-8859-1 e não deu em nada.

 

o campo do texto que quero coloca já tentei coloca como type=INPUT e TEXTAREA que esta atualmente.

 

utilizo a função anti_injection($_POST) mais ela não tem nenhuma restrinção contra palavras acentuadas veja abaixo.

MINHA FUNÇÃO BASICA DE INJECT

function anti_injection($sql, $formUse = true)	
{	
$sql = preg_replace("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/i","",$sql);	
$sql = trim($sql);
$sql = strip_tags($sql);	

$sql = addslashes($sql);	
return $sql;	
}	
function clean_variable($var)
{
	$newvar = preg_replace('/[^a-zA-Z0-9\_\-\@\ \!\>\<\#\$\%\^\.\+\-\&\*\(\)\`\:\.\}\{\]\[]/', '', $var);
	return $newvar;
}
$_REQUEST = clean_variable($_REQUEST);
$_POST = clean_variable($_POST);
$_GET = clean_variable($_GET);
$_COOKIE = clean_variable($_COOKIE);
$_SESSION = clean_variable($_SESSION);
$badwords = array(";","'", "+", "--","/","|",":", "=", "%", "(", ")","DROP", "SELECT", "UPDATE", "DELETE", "drop", "select", "update", "delete", "WHERE", "where", "-1", "-2", "-3","-4", "-5", "-6", "-7", "-8", "-9",);

é estranho nunca tinha aconteçido isso pra min, bom eu tou criando um sistema , para SQL SERVER, eu queria que pelo menos as palavras acentuadas fosse para o $_POST coisa que não esta indo observer a imagem abaixo. a restrinção informar que o campo requer a quantidade de palavras , então é uma conclusão de que as palavras acentuadas não estão sendo enviadas.

9HngbVn.png


Bom eu queria que resolver esse problema pois criei uma string para pega essas palavras e substituir pelo codigo formatado para iso-8859-1 veja abaixo a string:

$texto_format = array(
" " => " ",
"ã" => "ã",
"é" => "é",
"è" => "è",
"ç" => "ç",
"â" => "â",
"í" => "í",
"ì" => "ì",
"ê" => "ê",
"î" => "î",
"ú" => "ú",
"ù" => "ù",
"û"  => "û",
"ô" => "ô",
"õ" => "õ",
"ó" => "ó",
"ò" => "ò",
"&" => "&",
">" => ">",
"<" => "<",
"°" => "°");

Aqui abaixo é a parte do <form> veja como esta :

<form action="_userPanel/up.atvConta.php?write=true" method="post" name="registro" id="register_form" class="submission small style">

  <div style="width:100%;">
   <table border="0" width="704" cellpadding="0" cellspacing="0">
   <tr>
   <td height="50">
   <div class="content" style="display: block;">
   <div class="title">Sistema MegaFone</div>
    <div class="box-main">
        <div style="background: rgba(0,0,0,0.7);width:98%;padding:5px;margin:0px 0px 5px 2px;border-radius:4px;">
            <div style="float:left;">
            <font color="red">*</font>
             É Necessario te no minimo 1,000 T-Point na conta.      <br />
             <font color="red">*</font>
             O Sistema só funciona com usuários ativos.
             <br />
             <font color="red">*</font>
             O Tempo de Anúncio é de 1 Hora.
             <br />
             <font color="red">*</font>
            você poderá anúncia somente si o tempo de anúncio do jogador já tiver expirado
            <br />
           
            <div class="clear"></div>
        </div><br /><br /><br /><br /><br />
        
        <fieldset>
            <legend>

                Digite seu anúncio baixo.

            </legend>
            <div class="stats_change_reset_result">
                <div style="text-align:center;">
                <textarea maxlength="30" name="MaxAnuncio" style="width:100%; height:32px;"></textarea> <br /><br />
      <!--ESCOLHER CHAR-->
	  Anúncie com:<br>
	  <select name="MxIdxChar">
      <?php
					$searchChar  = mssql_query("SELECT * FROM ".DB_GAM.".dbo.cabal_character_table WHERE CharacterIdx/8='".$IdxAcc."'");
					while($rows=mssql_fetch_object($searchChar)){
						$calcPK		=     $rows->PKPenalty;
						echo '<option value="'.$rows->CharacterIdx . '"';
						
						echo '>'.$rows->Name.'
						</option>';
					}
				?>
</select>
      <!--END-->          
                 
                <input type="hidden" value="65d1qwaws" name="SerialKey" />
                </div>
            </div>
        </fieldset>
        
        <div class="flabel" style="text-align: center; float:right; margin-top:12px;">
<input name="txtMegafone" id="register_submit" width="250" style="height:30px;width:120px;cusor:pointer;" type="button" value="Publica" onclick="new Ajax.Updater('checar', '_userPanel/up.MegaFone.php?write=true', {method: 'post', asynchronous:true, parameters:Form.serialize(document.registro)}); esperar('checar');">

</div>
    </div>
   </td>
   
   </tr>
   </table>
</div>

</form>

AQUI ABAIXO É A PARTE DA CHAMADA DO FORM

include('_funcUserPanel/funcDados.php');
date_default_timezone_set('America/Sao_Paulo');

 if($_POST['txtMegafone'])
 {
 if($_GET['write'] == true){ 
 if(preg_match("/[^0-9a-zA-Z]/i", $_GET['write']))
    echo"<meta http-equiv=refresh content=\"1;URL=../index.php\">";
 } 
	
   $MaxAnuncio = anti_injection($_POST['MaxAnuncio']);
   $SerialKey  = anti_injection($_POST['SerialKey']);
   $MxIdxChar  = anti_injection($_POST['MxIdxChar']); 

por favor min ajude caso quera entra em contato comigo , adiciona skype: live:luis_mamot e caso o fórum não permite contatos nós post edite e retire e pesso desculpas não tive tempo de lê as regras , mais irei :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o Adriano disse, teste retirar a função anti_injection e veja se funciona.

Se funcionar, atualize a função anti_injection para mysql_real_escape_string, é mais seguro, já que esse método ja foi depreciado

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu já retirei o anti_injection , já até retirei do config.php pra ver mais sempre não vai

vqZrjC2.png


Olá pessoal eu consegui enviar e descobrir que o problema é a function anti_injection que eu tenho. então poderia alguem min ajuda a proteger meu campo textarea de outra forma que a função não retire as palavras acentuadas;

function anti_injection($sql, $formUse = true)	
{	
$sql = preg_replace("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/i","",$sql);	
$sql = trim($sql);
$sql = strip_tags($sql);	

$sql = addslashes($sql);	
return $sql;	
}	

function clean_variable($var)
{
	$newvar = preg_replace('/[^a-zA-Z0-9\_\-\@\ \!\>\<\#\$\%\^\.\+\-\&\*\(\)\`\:\.\}\{\]\[]/', '', $var);
	return $newvar;
}
$_REQUEST = clean_variable($_REQUEST);
$_POST = clean_variable($_POST);
$_GET = clean_variable($_GET);
$_COOKIE = clean_variable($_COOKIE);
$_SESSION = clean_variable($_SESSION);
$badwords = array(";","'", "+", "--","/","|",":", "=", "%", "(", ")","DROP", "SELECT", "UPDATE", "DELETE", "drop", "select", "update", "delete", "WHERE", "where", "-1", "-2", "-3","-4", "-5", "-6", "-7", "-8", "-9",);

Outra coisa o a função "strlen" também da problema quando eu adiciono ele , então ele também era o problema , si alguém pude min arrumar uma function boa para eu implanta nesse sistema ai para eu fica protegido fico grato. pois já que as minhas funções ta tirando os acento nem é legal ter.

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.