Jump to content


Photo

Somente Se Estiver Logado


  • Faça o login para participar
7 replies to this topic

#1 redstyle

redstyle

    Expert

  • Usuários
  • 540 posts
  • Sexo:Masculino

Posted 11/09/2006, 12:22

Olá pessoal,
Estou tentando fazer um sistema que só libera download de arquivos caso o usuário passou pelo formulário de "login e senha".

Vi no site php.net no link http://www.php.net/m...s.http-auth.php o esquema

de autenticar com aquele prompt onde pede usuário e senha.

Mas gostaria de automatizar isso caso o usuário se logou no sistema através do meu

formulário, então ele pode baixar os arquivos, que no caso seriam arquivos *.SWF com apresentações.

Inicialmente pensei em criar um arquivo config.php com uma variável mais ou menos assim
$pasta = "swf_5wef165e1c6we1g4we65";
de tempos em tempos mudaria o nome da pasta pelo FTP e colocaria o novo nome nessa variável.

E então nos links colocaria assim:
<a href="<?=$pasta?>/apresentacao_1.swf">Apresentação 1</a>

Ou seja, se alguém tentar linkar de fora (ok...ok..aqui poderia usar o esquema de hotlink) ou tentar ver a apresentação sem se logar iria ser muito difícil descobrir qual o nome da pasta naquele momento.

Mas acho que uma solução de autenticação com header http seria mais viável.

Resumidamente a pergunta seria: Como deixar o usuário baixar os arquivos SWF somente se estiver logado?

E ai alguma sugestão ?

Obrigado.

Conheça meu blog para Aprender Laravel (Framework PHP)


#2 fly2k

fly2k

    Super Veterano

  • Usuários
  • 2262 posts
  • Sexo:Não informado

Posted 11/09/2006, 13:07

nâo....esta não é a melhor opão....


existe uma função, que chama-se fpassthru()...q le o arquivo....e repassa ao usuário...sem a necessidade de o usuário saber o local exato do arquivo...

dah uma olhada na documentação!
Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.

#3 redstyle

redstyle

    Expert

  • Usuários
  • 540 posts
  • Sexo:Masculino

Posted 11/09/2006, 19:28

Ae valeu...pela dica.
O esquema é que funciona, mas de 5 tentativas 2 falham, informando na tela:
A imagem “http://localhost/teste/teste.php” contém erros e não pode ser exibida.
o script é esse:
<?php

// abre o arquivo em modo binário
$name = "../../01.png";
$fp = fopen($name, 'rb');

// envia os headers
header("Content-Type: image/png");
header("Content-Length: ".filesize($name));

// manda a imagem e para o script
fpassthru($fp);
exit;

?> 

o Caminho está correto, pois coloquei em um diretorio não acessível diretamente.

Ao dar F5 as vezes da a falha com o erro informado acima.

PS: O arquivo PNG é bem simples...um quadrado preto.

Conheça meu blog para Aprender Laravel (Framework PHP)


#4 fly2k

fly2k

    Super Veterano

  • Usuários
  • 2262 posts
  • Sexo:Não informado

Posted 12/09/2006, 15:08

Olha, utilizo isso em diversos sistemas que já fiz. Além do que, por vias das dúvidas eu fizum teste rápido aqui... 20 vezes... e sem erros.

Estou utilizando firefox. Sobre windows. PHP4.

E voce?
Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.

#5 redstyle

redstyle

    Expert

  • Usuários
  • 540 posts
  • Sexo:Masculino

Posted 15/09/2006, 00:24

PHP 5.1.6 apache 2.2.2 (estou utilizando aquela modificação do arquivo php5 pra rodar o apache sobre windows na versão 2.2.2)

Vou fazer mais testes.

Mas você utilizou o script que enviei no post acima?

t+

Conheça meu blog para Aprender Laravel (Framework PHP)


#6 bobmatador

bobmatador

    12 Horas

  • Usuários
  • 210 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 15/09/2006, 08:41

eu usei aki cara.
e nao deu problema

=D
Sua fonte de Tutoriais na Web!
TutoriaisClube.com

#7 redstyle

redstyle

    Expert

  • Usuários
  • 540 posts
  • Sexo:Masculino

Posted 15/09/2006, 09:51

eu usei aki cara.
e nao deu problema

=D


É testei agora em outro micro com php e foi de boa também. Vou verificar as configurações do php no micro lá de casa.

valeu ai galera.

NOVO PROBLEMA

Mudei do png pro swf com o seguinte script

<?php

// abre o arquivo em modo binário
$name = "../../aula.swf";
$fp = fopen($name, 'rb');

// envia os headers
header("Content-Type: application/x-shockwave-flash");
header("Content-Length: ".filesize($name));

// manda a imagem e para o script
fpassthru($fp);
exit;

?>

e no firefox vai de boa mais no IE abre um monte de escritos estranhos.

Edição feita por: redstyle, 15/09/2006, 09:59.

Conheça meu blog para Aprender Laravel (Framework PHP)


#8 The Tamer

The Tamer

    'F' motivos para se gostar de Hexa

  • Usuários
  • 185 posts
  • Sexo:Não informado

Posted 18/10/2006, 23:38

Alguém saberia me dizer, qual a performance deste script, quando falamos de arquivos de 170MB por exemplo?

Ele vai bufferizando o arquivo ou ele carrega na memória e joga depois no conteúdo do arquivo...

Se for a segunda opção, eu posso acabar com meu servidor fazendo isso =)

Obrigado
__________________________________________
The Tamer
Quando morrer, escrevam em minha lápide: </life>

Blog: http://www.dtsoftware.eti.br/
MCWD - Macromedia Certified Web Designer MX




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq