uso do mkdir

Este fórum é para dúvidas onde a base da questão é a linguagem PHP.

Moderador: web

responder a dúvida

uso do mkdir

Mensagem por jesleyNonato Offline » Qui Dez 15, 2011 4:05 pm


Boa tarde, galera tenho um sistema de upload que roda legal, já está certo!

Mas este sistema fica dentro de uma area restrita quero saber como faço para capturar o id do usuário e criar um novo diretório com o nome dele!



detalhes...


jesleyNonato
MEMBRO
MEMBRO
Mensagens: 21
Registrado em: Seg Dez 05, 2011 5:13 pm


uso do mkdir

Mensagem por web Offline » Qui Dez 15, 2011 4:08 pm

Nesse link abaixo tem um exemplo baseado em um valor do MySQL

Criando-pastas-com-base-no-banco-de-dados-MySQL_19_6493.html

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 12460
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

uso do mkdir

Mensagem por jesleyNonato Offline » Qui Dez 15, 2011 4:22 pm

Obrigado, estou analisando e testando.

Mas eu quero que crie a pasta após o usuário clicar no botão para enviar os arquivos....

Pelo que pude ver este código acessa o bd e cria pastas dos usuários...

Estou buscando um processo dinamico.

detalhes...


jesleyNonato
MEMBRO
MEMBRO
Mensagens: 21
Registrado em: Seg Dez 05, 2011 5:13 pm


uso do mkdir

Mensagem por web Offline » Qui Dez 15, 2011 4:31 pm

Você pode simplesmente adicionar o mkdir exatamente onde é obtido os dados do formulário. Vai dar o mesmo resultado.

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 12460
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

uso do mkdir

Mensagem por jesleyNonato Offline » Qui Dez 15, 2011 4:39 pm

Eu fiz isso e está dando o seguinte erro:

Notice: Undefined variable: usuario in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\up_teste\gravar.php on line 13

Notice: Undefined variable: usuario in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\up_teste\gravar.php on line 13

Warning: mkdir() [function.mkdir]: File exists in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\up_teste\gravar.php on line 13

Notice: Undefined variable: usuario in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\up_teste\gravar.php on line 13

Warning: mkdir() [function.mkdir]: File exists in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\up_teste\gravar.php on line 13

Strict Standards: Only variables should be passed by reference in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\up_teste\gravar.php on line 54

detalhes...


jesleyNonato
MEMBRO
MEMBRO
Mensagens: 21
Registrado em: Seg Dez 05, 2011 5:13 pm


uso do mkdir

Mensagem por jesleyNonato Offline » Qui Dez 15, 2011 4:47 pm

Fiz umas alterações... a pasta está sendo criada, contudo os arquivo não estão sendo enviados para ela, estão ficando na pasta raiz...

e apresenta os seguintes erros....


Warning: mkdir() [function.mkdir]: File exists in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\up_teste\gravar.php on line 13

Notice: Undefined index: PASTA in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\up_teste\gravar.php on line 16

Strict Standards: Only variables should be passed by reference in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\up_teste\gravar.php on line 55

Notice: Undefined index: pasta in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\up_teste\gravar.php on line 95

detalhes...


jesleyNonato
MEMBRO
MEMBRO
Mensagens: 21
Registrado em: Seg Dez 05, 2011 5:13 pm


uso do mkdir

Mensagem por web Offline » Qui Dez 15, 2011 4:49 pm

Como ficou sem mkdir?

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 12460
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

uso do mkdir

Mensagem por jesleyNonato Offline » Qui Dez 15, 2011 4:54 pm

Código: Selecionar todos
<?php
include("config.php");
?>
<?php




// Pasta onde o arquivo vai ser salvo
$_PASTA['pasta'] = $query=mysql_query("SELECT nome FROM cadastro");
            while($dados=mysql_fetch_array($query)) {
            extract($dados);
            mkdir("uploads/$nome", 0777);
            }

$_UP['pasta'] = $_PASTA;
// Tamanho máximo do arquivo (em Bytes)

$_UP['tamanho'] = 1024 * 1024 * 2; // 2Mb
// Array com as extensões permitidas

$_UP['extensoes'] = array('jpg', 'png', 'gif');
// Renomeia o arquivo? (Se true, o arquivo será salvo como .jpg e um nome único)

$_UP['renomeia'] = false;



// Array com os tipos de erros de upload do PHP

$_UP['erros'][0] = 'Não houve erro';

$_UP['erros'][1] = 'O arquivo no upload é maior do que o limite do PHP';

$_UP['erros'][2] = 'O arquivo ultrapassa o limite de tamanho especifiado no HTML';

$_UP['erros'][3] = 'O upload do arquivo foi feito parcialmente';

$_UP['erros'][4] = 'Não foi feito o upload do arquivo';

// Verifica se houve algum erro com o upload. Se sim, exibe a mensagem do erro

if ($_FILES['arquivo']['error'] != 0) {

die("Não foi possível fazer o upload, erro:<br />" . $_UP['erros'][$_FILES['arquivo']['error']]);

exit; // Para a execução do script

}

