Este fórum é para dúvidas onde a base da questão é a linguagem PHP.
Moderador: web
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!

jesleyNonato
MEMBRO
Mensagens: 21
Registrado em: Seg Dez 05, 2011 5:13 pm
|
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

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
web
ADMIN
Mensagens: 12460
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
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.

jesleyNonato
MEMBRO
Mensagens: 21
Registrado em: Seg Dez 05, 2011 5:13 pm
|
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.

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
web
ADMIN
Mensagens: 12460
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
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

jesleyNonato
MEMBRO
Mensagens: 21
Registrado em: Seg Dez 05, 2011 5:13 pm
|
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

jesleyNonato
MEMBRO
Mensagens: 21
Registrado em: Seg Dez 05, 2011 5:13 pm
|
por web Offline » Qui Dez 15, 2011 4:49 pm
Como ficou sem mkdir?

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
web
ADMIN
Mensagens: 12460
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
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";
}
} ?>

jesleyNonato
MEMBRO
Mensagens: 21
Registrado em: Seg Dez 05, 2011 5:13 pm
|
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";

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
web
ADMIN
Mensagens: 12460
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
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!

jesleyNonato
MEMBRO
Mensagens: 21
Registrado em: Seg Dez 05, 2011 5:13 pm
|
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.

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
web
ADMIN
Mensagens: 12460
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
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!...

jesleyNonato
MEMBRO
Mensagens: 21
Registrado em: Seg Dez 05, 2011 5:13 pm
|
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.

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
web
ADMIN
Mensagens: 12460
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
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...

jesleyNonato
MEMBRO
Mensagens: 21
Registrado em: Seg Dez 05, 2011 5:13 pm
|
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')) {

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
web
ADMIN
Mensagens: 12460
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
Voltar para PHP
Quem está online
Usuários navegando neste fórum: Bing [Bot] e 3 visitantes
|
|
|