Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá galera, não sei muito bem como definir isto, mais o que acontece, eu estou estudando um gerenciador de arquivos o FileGator, O que acontece eu estou adicionando um simples sistema que avisa os usuários se existe esta pasta um exemplo.
<?php
$nome = "user/".$_SESSION['user_name']."/Pasta Fixada=/Pasta Aleatório 1/Pasta Aleatório 2/Arquivofixo.txt";
if (file_exists($nome)) { ?>
<img class="tip" title="Existe" src="img/Aviso.png">
<?php } else { ?>
<img class="tip" title="Mensagem Ok!" src="img/Ok.png">
<?php }
?>
O que acontece ali com o script que fiz, Ele ver o caminho da minha pasta onde se o Arquivofixo.txt existe ele mostra um ícone vermelho se não mostra um ícone verde, bem ocorre tudo bem esta parte, mais ai que vem, o FileGator ele mostra todas as pastas eu quero pegar estas pasta é jogar no link, Tipo a Pasta Aleatório 1 ele pode ser criada pelo usuário, então não sei qual ira ser o nome é a Pasta Aleatório 2 também é o mesmo não sei qual ira ser o nome, já o ultimo arquivo o Arquivofixo.txt ele ira existir sempre sera este nome, então o que acontece é que preciso colocar algum código no arquivo $nome para busca os nomes das pastas, Pasta Aleatório 1 é Pasta Aleatório 2.
Ajuda Plz '-'
Com a Função mkdir(Tutorial) você pode criar uma pasta no PHP, apos o usuário criar a Pasta, Salva o nome dela no banco de dados.
Com a função opendir(Tutorial) Você pode manipular os diretórios de algum diretório(o.O) kk, enfim ele irá imprimir todo conteúdo em algum diretório e você pode pegar o tipo do conteúdo também para verificar se é um diretório.
Veja também a função readdir(Tutorial).
Você também pode salvar de algum forma o nome do diretório que o usuário criar assim tornará tudo 100% mais fácil, Enfim eu nunca trabalhei com algum sistema parecido então não sei se isso adiantará de muita coisa achei meio que na correria mesmo.
Sim já pensei nisto de cadastrar no banco de dados, mais a "Pasta Aleatório 2" é criado em um programa então teria que modificar muita coisa lá é complicaria. já a "Pasta Aleatório 2" da para cadastrar no banco de dados mais o problema é que o outro não daria certo, estou pensando aqui, mais não consigo ver a solução para o problema.
<?php
$Diretorio = "user/".$_SESSION['user_name']."/";
if (is_dir($Diretorio))
{
if ($dir = opendir($Diretorio))
{
while (($file = readdir($dir)) !== false)
{
if(filetype($Diretorio.$file) == "dir")
{
$Diretorio.=$file;
return 1;
}
}
closedir($dir);
}
}
?>
Assim você vai pegar a "Pasta aleatória 1", depois faz a mesma coisa para pegar a pagina aleatória 2, mais enquanto tiver pasta para encontrar você pode usar esse sistema, Não sei se está correto não entendo muito bem do assunto.Hum show, irei testar mais não entende bem este script ele faz uma pesquisa é min fala o nome da pasta "Pasta aleatória 1" é grava em uma variável?
Tipo ele vai pegar um Diretório estático e vai verificar todo o conteúdo que tem dentro deste diretório, e vai verificar se o conteúdo que está verificando é um diretório se for um diretório ele irá adicionar o nome do diretório encontrado a variavel de diretório estática, assim você irá ter o diretório inicial+ o diretório encontrado dentro do diretório inicial(o.O), bom não sei se funciona 100% e se tiver mais de 1 diretório pode ocasionar problemas.
Hum, este é o problema aparte daqui "user/".$_SESSION['user_name']."/" " a varias pastas. é acontece o mesmo na "Pasta aleatória 2".
então mais tipo você que verificar em todas?
Se quiser você pode criar uma array de diretórios mais irá gerar um sistema bem grande.
Tipo o que acontece na minha listagem de diretório, ele mostra todas as pastas é pode percorrer o Sub-Diretório, Então cada usuário tem uma pasta, fica assim "user/Joao/.." então aparte dai ele pode ficar criando as suas pastas, ai vem "user/Joao/Pasta dele/Pasta dele 2/Arquivo fixo.txt" então a "Pasta dele 2" é criada pelo um programa que envia o "Arquivo fixo.txt" é ai fica neste diretório, O que acontece é que eu estou verificando se nestas pasta existem o "Arquivo fixo.txt", ai fica mais ou menos assim visualmente.
Pastas | Existe
--------------------------------------
Pasta aleatória | Não existe
Pasta aleatória 2| Existe
Pasta aleatória 3| Existe
Pasta aleatória 4| Não existe
Pasta aleatória 5| Não existe
Ai ele só verifica se nesta pasta contem o arquivo. entendeu?
Você pode criar uma array de diretório e verificar 1 por 1 se existe o arquivo.
Como eu poderia fazer isto? Plz '-'
<?php
$Diretorio = "user/".$_SESSION['user_name']."/";
$ID_While = 0;
$Diretorios = array();
if (is_dir($Diretorio))
{
if ($dir = opendir($Diretorio))
{
while (($file = readdir($dir)) !== false)
{
if(filetype($Diretorio.$file) == "dir")
{
$ID_While++; $Diretorios[$ID_While] = $Diretorio.$file.'/';
}
}
closedir($dir);
}
}
//Depois para verificar nos diretorios
for($i = 1; $i <= count($Diretorios); $i++)
{
if(is_dir($Diretorios[$i]))
{
if(file_exists($Diretorios[$i].'Arquivo.txt'))
{
//Existe o arquivo nesta pasta
}
else
{
//não existe
}
}
}
?>
eu fiz esse pequeno exemplo, não sei se está totalmente correto, Tipo se for "user/joao/pasta/" irá dar certo mais se for "user/joao/pasta/pasta/" não irá.Por enquanto não funciono, onde eu coloco para dar uma mensagem se o arquivo existe ele repete o texto 3 vezes.
Ele repete porque está em um loop, você pode fazer o seguinte:
<?php
$Diretorios_Existentes = "";
for($i = 1; $i <= count($Diretorios); $i++)
{
if(is_dir($Diretorios[$i]))
{
if(file_exists($Diretorios[$i].'Arquivo.txt'))
{
if(empty($Diretorios_Existentes) || $Diretorios_Existentes == "")
{
$Diretorios_Existentes = $Diretorios[$i];
}
else
{
$Diretorios_Existentes .= ','.$Diretorios[$i];
}
}
else
{
//não existe
}
}
}
echo "O Arquivo existe nestes diretórios: ".$Diretorios_Existentes;
?>Agora o que acontece, ele aparece em todos os diretórios, falando que ele existe, sendo que alguns não existe.
faz o seguinte, Use esse código aqui:
for($i = 1; $i <= count($Diretorios); $i++)
{
if(is_dir($Diretorios[$i]))
{
echo $Diretorios[$i].'<br />';
}
}Ele mostra assim.
user/Admin/./
user/Admin/../
user/Admin/Pasta Fixada/
é por ai vai
Primeiro vamos remover estas pastas não existentes:
if (is_dir($Diretorio))
{
if ($dir = opendir($Diretorio))
{
while (($file = readdir($dir)) !== false)
{
if(filetype($Diretorio.$file) == "dir" && $file != "." && $file != "..")
{
$ID_While++; $Diretorios[$ID_While] = $Diretorio.$file.'/';
}
}
closedir($dir);
}
}for($i = 1; $i <= count($Diretorios); $i++)
{
if(is_dir($Diretorios[$i]) == true)
{
if(file_exists($Diretorios[$i].'Arquivo.txt'))
{
if(empty($Diretorios_Existentes) || $Diretorios_Existentes == "")
{
$Diretorios_Existentes = $Diretorios[$i];
}
else
{
$Diretorios_Existentes .= ','.$Diretorios[$i];
}
}
else
{
//não existe
}
}
}for($i = 1; $i <= count($Diretorios); $i++)
{
if(is_file($Diretorios[$i]) == true)
{
if(is_file($Diretorios[$i].'Arquivo.txt') == true)
{
if(empty($Diretorios_Existentes) || $Diretorios_Existentes == "")
{
$Diretorios_Existentes = $Diretorios[$i];
}
else
{
$Diretorios_Existentes .= ','.$Diretorios[$i];
}
}
else
{
//não existe
}
}
}Blz, ainda esta algo errado ou estou fazendo errado,
Mas olhando aqui eu analisei os códigos do FileGator, é ele tem uma função onde imprime o url do diretório onde estou.
Está
"<?php echo gator::encodeurl($file['link'])?>"
Ele mostra mais ou menos assim:
"Admin/Pasta Fixa/Pasta Aleatorio 1/Pasta Aleatorio 2"
Então o que eu poderia fazer é :
<?php
$filename = "user/".gator::encodeurl($file['link'])."/Arquivo.txt";
if (file_exists($filename)) { ?>
//existe
<?php } else { ?>
// Não existe
<?php }
?>
Só que esta algo errado que não esta funcionando.
Link do Downloa do FileGator: http://prefiles.com/iq9blog2rwcp/codecanyon-3041013-filegator.zip
Cara eu não conheço esse sistema do filegator, depois vou da uma lida e uma pesquisada e volto a responder aqui.
Ok, estarei aguardando '-'
cadastrar no banco de dados os nomes das pasta criadas e depois fazer uma consulta...?