jango 0 Denunciar post Postado Dezembro 8, 2010 Oe, bom dia. estou fazendo um cadastro de arquivos e um dos campos é a localização, estou tentando inserir o caminho do arquivo por exemplo "C:/Pasta1/Pasta2" só que na hora de inserir no BD ta tirando as barras e juntando o nome "C:Pasta1Pasta2" :/ alguem poderia me dizer o porque ou me passar alguma função de 'escape'? valeu. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 8, 2010 poste seu script (apenas o trecho que apresenta problema) Compartilhar este post Link para o post Compartilhar em outros sites
jango 0 Denunciar post Postado Dezembro 8, 2010 humm, agora percebi uma coisa, na verdade eu me confundi, o que nao esta inserindo é barra INVERTIDA \ (sempre confundo) é pq eu tava copiando o caminho da pasta onde as barras sao invertidas na hora do insert ele retira as barras invertidas. to tentando usar srt_replace pra trocar "\" por "/" mas nao esta funcionando parece que nao aceita isso "\" O codigo ta normal: $tipo=$_POST['tipo']; $autor=$_POST['autor']; $nomearq=$_POST['nomearq']; $dt_criacao=$_POST['dtcri']; $local=$_POST['local']; // e depois insert $DB_SQL1=mysql_query("INSERT INTO tb_arquivos VALUES ('','$tipo','$autor','$nomearq','$dt_criacao','local')"; Compartilhar este post Link para o post Compartilhar em outros sites
Leozitho 81 Denunciar post Postado Dezembro 8, 2010 A barra invertida é um caractere de escape no PHP, para que este caractere seja interpretado literalmente pelo PHP use duas barras invertidas, dessa forma: F:\\xampp\\htdocs\\ Compartilhar este post Link para o post Compartilhar em outros sites
jango 0 Denunciar post Postado Dezembro 8, 2010 aee deu certo!! era isso msm precisava de \\ duas barras invertidas! valeu pela ajuda :D Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Knijnik 0 Denunciar post Postado Dezembro 8, 2010 humm, agora percebi uma coisa, na verdade eu me confundi, o que nao esta inserindo é barra INVERTIDA \ (sempre confundo) é pq eu tava copiando o caminho da pasta onde as barras sao invertidas na hora do insert ele retira as barras invertidas. to tentando usar srt_replace pra trocar "\" por "/" mas nao esta funcionando parece que nao aceita isso "\" O codigo ta normal: $tipo=$_POST['tipo']; $autor=$_POST['autor']; $nomearq=$_POST['nomearq']; $dt_criacao=$_POST['dtcri']; $local=$_POST['local']; // e depois insert $DB_SQL1=mysql_query("INSERT INTO tb_arquivos VALUES ('','$tipo','$autor','$nomearq','$dt_criacao','local')"; Agora fica mais fácil de te ajudar :P . Como o Leozitho disse, a barra invertida não seria processada pelo PHP por ser um caractere de escape. Você pode escrever manualmente com duas barras invertidas ou usar a função addslashes, que adiciona uma barra invertida em frente de caracteres de escape, como ', " e \ Além disso, magic_quotes_gpc deve estar definido como Off no php.ini, o que é estranho, já que por padrão vem On (acho). Caso estivesse On, ele faria o addslashes() automaticamente em variáveis $_POST, $_GET e $_COOKIE. Mais infomações no Manual do PHP: http://php.net/manual/en/security.magicquotes.php Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 8, 2010 Além disso, magic_quotes_gpc deve estar definido como Off no php.ini, o que é estranho, já que por padrão vem On (acho). Caso estivesse On, ele faria o addslashes() automaticamente em variáveis $_POST, $_GET e $_COOKIE. Mais infomações no Manual do PHP: http://php.net/manual/en/security.magicquotes.php O padrão é off desde o PHP 4.2.0 se não me falha a memória (mudou junto com register_globals) Segundo o próprio link que você postou, não há razões para usar magic_quotes: http://br2.php.net/manual/en/security.magicquotes.why.php Mantenha sempre em off :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Knijnik 0 Denunciar post Postado Dezembro 8, 2010 O padrão é off desde o PHP 4.2.0 se não me falha a memória (mudou junto com register_globals) Segundo o próprio link que você postou, não há razões para usar magic_quotes: http://br2.php.net/manual/en/security.magicquotes.why.php Mantenha sempre em off :thumbsup: Sim, você está certo, mas então realizei um teste simples: mandei uma variável pelo método POST e mandei dar um echo na variável. Automaticamente um \ foi inserido na frente de um áspas que enviei. Por que isso acontece, sendo que o magic_quotes tá OFF? (não é ele que faria essa função?) Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 8, 2010 teste bem jaguara: echo "<pre>"; print_r( $_POST ); echo "</pre>"; ?> <form method="post" action=""> <input type="text" name="oi" /> <input type="submit" /> </form> Texto inserido: "oi'blá\ saída: Array ( [oi] => "oi'blá\ ) nenhuma barra a mais você deve estar com magic_quotes_gpc on insira isto antes do echo: echo ini_get( 'magic_quotes_gpc' ); o que aparece? Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Knijnik 0 Denunciar post Postado Dezembro 8, 2010 Retorna 1, o que é estranho pois em meu php.ini tá assim: ; Magic quotes for incoming GET/POST/Cookie data. magic_quotes_gpc = Off Agora tou confuso...rs Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 8, 2010 verifique se não há mais de um php.ini em seu sistema de arquivos verifique o valor de "Loaded Configuration File ", no seu phpinfo(). Ele quem diz qual é o php.ini carregado Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Knijnik 0 Denunciar post Postado Dezembro 8, 2010 Verifiquei o loaded file e aponta para onde eu estou editando... :huh: :P Compartilhar este post Link para o post Compartilhar em outros sites