tamires 0 Denunciar post Postado Junho 28, 2007 ola! estou querendo montar um script para criar thumbs... ainda to no começo, nem cheguei nessa parte por que to com um problema com a função copy. uso esse script a meses, sempre deu certo, nao funciona de jeito nenhum! pior q tá td certinho, comparei c outros q já fiz e tá funcionando...ja renomeei ate os nomes dos campos no banco, alterei a permissão da pasta, mas nem copiar o arquivo está copiando. segue os códigos: upload e cadastro no banco if(isset($_POST["imggd"])) {$copied = copy($imggd, 'imgs/' . $imggd_name);}if($copied) {$filePath2DB = 'imgs/' . $imggd_name;}if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { $insertSQL = sprintf("INSERT INTO teste_thumb (nome_img, imagem) VALUES (%s, %s)", GetSQLValueString($_POST['textfield'], "text"), GetSQLValueString($filePath2DB, "text")); mysql_select_db($database_teste_mh, $teste_mh); $Result1 = mysql_query($insertSQL, $teste_mh) or die(mysql_error()); form <form action="<?php echo $editFormAction; ?>" method="POST" enctype="multipart/form-data" name="form1" id="form1"> <input type="text" name="textfield" id="textfield" /> <input type="file" name="imggd" id="imggd" /> <input type="submit" name="Submit" value="Submit" /> <input type="hidden" name="MM_insert" value="form1"></form> ah, esqueci de comentar que o campo "textfield", que seria a legenda q entraria junto com a imagem, tá cadastrando normalmente, o banco está criando a id...mas a imagem não vai. aguardo respostas grata Tamires Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Junho 28, 2007 descobri o problema mas isso me trouxe outro problema...dpis de horas, vi que meu register_globals estava setado como "off", coloquei ele com essa configuração após receber várias recomendações e ler várias coisas sobre medidas de segurança e tal.só que acabei de descobrir que esse meu script de upload só funciona com ele setado como "on".que alteracão devo fazer pra ele funcionar em "off"?aguardo respostasgratatamires Compartilhar este post Link para o post Compartilhar em outros sites
slipce 0 Denunciar post Postado Junho 28, 2007 Como você está enviando o formulário via POST você terá que recuperar as variaveis via $_POST["nome_campo_formulário"].Para arquivos você deve usar $_FILE["nome_campo_formulário"]Se o seu formulário fosse enviado via GET você teri que usar $_GET["nome_campo_formulario"]. Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Junho 28, 2007 ola! sabe o q eh estranho? ja tnha tentado assim diversas vezes: if(isset($_POST['imggd'])) {$copied = copy($imggd, 'imgs/' . $imggd_name);}if($copied) {$filePath2DB = 'imgs/' . $imggd_name;}e n funciono.... agora acabei de colocar o register globals em off e usei o $_POST e tentei c $_FILES tb, e nada! Compartilhar este post Link para o post Compartilhar em outros sites
slipce 0 Denunciar post Postado Junho 28, 2007 Da onde tá vindo essa variavel $imggd_name? Onde você está usando $_FILES['imggd'] ? Por acaso não era pra você atribuir o valor de uma para a outra ? OBS é $_FILES["imggd"] e não $_POST Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Junho 28, 2007 funciona assim: na pagina insert.php, tenho esse form: <form action="<?php echo $editFormAction; ?>" method="POST" enctype="multipart/form-data" name="form1" id="form1"> <input type="text" name="titulo" id="titulo" /> <input type="file" name="imggd" id="imggd" /> <input type="submit" name="Submit" value="Submit" /> <input type="hidden" name="MM_insert" value="form1"></form> quando dou o submit, ele processa isso aqui na mesma pagina, grava td no banco e copia o arkivo, e dpis volta pra gal;eria de imagens //uploadif(isset($_POST["imggd"])) { //olha o $_POST aqui aonde n funciona..$copied = copy($imggd, 'imgs/' . $imggd_name);}if($copied) {$filePath2DB = 'imgs/' . $imggd_name;}//grava no bancoif ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { $insertSQL = sprintf("INSERT INTO teste_thumb (nome_img, imggd) VALUES (%s, %s)", GetSQLValueString($_POST['titulo'], "text"),//olha o $_POST aqui de novo...e esse funciona, grava certinho! GetSQLValueString($filePath2DB, "text")); mysql_select_db($database_teste_mh, $teste_mh); $Result1 = mysql_query($insertSQL, $teste_mh) or die(mysql_error()); $insertGoTo = "gallery.php"; if (isset($_SERVER['QUERY_STRING'])) { $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?"; $insertGoTo .= $_SERVER['QUERY_STRING']; } header(sprintf("Location: %s", $insertGoTo));} o estranho é que pra testar o problema, tentei fazer um upload num site q fiz a uns 3 meses, e não funciono quando o register_globals estava em off! ai coloquei on e funciono...o codigo ta igualzinho nesse outro site. n faz sentido... sera que o problema é o $_POST ou o copy? Compartilhar este post Link para o post Compartilhar em outros sites
slipce 0 Denunciar post Postado Junho 28, 2007 Vamos lá de novo....Primeirotype="file" name="imggd" <--- type file tem que ser capturado como $_FILES["imggd"]( retorna um Array );Aqui ele não reconhecerá essas variaveis pq register_globals ta off$imggd <--Não terá nenhum valor pq você não atribuiu nada pra ele$imggd_name <-- idem$copied = copy($imggd, 'imgs/' . $imggd_name);Entendeu? Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Junho 28, 2007 entendi....tentei assim: $imggd = isset($_FILES["imggd"]) ? $_FILES["imggd"] : "";if(isset($imggd)) {$copied = copy($imggd, 'imgs/' . $imggd_name);}if($copied) {$filePath2DB = 'imgs/' . $imggd_name;} so q não funciono também...:/ não soube o que fazer com $imggd_name pq pelo que sei, ele pega o nome do arquivo sem o resto do endereço, tentei isso: $imggd = isset($_FILES["imggd"]) ? $_FILES["imggd"] : "";if(isset($imggd)) {$copied = copy($imggd, 'imgs/' . $imggd);}if($copied) {$filePath2DB = 'imgs/' . $imggd;} e isso $imggd = isset($_FILES["imggd"]) ? $_FILES["imggd"] : "";$imggd_name = isset($_FILES["imggd"]) ? $_FILES["imggd"] : "";if(isset($imggd)) {$copied = copy($imggd, 'imgs/' . $imggd_name);}if($copied) {$filePath2DB = 'imgs/' . $imggd_name;} mas nada :/ deu na mesma... Compartilhar este post Link para o post Compartilhar em outros sites
slipce 0 Denunciar post Postado Junho 28, 2007 Então Tamires é como eu já havia citado $_FILES devolve um Array, voce tem que pegar o nome do arquivo veja: $imggd mostrará Array$imggd["name"] mostrará o nome do arquivo Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Junho 28, 2007 sim, acabei de pegar uma explicação detalhada sobre isso no php.net, agora tentei isso: $imggd = isset($_FILES["imggd"]) ? $_FILES["imggd"] : "";$imggdn = isset($_FILES["imggd"]["name"]) ? $_FILES["imggd"]["name"] : "";if(isset($imggd)) {$copied = copy($imggd, 'imgs/' . $imggdn);}if($copied) {$filePath2DB = 'imgs/' . $imggdn;} pelo que entendi, agora a logica está certa, mas não funcionou.... depois fiz isso: if(isset($_FILES["imggd"])) {$copy = copy($_FILES["imggd"], 'imgs/' . $_FILES["imggd"]["name"]);}$imgcompleta = 'imgs/' . $_FILES["imggd"]["name"];if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { $insertSQL = sprintf("INSERT INTO teste_thumb (nome_img, imggd) VALUES (%s, %s)", GetSQLValueString($_POST['titulo'], "text"), GetSQLValueString($imgcompleta, "text")); mysql_select_db($database_teste_mh, $teste_mh); $Result1 = mysql_query($insertSQL, $teste_mh) or die(mysql_error()); funciono em parte. ele está mandando o nome pro banco corretamente, com a pesta certa e td, mas não copia! Compartilhar este post Link para o post Compartilhar em outros sites
slipce 0 Denunciar post Postado Junho 28, 2007 Voce continua mandando um array na Srting origem da função copy, seu programa está funcionando em parte porque você só arrumou uma parte dele. copy( string origem, string destino );$copy = copy($_FILES["imggd"], 'imgs/' . $_FILES["imggd"]["name"]);}o primeiro parametro continua sendo um Arraytente assim:if(isset($_FILES["imggd"])) $copy = copy( $_FILES["imggd"]["name"], 'imgs/' . $_FILES["imggd"]["name"] );obs if para apenas uma linha pode ter suas } ocultadas Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Junho 28, 2007 entendi eu não posso mandar isso como origem:$_FILES["imggd"]so q ai ele n enviaria so o nome do arquivo?tentei fazer isso q você disse if(isset($_FILES["imggd"]))$copy = copy( $_FILES["imggd"]["name"], 'imgs/' . $_FILES["imggd"]["name"] );mas nd :/ Compartilhar este post Link para o post Compartilhar em outros sites
slipce 0 Denunciar post Postado Junho 28, 2007 Nunca mexi com uploads, mas olhando em um tutorial na net http://www.criarweb.com/artigos/171.php percebi que para alocar o arquivo é usada a função move_uploaded_file não ví essa função no seus scripts, ela é que determina o local onde o arquivo ficará $HTTP_POST_FILES creio que é igual ao $_FILE pelo que eu vi no arquivo ficaria assim no lugar do copy: move_uploaded_file($_FILES['imggd']['tmp_name'], 'imgs/' . $_FILES["imggd"]["name"] ); Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Junho 28, 2007 aeeee funciono, funciono :)valeu mesmo pela ajuda e pela paciência, hehe. =o)td isso pq eu n tinha desligado o register_globals antes! ai tava fazendo td diferente :/ funcionava mas é melhor deixa-lo desligado...msm pq no php6 nao vai ter mais!abs! Compartilhar este post Link para o post Compartilhar em outros sites
slipce 0 Denunciar post Postado Junho 28, 2007 AAAAllleeeuuuiiiaaa Irmão, viu não é tão difícil, só um pouco de pesquisa e, no final das contas eu acabei aprendendo a fazer um upload também( nunca tinha feito nada relacionado a isso ). Compartilhar este post Link para o post Compartilhar em outros sites