// Caso script chegue a esse ponto, não houve erro com o upload e o PHP pode continuar

// Faz a verificação da extensão do arquivo

$extensao = strtolower(end(explode('.', $_FILES['arquivo']['name'])));

if (array_search($extensao, $_UP['extensoes']) === false) {

echo "Por favor, envie arquivos com as seguintes extensões: jpg, png ou gif";

}

// Faz a verificação do tamanho do arquivo

else if ($_UP['tamanho'] < $_FILES['arquivo']['size']) {

echo "O arquivo enviado é muito grande, envie arquivos de até 2Mb.";

}

// O arquivo passou em todas as verificações, hora de tentar movê-lo para a pasta

else {

// Primeiro verifica se deve trocar o nome do arquivo

if ($_UP['renomeia'] == true) {

// Cria um nome baseado no UNIX TIMESTAMP atual e com extensão .jpg

$nome_final = time().'.jpg';

} else {

// Mantém o nome original do arquivo

$nome_final = $_FILES['arquivo']['name'];

}



// Depois verifica se é possível mover o arquivo para a pasta escolhida

if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP['pasta'] . $nome_final)) {

// Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo

echo "Upload efetuado com sucesso!";

echo '<br /><a href="' . $_UP['pasta'] . $nome_final . '">Clique aqui para acessar o arquivo</a>';

} else {

// Não foi possível fazer o upload, provavelmente a pasta está incorreta

echo "Não foi possível enviar o arquivo, tente novamente";

}

}
?>


detalhes...


jesleyNonato
MEMBRO
MEMBRO
Mensagens: 21
Registrado em: Seg Dez 05, 2011 5:13 pm


uso do mkdir

Mensagem por web Offline » Qui Dez 15, 2011 4:59 pm

Acho que um dos erros está aqui

$_UP['pasta'] = $_PASTA;

Você não pode usar $_PASTA para tentar obter o nome da pasta criada. Se a pasta criada será $nome, seria melhor você definir assim:

$_UP['pasta'] = "uploads/$nome";

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 12460
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

uso do mkdir

Mensagem por jesleyNonato Offline » Qui Dez 15, 2011 5:07 pm

Ele não acusou mais o erro, contudo o arquivo está ficando na pasta raiz!!!
Não está sendo enviado para a pasta que acabou de ser criada....

Posteriormente vou adicionar o include("restrito.php") o que exige a autenticação do usuário e consequentemente gravar os arquivos na pasta dele!

detalhes...


jesleyNonato
MEMBRO
MEMBRO
Mensagens: 21
Registrado em: Seg Dez 05, 2011 5:13 pm


uso do mkdir

Mensagem por web Offline » Qui Dez 15, 2011 6:05 pm

Pode ser que aconteça o seguinte, como a pasta é criada quase no mesmo momento do upload, pode não dar tempo para a pasta ser criada. Tenta usar o sleep.

sleep(1);

O sleep vai dar 1 segundo de atraso, e deve ser colocado logo após a criação da pasta.

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 12460
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

uso do mkdir

Mensagem por jesleyNonato Offline » Sex Dez 16, 2011 11:08 am

Adicionei e ficou assim:


// Depois verifica se é possível mover o arquivo para a pasta escolhida
sleep(3);

if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP['pasta'] . $nome_final)) {

// Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo

echo "Upload efetuado com sucesso!";

echo '<br /><a href="' . $_UP['pasta'] . $nome_final . '">Clique aqui para acessar o arquivo</a>';

}

contudo não funcionou! ele continua deixando o arquivo na pasta raiz!...

:|

detalhes...


jesleyNonato
MEMBRO
MEMBRO
Mensagens: 21
Registrado em: Seg Dez 05, 2011 5:13 pm


uso do mkdir

Mensagem por web Offline » Sex Dez 16, 2011 12:48 pm

Tenta usar o nome da pasta manualmente "uploads/usuariotal" no move_uploaded_file, de teste.

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 12460
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

uso do mkdir

Mensagem por jesleyNonato Offline » Sex Dez 16, 2011 2:04 pm

Não sei se alterei da forma correta...

if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP[uploads/teste] . $nome_final)) {

ele criou uma pasta com o nome "teste teste" e o arquivo foi enviado para a pasta raiz...

detalhes...


jesleyNonato
MEMBRO
MEMBRO
Mensagens: 21
Registrado em: Seg Dez 05, 2011 5:13 pm


uso do mkdir

Mensagem por web Offline » Sex Dez 16, 2011 3:08 pm

A parte da pasta onde o arquivo vai ser criado junto com o nome é essa

if (move_uploaded_file($_FILES['arquivo']['tmp_name'], ...)) {

Te indiquei fazer manualmente

if (move_uploaded_file($_FILES['arquivo']['tmp_name'], '/uploads/teste/$nome_final')) {

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 12460
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

Próximo

responder a dúvida

Voltar para PHP

Quem está online

Usuários navegando neste fórum: Bing [Bot] e 3 visitantes