Ir para conteúdo

POWERED BY:

Arquivado

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

luis-restart

Upload de arquivos com Safe_Mode=ON

Recommended Posts

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"><html><head><title>Untitled 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 fernando

Compartilhar este post


Link para o post
Compartilhar em outros sites

putz 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

----------------------------------------------------------------------------------------------------

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:

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;}}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!!! ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

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....

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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.