rafa440 0 Denunciar post Postado Março 31, 2010 Estou precisando de uma ajuda, eu preciso de um formulario de cadastro em php... Ele faz o seguinte, 1º Cria um novo usuario com um nivel de permissão e insere no banco de dados para o mesmo logar na area restrita... 2º Cria uma pasta no ftp com o nome do usuario 3º Cria algumas paginas dentro desta pasta, sendo que, as paginas vão ser todos iguais, a unica coisa que vai mudar nas paginas é para onde enviar os arquivos (é um upload de imagens para o ftp) que é uma pasta dentro dessa pasta que criou acima, chamada ftp (vai ser o mesmo nome para todas). 4º Cria um Link na pagina index.php com o nome do usuario para o administrador. é mais ou menos isso ou seja: O nome da pasta que vai criar no ftp vai ser o que for colocado no campo "nome" do formulario> Dentro desta pasta, vão ser criadas 3 paginas e mais uma pasta (chamada ftp)> Essas paginas são: 1 para upload de arquivos para a pasta ftp, 1 para download desses arquivos e outra para pode navegar entre essas duas> A unica coisa que muda nessas paginas vai ser o diretorio, por exemplo, o cliente1 vai ter o diretorio para upload: Webroot/cliente1/ftp o cliente2 vai ter Webroot/cliente2/ftp> Dentro da pasta ftp vai ter um arquivo chamado download.php, esse arquivo não vai mudar nada, ele serve só para forçar o download... e, por ultimo, ele cria um Link na pagina index.php para a pagina que serve para o cliente navegar entre o download e o upload, essa pasta só é vista pelo adm do site... é isso, eu tenho todas as paginas e pastas criadas, o que eu preciso é do formulario para que, quando um usuario se cadastrar,ele crie uma pasta com o nome do usuario,copie as paginas e pastas, altere o que tem que alterar e cole nessa nova pasta... Obrigado desde já. Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Março 31, 2010 E exatamente qual é a sua dúvida? Compartilhar este post Link para o post Compartilhar em outros sites
rafa440 0 Denunciar post Postado Março 31, 2010 Quais as funções para ele fazer isso, pegar os dados, criar a pasta, copiar as paginas, mudar o destino do upload no codigo de uma das paginas e colocar o link no index.php Compartilhar este post Link para o post Compartilhar em outros sites
Pierry Bos 1 Denunciar post Postado Março 31, 2010 E exatamente qual é a sua dúvida? E Complementando, o que você ja tem de codigo pronto? Compartilhar este post Link para o post Compartilhar em outros sites
rafa440 0 Denunciar post Postado Março 31, 2010 Eu tenho um formulario simples de cadastro, ele só cadastra o usuario no banco de dados Compartilhar este post Link para o post Compartilhar em outros sites
Pierry Bos 1 Denunciar post Postado Março 31, 2010 Os arquivo que forem enviados para o servidor, deverao ser enviados por ftp? Nao pode ser um upload simples? Ja tentaste esta opcao? Compartilhar este post Link para o post Compartilhar em outros sites
rafa440 0 Denunciar post Postado Abril 1, 2010 Então, o upload por ftp foi o melhor jeito que eu consegui fazer, pois, cada um tem sua pasta e ninguém ve os arquivos dos outros, entendeu? Pq, não é só o adm que vai fazer download dos arquivos, alguns usuarios também farão, mas, eles não podem ver todos os arquivos, só os que o adm quiser que eles vejam, por isso, uma pasta para cada e via ftp... Ai, eu pesquisei e achei esses que são bons para isso, mas, empaquei na hora de gerar essas paginas sabe... Pq, eu não faço nem ideia por onde começar hehe Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Abril 1, 2010 Vamos lá: 1º Cria um novo usuario com um nivel de permissão e insere no banco de dados para o mesmo logar na area restrita... Como você disse que já tem o formulário que cadastra o cara no BD, imagino que essa parte já esteja ok. 2º Cria uma pasta no ftp com o nome do usuario Não precisa de FTP para isso, basta no momento do cadastro você usar a função mkdir, como eu imagino que exista apenas um usuário com cada nome escolhido, e você verifique isso no momento do cadastro, então não será necessário verificar se a pasta já existe ou não. 3º Cria algumas paginas dentro desta pasta, sendo que, as paginas vão ser todos iguais, a unica coisa que vai mudar nas paginas é para onde enviar os arquivos (é um upload de imagens para o ftp) que é uma pasta dentro dessa pasta que criou acima, chamada ftp (vai ser o mesmo nome para todas). Nesse caso basta você deixar essas páginas prontas e no momento que criar o usuário usar a função copy. 4º Cria um Link na pagina index.php com o nome do usuario para o administrador. Na página no admin basta fazer um select com todos os usuários cadastrados, mais ou menos assim: <?php /* Faz a conexão com o banco e etc.. essa parte você já tem */ $sql = mysql_query("SELECT * FROM tabela"); while($monta = mysql_fetch_assoc($sql){ echo '<a href="pastas/'.$monta['nome_de_usuario'].'">'.$monta['nome'].'</a><br>'; } ?>No caso assumi que o nome de usuário fica na coluna nome_de_usuario e o nome do cara fica na coluna nome. Compartilhar este post Link para o post Compartilhar em outros sites
rafa440 0 Denunciar post Postado Abril 1, 2010 ok, vamos lah do meio para cima esta tudo certo... eu ainda num testei o mkdir, mas, eu entendi o que você quis dizer e vou ver se consigo aki agora, do meio para baixo a função copy eu entendi, mas, o problema tah na hora de mudar o diretorio no codigo por ex: para conectar ao ftp esta assim $ftp_dump_dir="/webroot/usuario1/ftp";eu queria que ele pegasse o nome do cadastro e mudasse isso no codigo, entedeu?pq, se simplesmente copiar, todos os usuarios criados vão mandar arquivos para a pasta do usuario 1 entendeu? Eu jah até tenho uma pasta que tem certinho os arquivos para modelo, mas, eu queria mudar isso no codigo PHP e, sobre o link, quando eu coloco isso que você passo, a pagina fica em branco, num da nenhum erro, simplesmente abre uma tela branca, se eu tiro esse codigo, aparece a pagina normal... eu coloquei assim: <?php require_once('exce89.php'); $sql = mysql_query("SELECT * FROM usuarios"); while($monta = mysql_fetch_assoc($sql){ echo '<a href="webroot/'.$monta['usu_nome'].'">'.$monta['nome'].'</a><br>'; } ?> o codigo da pagina index.php <?php //initialize the session if (!isset($_SESSION)) { session_start(); } // ** Logout the current user. ** $logoutAction = $_SERVER['PHP_SELF']."?doLogout=true"; if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){ $logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']); } if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){ //to fully log out a visitor we need to clear the session varialbles $_SESSION['MM_Username'] = NULL; $_SESSION['MM_UserGroup'] = NULL; $_SESSION['PrevUrl'] = NULL; unset($_SESSION['MM_Username']); unset($_SESSION['MM_UserGroup']); unset($_SESSION['PrevUrl']); $logoutGoTo = "login.php"; if ($logoutGoTo) { header("Location: $logoutGoTo"); exit; } } ?> <?php if (!isset($_SESSION)) { session_start(); } $MM_authorizedUsers = "1"; $MM_donotCheckaccess = "false"; // *** Restrict Access To Page: Grant or deny access to this page function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { // For security, start by assuming the visitor is NOT authorized. $isValid = False; // When a visitor has logged into this site, the Session variable MM_Username set equal to their username. // Therefore, we know that a user is NOT logged in if that Session variable is blank. if (!empty($UserName)) { // Besides being logged in, you may restrict access to only certain users based on an ID established when they login. // Parse the strings into arrays. $arrUsers = Explode(",", $strUsers); $arrGroups = Explode(",", $strGroups); if (in_array($UserName, $arrUsers)) { $isValid = true; } // Or, you may restrict access to only certain users based on their username. if (in_array($UserGroup, $arrGroups)) { $isValid = true; } if (($strUsers == "") && false) { $isValid = true; } } return $isValid; } $MM_restrictGoTo = "ef.php"; if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) { $MM_qsChar = "?"; $MM_referrer = $_SERVER['PHP_SELF']; if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&"; if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0) $MM_referrer .= "?" . $QUERY_STRING; $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer); header("Location: ". $MM_restrictGoTo); exit; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Index - FTP</title> </head> <body><br /> <a href="<?php echo $logoutAction ?>">Log out</a> <p><a href="cadastro.php"><br /> <br /> Cadastro de clientes</a></p> <p> </p> <p><a href="usu1.php">usuario1</a></p><br /> <p><a href="usu2.php">usuario2</a></p> <br /> <br /> <?php require_once('exce89.php'); $sql = mysql_query("SELECT * FROM usuarios"); while($monta = mysql_fetch_assoc($sql){ echo '<a href="webroot/'.$monta['usu_nome'].'">'.$monta['nome'].'</a><br>'; } ?> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Abril 1, 2010 a função copy eu entendi, mas, o problema tah na hora de mudar o diretorio no codigo por ex: para conectar ao ftp esta assim $ftp_dump_dir="/webroot/usuario1/ftp";eu queria que ele pegasse o nome do cadastro e mudasse isso no codigo, entedeu?pq, se simplesmente copiar, todos os usuarios criados vão mandar arquivos para a pasta do usuario 1 entendeu? Eu jah até tenho uma pasta que tem certinho os arquivos para modelo, mas, eu queria mudar isso no codigo PHP E exatamente porque ele só enviaria para a pasta do usuário 1? Se você está copiando o arquivo do upload para dentro da pasta de cada usuário, você nem precisa informar o destino do arquivo, bastad deixar apenas com uma / para o upload ser feito dentro da pasta onde o arquivo que faz o upload está. e, sobre o link, quando eu coloco isso que você passo, a pagina fica em branco, num da nenhum erro, simplesmente abre uma tela branca, se eu tiro esse codigo, aparece a pagina normal... eu coloquei assim: <?php require_once('exce89.php'); $sql = mysql_query("SELECT * FROM usuarios"); while($monta = mysql_fetch_assoc($sql){ echo '<a href="webroot/'.$monta['usu_nome'].'">'.$monta['nome'].'</a><br>'; } ?> Troca isso dai por isso: <?php require_once('exce89.php'); $sql = mysql_query("SELECT * FROM usuarios")OR DIE(mysql_error(); echo 'Total de usuários cadastrados: '.mysql_num_rows($sql).'<br>'; while($monta = mysql_fetch_assoc($sql)){ echo '<a href="webroot/'.$monta['usu_nome'].'">'.$monta['nome'].'</a><br>'; } ?>Faltou fechar um ), o seu servidor está com display_errors desabilitado, por isso a página em branco. Compartilhar este post Link para o post Compartilhar em outros sites
rafa440 0 Denunciar post Postado Abril 1, 2010 então tipo, ao invez de: $ftp_dump_dir="/webroot/usuario1/ftp"; ficaria: $ftp_dump_dir="/"; foi isso que eu entendi, desculpe se estou sendo ignorante... num adiantou, ele ainda inda aparece a tela em branco quando eu troco por isso... Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Abril 1, 2010 Coloca aqui o script que você está usando para fazer o upload; Sobre mostrar em branco, coloca isso no topo da página: ini_set("display_errors", 1 ); error_reporting(-1); Isso deve forçar a ser exibido o erro. Compartilhar este post Link para o post Compartilhar em outros sites
rafa440 0 Denunciar post Postado Abril 1, 2010 ok <? //uses $_FILES[] global array //see manual for older PHP version info //This function will be used to get the extension from the filename Function get_extension($file,$length=-1){ $p = strrpos($file,"."); $p++; If($length!=-1){ $ext = substr($file,$p,$length); } If($length==-1){ $ext = substr($file,$p); } $ext = strtolower($ext); Return $ext; } //Not good practice, but here anyway //change to suit your needs //also some have to be set in the ini //for this to correctly work //2meg max Ini_set("upload_max_filesize","50000M"); //turn on file uploads Ini_set("file_uploads","1"); //set your temp dir Ini_set("upload_tmp_dir","/tmp"); //set post size large enough to accomidate //3 100meg files and some overhead Ini_set("post_max_size","18000M"); ?> </p> <? //check to see if we have submited yet If($_POST["submit"]!="submit"){ //not yet so lets make the form ?> <? } //see if we have submited and that the files array has been set If(($_POST["submit"]=="submit")&&(is_array($_FILES['userfiles']))){ $ftp_user_name="usuario"; //change to ftp username $ftp_user_pass="senha"; //change to ftp password $ftp_server="ftp.meudominio.net.br"; //change to ftp url $ftp_dump_dir="/webroot/EF/ftp"; //change to destination directory //go through all the files For($x=0;$x<count($_FILES['userfiles']['name']);$x++){ //now we do some file checking //check to see if file is there If($_FILES['userfiles']['name'][$x]!="none"){ //file has a name //check filesize If($_FILES['userfiles']['size'][$x]!=0){ //file is larger than 0 bytes //Check to see if it is uploaded If(is_uploaded_file($_FILES['userfiles']['tmp_name'][$x])){ //file has been uploaded! //let the user know their file has be uploaded Echo "Arquivo ".$_FILES['userfiles']['name'][$x]."<br>"; //conect to ftp server $conn_id = ftp_connect($ftp_server); // login with username and password $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); // check connection If ((!$conn_id) || (!$login_result)) { Echo "FTP connection has failed!<br>"; Echo "Attempted to connect to $ftp_server for user $ftp_user_name"; Exit; } else { Echo "Conectado a $ftp_server! <br>"; //set PASV mode If(!ftp_pasv($conn_id,TRUE)){ Echo "Could not enter PASV mode!"; } //rename to file#_date.Ext $filename = $_FILES['userfiles']['name'][$x]; //$filename.= ".".Get_extension($_FILES['userfiles']['name'][$x],3); //change directory If (@ftp_chdir($conn_id, $ftp_dump_dir)) { //maybe you want to make sure we are in the correct directory Echo "O diretório atual é : ", ftp_pwd($conn_id), "/ <br>"; } else { //you want to know if it didn't work Echo "Couldn't change directory\and"; } //upload the file and let the user know what happened If(ftp_put($conn_id,$filename,$_FILES['userfiles']['tmp_name'][$x],FTP_BINARY)){ Echo "Arquivo ".$_FILES['userfiles']['name'][$x]." foi enviado com sucesso<br>"; Echo "O arquivo se chama ".$filename."<br>"; }else{ Echo "There was a problem sending file ".$_FILES['userfiles']['name'][$x]."<br>";; } } // close the FTP stream Ftp_close($conn_id); } Else echo"File was not uploaded!<br>"; } } Echo "<br>"; }//end for loop } //That's all folks! ?> e, sobre isso, eu coloquei esse codigo e, tah a mesma coisa, é pra colocar antes da pagina num é? não no <body>? pq, eu coloquei antes de tudo, logo que abri o <?php eu coloquei isso, antes de tudo e, continua branco Oo Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Abril 1, 2010 Vamos lá, você realmente quer usar FTP né? Não entendo qual a razão (e imagino que nem você saiba exatamente porque quer, mas deixa pra lá), nesse caso esquece o que eu disse sobre usar só o /, como você quer dessa maneira, como você está copiando isso para dentro das pastas, basta usar o $_SERVER['REQUEST_URI'] para pegar o endereço da requisição, dar um explode nas barras e usar o penúltimo ítem do array (estou assumindo que o endereço acessado seria http://www.site.com/nome_de_usuario/arquivo.php), para saber quantos itens tem o array basta usar count, pronto, isso dai vai te retornar a pasta de destino e ai você usa isso para configurar o script de forma dinamica. Quanto aos erros, como não foi exibido, procure no servidor onde está sendo gravado o log, e abra ele, se não souber/encontrar, fale com o suporte técnico. Compartilhar este post Link para o post Compartilhar em outros sites
rafa440 0 Denunciar post Postado Abril 1, 2010 Então, é o seguinte, preciso que grave no ftp porque nenhum outro usuario pode ver os arquivos que os outros usuarios enviaram, entendeu? tem outro modo de fazer isso que eu quero, tipo, ele fazer o upload para a pasta do usuario no servidor? Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Abril 1, 2010 Então, é o seguinte, preciso que grave no ftp porque nenhum outro usuario pode ver os arquivos que os outros usuarios enviaram, entendeu? tem outro modo de fazer isso que eu quero, tipo, ele fazer o upload para a pasta do usuario no servidor? Você está gravando fora da área pública? Porque se você estiver gravando na área pública, ou seja, se esses arquivos forem acessíveis pelo navegador, usar o FTP ou enviar por HTTP não vai fazer a menor diferença... Compartilhar este post Link para o post Compartilhar em outros sites
rafa440 0 Denunciar post Postado Abril 1, 2010 bom, foi mal, não estava conseguindo ver a pagina do imasters então, se eu digitar no navegador www.dominio.com.br/usuario1/ftp/nomedaimagem.jpg ela aparece no navegador mas, só se fizer assim, se digitar o nome da pasta num da e, pelo ftp.dominio.com.br eu tbm consigo acessar Compartilhar este post Link para o post Compartilhar em outros sites
Pierry Bos 1 Denunciar post Postado Abril 1, 2010 Entao nao faz muita diferença. O que se pode fazer é um upload simples, com uma pasta como banco de arquivo e uma tabela do banco de dados que "virtualizará" os arquivos, você pode associar o arquivo com o id do usuário e no visualizar listar apenas os arquivos daquele usuario. Uma boa pratica é renomear ao fazer o upload, criando um nome automatico. Esse nome com o link fica salvo no bd Compartilhar este post Link para o post Compartilhar em outros sites