Olá M2DOIS, infelizmente eu raramente logo nesse forum, senao teria lhe ajudado. É o seguinte, o que tu fez, vai fazer com que funcione o sistema, pq vc simplesmente desabilitou a verificação de tipo de arquivo, para um painel de sistema, pode até funcionar, mas caso vc use em algum ambiente mais "liberado", alguém pode enviar qquer tipo de arquivo, inclusive executáveis.
Para vc determinar quais tipos de arquivo vc pode enviar, vc precisa conhecer os mime types, que é o q identifica qual o tipo de arquivo está sendo utilizado.
Se vc analisar a linha q comentou, perceba que lá tem por exemplo:
$_FILES[form_arquivo]['type'] == "image/jpeg"
Que corresponde aos arquivos JPG, cada extensão possui seu mime type certo, digamos que vc queira nesse mesmo código enviar um arquivo FLASH, o qual possui extensao .swf, o procedimento seria o seguinte:
Código Anterior:
if (($_FILES[form_arquivo]['type'] == "image/pjpeg" or $_FILES[form_arquivo]['type'] == "image/jpeg") or $_FILES[form_arquivo]['type'] == "image/gif" or $_FILES[form_arquivo]['type'] == "application/pdf" or $_FILES[form_arquivo]['type'] == "application/doc") {
Código com Flash habilitado:
if (($_FILES[form_arquivo]['type'] == "image/pjpeg" or $_FILES[form_arquivo]['type'] == "image/jpeg") or $_FILES[form_arquivo]['type'] == "image/gif" or $_FILES[form_arquivo]['type'] == "application/pdf" or $_FILES[form_arquivo]['type'] == "application/doc" or $_FILES[form_arquivo]['type'] == "application/x-shockwave-flash") {
Note que "application/x-shockwave-flash" foi adicionado, pois ele é o mime type do .swf
Recomento que estude mais o básico do php para depois "avançar".
Segue a lista de alguns mimetypes que peguei do site www.php.net
Extensâo => Mimetype
'txt' => 'text/plain',
'htm' => 'text/html',
'html' => 'text/html',
'php' => 'text/html',
'css' => 'text/css',
'js' => 'application/javascript',
'json' => 'application/json',
'xml' => 'application/xml',
'swf' => 'application/x-shockwave-flash',
'flv' => 'video/x-flv',
// images
'png' => 'image/png',
'jpe' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'gif' => 'image/gif',
'bmp' => 'image/bmp',
'ico' => 'image/vnd.microsoft.icon',
'tiff' => 'image/tiff',
'tif' => 'image/tiff',
'svg' => 'image/svg+xml',
'svgz' => 'image/svg+xml',
// archives
'zip' => 'application/zip',
'rar' => 'application/x-rar-compressed',
'exe' => 'application/x-msdownload',
'msi' => 'application/x-msdownload',
'cab' => 'application/vnd.ms-cab-compressed',
// audio/video
'mp3' => 'audio/mpeg',
'qt' => 'video/quicktime',
'mov' => 'video/quicktime',
// adobe
'pdf' => 'application/pdf',
'psd' => 'image/vnd.adobe.photoshop',
'ai' => 'application/postscript',
'eps' => 'application/postscript',
'ps' => 'application/postscript',
// ms office
'doc' => 'application/msword',
'rtf' => 'application/rtf',
'xls' => 'application/vnd.ms-excel',
'ppt' => 'application/vnd.ms-powerpoint',
// open office
'odt' => 'application/vnd.oasis.opendocument.text',
'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
M2DOIS, on 24 July 2010 - 09:56 AM, said:
Em respeito aos que procuram soluçoes para problemas como este meu, e apos quebrar muito a cabeça, eu SOZINHO consegui resolver o problema...
Onde se via isso...
if ($_POST[Inserir] == "ok") {
// if (is_file($_FILES[form_arquivo]['tmp_name'])) {
if (($_FILES[form_arquivo]['type'] == "image/pjpeg" or $_FILES[form_arquivo]['type'] == "image/jpeg") or $_FILES[form_arquivo]['type'] == "image/gif" or $_FILES[form_arquivo]['type'] == "application/pdf" or $_FILES[form_arquivo]['type'] == "application/doc") {
copy($_FILES[form_arquivo]['tmp_name'],"../arquivos/".$_FILES[form_arquivo]['name']);
mysql_query("INSERT INTO downloads (download,arquivo) VALUES ('$_POST[form_download]','arquivos/".$_FILES[form_arquivo]['name']."')");
$id = mysql_result(mysql_query("SELECT id_download FROM downloads WHERE arquivo='arquivos/".$_FILES[form_arquivo]['name']."'"),0,id_download);
permissoes($id,$usuarios);
}
}
if ($_POST[Alterar] == "ok") {
// if (is_file($_FILES[form_arquivo]['tmp_name'])) {
if (($_FILES[form_arquivo]['type'] == "image/pjpeg" or $_FILES[form_arquivo]['type'] == "image/jpeg") or $_FILES[form_arquivo]['type'] == "image/gif" or $_FILES[form_arquivo]['type'] == "application/pdf" or $_FILES[form_arquivo]['type'] == "application/doc") {
copy($_FILES[form_arquivo]['tmp_name'],"../arquivos/".$_FILES[form_arquivo]['name']);
@unlink("../".mysql_result(mysql_query("SELECT arquivo FROM downloads WHERE id_download=$_POST[id]"),0,arquivo));
mysql_query("UPDATE downloads SET arquivo='arquivos/".$_FILES[form_arquivo]['name']."' WHERE id_download=$_POST[id]");
}
mysql_query("UPDATE downloads SET download='$_POST[form_download]' WHERE id_download=$_POST[id]");
permissoes($_POST[id],$usuarios);
Vamos colocar isso..
if ($_POST[Inserir] == "ok") {
if (is_file($_FILES[form_arquivo]['tmp_name'])) {
// if (($_FILES[form_arquivo]['type'] == "image/pjpeg" or $_FILES[form_arquivo]['type'] == "image/jpeg") or $_FILES[form_arquivo]['type'] == "image/gif" or $_FILES[form_arquivo]['type'] == "application/pdf" or $_FILES[form_arquivo]['type'] == "application/doc") {
copy($_FILES[form_arquivo]['tmp_name'],"../arquivos/".$_FILES[form_arquivo]['name']);
mysql_query("INSERT INTO downloads (download,arquivo) VALUES ('$_POST[form_download]','arquivos/".$_FILES[form_arquivo]['name']."')");
$id = mysql_result(mysql_query("SELECT id_download FROM downloads WHERE arquivo='arquivos/".$_FILES[form_arquivo]['name']."'"),0,id_download);
permissoes($id,$usuarios);
}
}
if ($_POST[Alterar] == "ok") {
if (is_file($_FILES[form_arquivo]['tmp_name'])) {
// if (($_FILES[form_arquivo]['type'] == "image/pjpeg" or $_FILES[form_arquivo]['type'] == "image/jpeg") or $_FILES[form_arquivo]['type'] == "image/gif" or $_FILES[form_arquivo]['type'] == "application/pdf" or $_FILES[form_arquivo]['type'] == "application/doc") {
copy($_FILES[form_arquivo]['tmp_name'],"../arquivos/".$_FILES[form_arquivo]['name']);
@unlink("../".mysql_result(mysql_query("SELECT arquivo FROM downloads WHERE id_download=$_POST[id]"),0,arquivo));
mysql_query("UPDATE downloads SET arquivo='arquivos/".$_FILES[form_arquivo]['name']."' WHERE id_download=$_POST[id]");
}
mysql_query("UPDATE downloads SET download='$_POST[form_download]' WHERE id_download=$_POST[id]");
permissoes($_POST[id],$usuarios);
Simples nao? apenas colocamos a segunda variavel como comentário e nao como codigo uma vez que ela limita os tipos de arquivos que podem ser colocados para upload.
Bom é isso, esse é um sistema de envio de arquivos (upload) para uma area restrita dentro do site.
Marcelo.