Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola,quando o safe_mode está habilitado, geralmente não é possivel fazer upload de arquivo porque a funcao copy() é bloqueada e a função move_uploaded_file() fica restrita a uin do usuario que executa o php, e se nao for bem configurado no servidor, quem executa tem um usuario e os arquivos e pastas tem outro.http://www.php.net/manual/pt_BR/function.m...loaded-file.php
Nota: Quando o safe-mode está ativo, o PHP verifica se o(s) arquivo(s) e/ou diretório(s) que serão afetados por esta operação tem o mesmo UID (proprietário) do script que está sendo executado.
Mas com esse code, é possivel fazer upload de arquivos mesmo com safe_mode=ON e sendo outro usuario que é o dono da pasta, pois ele usa fopen(), fread(), file_get_contents(),fwrite() e tals. Digamos que uma gambiarra.upload.php<?//Free Software//Voce pode alterar, adicionar, deletar ou que quiser(0o) com o source-code//soh se lembre que isto não lhe fará o autor do code hehehe//se for usar em algo, poe uma citação minha, =p~//$id = author: Luis luisfernando_o_22@hotmail.com// Code pra upar arquivos mesmo com safemode=ON, testado em uma maquina windows e uma linux// as duas com safe_mode=ON e funcionou 100%// ta com algumas linhas amais que poderiam ser descastadas...$path = "./upload"; //sete seu caminho de uploads aqui//if (empty($_FILES['archive']['tmp_name'])) return_msg("[-]", "Arquivo não pode ser upado!");$txt_extencion_array = array("txt","php","asp","pl","cgi","c","cpp","jsp","cfm","bat","htm","html","sql","cvs","css");$bin_extencion_array = array("exe","","com","elf","avi","mpg","gif","jpg","jpeg","png","bmp","swf","doc","pdf","mp3"); //o vazio é para elfs linux que geralmente nao tem extencao. adiciona ai$file_uploaded_name = $_FILES['archive']['name'];$file_uploaded_size = $_FILES['archive']['size'];$file_uploaded_tmp_name = $_FILES['archive']['tmp_name'];$file_uploaded_extencion = end(explode(".",$file_uploaded_name));$safemode = ini_get('safe_mode');if($safemode == 1){ return_msg("[!]","Sistema com safe_mode! Mas não se preocupe, isso não será mais um problema..."); //agora que são elas, LoL... if(in_array($file_uploaded_extencion,$txt_extencion_array)){ //eH um arquivo plain/text $file_uploaded_txt_content = file_get_contents($file_uploaded_tmp_name); if(file_exists($path."/".$file_uploaded_name) && !is_writable($path."/".$file_uploaded_name)) return_msg("[-]","Você não tem permissão para gerar um arquivo no servidor!<br>Verifique se a pasta especificada no source-code está com as devidas permissoes."); //ele verifica se existe e se pode sobreescreve-lo if(!$file_id = fopen($path."/".$file_uploaded_name, 'w')) return_msg("[-]","Erro ao tentar criar o arquivo."); if(!fwrite($file_id, $file_uploaded_txt_content)) return_msg("[-]","Erro ao tentar escrever no arquivo."); return_msg("[+]","Upload de arquivo plain/text realizado com sucesso!"); fclose($file_id); } if(in_array($file_uploaded_extencion,$bin_extencion_array)){ //eH um arquivo binario/executavel $file_bin_id = fopen($file_uploaded_tmp_name, 'rb'); $file_uploaded_bin_content = fread($file_bin_id, $file_uploaded_size); if(file_exists($path."/".$file_uploaded_name) && !is_writable($path."/".$file_uploaded_name)) return_msg("[-]","Você não tem permissão para gerar um arquivo no servidor!<br>Verifique se a pasta especificada no source-code está com as devidas permissoes."); //ele verifica se existe e se pode sobreescreve-lo if(!$file_id = fopen($path."/".$file_uploaded_name, 'w')) return_msg("[-]","Erro ao tentar criar o arquivo."); if(!fwrite($file_id, $file_uploaded_bin_content)) return_msg("[-]","Erro ao tentar escrever no arquivo."); return_msg("[+]","Upload de arquivo binario/executavel realizado com sucesso!"); fclose($file_id); }}else{ return_msg("[!]","Sistema sem safe_mode!"); if(!(move_uploaded_file($file_uploaded_tmp_name, $path."/".$file_uploaded_name))) return_msg("[-]","Erro no upload do arquivo!"); return_msg("[+]","Upload de arquivo realizado com sucesso!");}function return_msg($param1,$param2){ switch($param1){ case "[!]" : echo "<center><h3><tt><font color=red>[!]</font><font color=black> $param2</tt></h3></font></center>\n";break; case "[+]" : echo "<center><h3><tt><font color=red>[+]</font><font color=black> $param2</tt></h3></font></center>\n";break; case "[-]" : die("<center><h3><tt><font color=red>[-]</font><font color=black> $param2</tt></h3></font></center>\n");break; }}?>E pra testar:upload.htm<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""[http://www.w3.org/TR/html4/loose.dtd">Untitled](http://www.w3.org/TR/html4/loose.dtd) Document</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body bgcolor="#ffffff" text="#000000" link="#0000cc" vlink="551a8b" alink="#ff0000"><table width="100%" border=0 cellspacing=0 cellpadding=1><tr bgcolor=#ffffff><td> <div align="center"><tT></tT></div> <h3 align="center"><font color="#FF0000">[!]</font> Upload</font> </h3> <form name="form2" method="post" action="upload.php" enctype="multipart/form-data"> <div align="center"> <table width="31%" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC"> <tr> <td><div align="right">Arquivo: </div></td> <td> <input type="file" name="archive"> </td> </tr> <tr> <td> </td> <td> <input type="submit" name="Submit" value="Submit"> </td> </tr> </table> </div> </form></body></html>Um forte abraço, caso tenha algum pal, algum errinho, ou sei la o que,pode falar ai... nada eh 100% hehe[]sluis fernandoputz cara .. código muito útil mesmo, agora estou enfrentando um probleminha aqui ...
estou em uma estação com Win2K Professional com um único usuário com permissão de Admin, copiei exatamente os scripts que vê põs aqui, e para não dizer que não mudei nada, só mudei o nome do arquivo .php de upload.php para uploadFiles.php.
o arquivo abriu beleza, só que quando eu dou submit no form2 do arquivo upload.htm el me retorna a mensagem:
[!] Sistema sem safe_mode!
[-] Erro no upload do arquivo!
agradeço pelo script, e gostaria de saber o que é que pode estar acontecendo, se eu preciso mudar alguma coisa no php.ini já que o rapaz aqui acima deste post disse que funcionou perfeitamente!
abraço
----------------------------------------------------------------------------------------------------
data: 30.dez.2005
pode deixar, consegui resolver .. só é criar o diretório que está definido na variável $path
valeu aí luis-restart .. funcionou sem problemas aqui! :natalw00t: :nataltongue:
desculpa man... estou de ferias (isso significa, longe do pc hehehehe) hj que eu li sua mp 11/01/05 eheheh...(ainda bem que voce se virou hehehe =D )[]sluis fernando
Muito obrigado pela iniciativa brother.. foi o melhor script que eu vi de upload ate agora... ta de parabens!!!Brigadao pela ajuda
Me ajuda plz!!!eu to a muito tempo ja tentando faer um upload em php...tenho varios exemplos arquivados na maquina...mas nenhum totalmente eficiente!!!eu achei que o seu seria uma boa opcao ...eu nao sei mexer direito em php... to comecando agora...!!!bom.. esse codigo que você postou ele nao funciona sozinho certo??precisa de um .html pra mandar os parametros ??po eu criei uma pasta dentro de wwwroot/teste e dentro dela botei esse codigo...é assim que funciona???brigado!!!
Seu código está bom d+ So que to precisando de uma ajudinha de alguém, quero interagir com Banco de Dados Mysql e já ta funcionando só que no banco está aparecendo para mim o nome da foto beleza, só que local "endereço path" está aparecendo o seguinte:ExemploNome da foto: teste.jpg Banco de dados:Cod | Arquivo | descricao |1 | teste.jpg | /tmp/phppojqhO |A descrição é o local onde fica a foto! soh que tá errado.. tá aparecendo tmp.. sendo que era para aparecer $path = "./upload"; //sete seu caminho de uploads aquio caminho da pasta que eu coloquei!Alguem pode me da um LUZ ."AJUDA"
> <?include "../../config/affira_conexao.php";$path = "./upload"; //sete seu caminho de uploads aqui//if (empty($_FILES['archive']['tmp_name'])) return_msg("[-]", "Arquivo não pode ser upado!");$txt_extencion_array = array("txt","php","asp","pl","cgi","c","cpp","jsp","cfm","bat","htm","html","sql","cvs","css");$bin_extencion_array = array("exe","","com","elf","avi","mpg","gif","jpg","jpeg","png","bmp","swf","doc","pdf","mp3"); //o vazio é para elfs linux que geralmente nao tem extencao. adiciona ai$file_uploaded_name = $_FILES['archive']['name'];$file_uploaded_size = $_FILES['archive']['size'];$file_uploaded_tmp_name = $_FILES['archive']['tmp_name'];$file_uploaded_extencion = end(explode(".",$file_uploaded_name));$safemode = ini_get('safe_mode');if($safemode == 1){return_msg("[!]","Sistema com safe_mode! Mas não se preocupe, isso não será mais um problema...");//agora que são elas, LoL...if(in_array($file_uploaded_extencion,$txt_extencion_array)){ //eH um arquivo plain/text $file_uploaded_txt_content = file_get_contents($file_uploaded_tmp_name); if(file_exists($path."/".$file_uploaded_name) && !is_writable($path."/".$file_uploaded_name)) return_msg("[-]","Você não tem permissão para gerar um arquivo no servidor!<br>Verifique se a pasta especificada no source-code está com as devidas permissoes."); //ele verifica se existe e se pode sobreescreve-lo if(!$file_id = fopen($path."/".$file_uploaded_name, 'w')) return_msg("[-]","Erro ao tentar criar o arquivo."); if(!fwrite($file_id, $file_uploaded_txt_content)) return_msg("[-]","Erro ao tentar escrever no arquivo."); return_msg("[+]","Upload de arquivo plain/text realizado com sucesso!"); fclose($file_id); $query = "INSERT INTO upload (cod,arquivo,descricao) values (\"\",\"$file_uploaded_name\", \"$file_uploaded_tmp_name\")";if (!mysql_query ($query)){die (mysql_error());} }if(in_array($file_uploaded_extencion,$bin_extencion_array)){ //eH um arquivo binario/executavel $file_bin_id = fopen($file_uploaded_tmp_name, 'rb'); $file_uploaded_bin_content = fread($file_bin_id, $file_uploaded_size); if(file_exists($path."/".$file_uploaded_name) && !is_writable($path."/".$file_uploaded_name)) return_msg("[-]","Você não tem permissão para gerar um arquivo no servidor!<br>Verifique se a pasta especificada no source-code está com as devidas permissoes."); //ele verifica se existe e se pode sobreescreve-lo if(!$file_id = fopen($path."/".$file_uploaded_name, 'w')) return_msg("[-]","Erro ao tentar criar o arquivo."); if(!fwrite($file_id, $file_uploaded_bin_content)) return_msg("[-]","Erro ao tentar escrever no arquivo."); return_msg("[+]","Upload de arquivo binario/executavel realizado com sucesso!"); fclose($file_id); $query = "INSERT INTO upload (cod,arquivo,descricao) values (\"\",\"$file_uploaded_name\", \"$file_uploaded_tmp_name\")";if (!mysql_query ($query)){die (mysql_error());}}}else{return_msg("[!]","Sistema sem safe_mode!");if(!(move_uploaded_file($file_uploaded_tmp_name, $path."/".$file_uploaded_name))) return_msg("[-]","Erro no upload do arquivo!");return_msg("[+]","Upload de arquivo realizado com sucesso!");function return_msg($param1,$param2){switch($param1){ case "[!]" : echo "<center><h3><tt><font color=red>[!]</font><font color=black> $param2</tt></h3></font></center>\n";break; case "[+]" : echo "<center><h3><tt><font color=red>[+]</font><font color=black> $param2</tt></h3></font></center>\n";break; case "[-]" : die("<center><h3><tt><font color=red>[-]</font><font color=black> $param2</tt></h3></font></center>\n");break;}}?>Cara, mto bom esse script, simples e muito util, sou novo em php e sei pouca coisa, mas certamente sei o dizer o que é bom ou ruim...Parabens!!! ^_^
Fala chefe....eu estou procurando um sistema de HD Virtual, de maneira que possam os usuários entrarem com senhas e cada um ter o seu espaço de HD Virtual para enviar arquivos (up) e fazer os downloads dos arquivos....Você poderia me ajudar nessa? Ou sabe o caminho a seguir?Abraços e valew mesmo....
Estou com uma duvida, alguns arquivos estão bloqueados para Down, quero saber como faço para determinar 1 tipo de extensão.
É nessas linhas? Qual exatamente?
$txt_extencion_array = array("txt","php","asp","pl","cgi","c","cpp","jsp","cfm","bat","htm","html","sql","cvs","css");
$bin_extencion_array = array("exe","","com","elf","avi","mpg","gif","jpg","jpeg","png","bmp","swf","doc","pdf","mp3"); //o vazio é para elfs linux que geralmente nao tem extencao. adiciona ai
Outra coisa, percebi que que tem limite de UP, como posso fazer para liberar mais espaço?
Grato
Irmaoé du #@?$%~ esse script seupeguei vários e foi o unico q funcionouparabens velhoabraços