• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

laptop07

Download de Ficheiros

35 mensagens neste tópico

A minha dúvida é a seguinte:

Quando o utilizador insere o link de um ficheiro para download ele reencaminha para outra página, para ser inserido o código de validação para se poder efectuar o download do respectivo ficheiro (tipo RapidShare).  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A minha dúvida é a seguinte:

Quando o utilizador insere o link de um ficheiro para download ele reencaminha para outra página, para ser inserido o código de validação para se poder efectuar o download do respectivo ficheiro (tipo RapidShare).  :P

Não percebia dúvida  :D

Não sabes como fazer um captcha?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sei, mas imaginando que o ficheiro tem o nome 'a.exe' :

Na barra de endereço coloco 'http://(site)/a.exe' e ele começa a fazer o download.

Mas o que eu queria é que não fizesse download e reencaminha-se para uma página onde seria pedido a confirmação por captcha e só no fim de o user ter inserido o código bem é que começava a fazer o download do respectivo ficheiro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por exemplo:

Na página principal (index.php) tens os seguintes links:

Download 1

Donwload 2

Download 3

Ao cliclares num dos links envias o url (ou um dados do arquivo que depois te permita pegar o url do arquivo) para a página onde está o captcha (captcha.php)

E depois ao verificar o captcha, se estiver correcto, então ai redirecciona para o url do arquivo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Até ai já tinha chegado a essa conclusão. Mesmo com isso mantém-se o problema.

Imaginamos que o user sabe o link do ficheiro para download e coloca-o na barra de endereços o download começa sem passar pela tal página do captcha.  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Rapidshare e afins usam a multiplicação de ficheiros para um local temporário.

Contudo há uma maneira mais simples de fazer isso. Primeiro proteges os ficheiros através de um ficheiro htaccess que bloqueia o acesso à directoria dos ficheiros.

Depois fazes o download por php com esta técnica http://www.ryboe.com/tutorials/php-headers-force-download ou similar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exactamente o que tu queres, envolve fazeres umas quantas modificações no .htaccess do Apache. Para que quando alguém tentasse aceder directamente a um ficheiro numa determinado directório, tu simplesmente redireccionavas (internamente, o endereço iria ficar igual) para uma página PHP que tratasse desse problema e do captcha.

Recomendo-te a dar uma vista de olhos ao mod_rewrite do Apache. Se o configurares bem, faz aquilo que queres. Claro que terás de programar o captcha e as validações à parte em PHP.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Também dá alterando as definições do chmod ou  é mesmo necessário o htaccess (para mim o htaccess  não é muito português).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usares o .htaccess como o Battousai disse, não tem nada que saber e é uma forma fácil de contornares o teu problema. Se quiseres usar o mod_rewrite para permitir endereços directos aos ficheiros mas que passem pelo captcha, já dá um pouco mais de trabalho...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já tive a ver os teus dois links e o primeiro percebi lindamente agora o segundo vamos ver se entendi:

1) Coloco o .htaccess na pasta respectiva.

2) Colar o seguinte código.

<Files htaccesspower.pdf>

order allow,deny

deny from all

</Files>

Este serve para bloquear apenas o 'htaccesspower.pdf'.

<FilesMatch ".(pdf|mp3)$">

Order Allow,Deny

Deny from all

</FilesMatch>

Este para os ficheiros com as extensões 'pdf' e 'mp3'.

Estou correcto?  :P

Em relação ao mod-rewrite coloca-se onde? No .htaccess?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ao usar mod_rewrite há alguma forma de enviar para a página para onde ele reencaminhar o endereço do ficheiro que ele bloqueou?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se quiseres que ele vá para a página de captcha específica ao teu ficheiro, tens que redireccionar para uma outra página de php e validar o endereço pedido, se for necessário.

Senão podes simplesmente enviar qualquer pedido para uma página http://www.oteusite.com/downloads/ por exemplo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O .htaccess ficaria assim:

<Files htaccesspower.pdf>

order allow,deny

deny from all

</Files>

LoadModule rewrite_module modules/mod_rewrite.so

AddModule mod_rewrite.c

Options +FollowSymLinks

RewriteEngine on

RewriteRule (.*) http://(site)/(pagina)/ [R=301,L]

Neste caso reencaminharia apenas para  'http://(site)/(pagina)'';

Agora ainda não entendi o que tenho de fazer mais para enviar o endereço da página que o user escreveu e deu erro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Penso que não podes usar o deny e o mod_rewrite juntos, experimenta. (Poder podes, mas pode revelar-se redundante)

Para enviares o pedido do cliente basta meteres $1 no endereço final: http://(site)/(pagina de validação).php?ficheiro=$1

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

LoadModule rewrite_module modules/mod_rewrite.so

AddModule mod_rewrite.c

Options +FollowSymLinks

RewriteEngine on

RewriteRule (.*) http://(site)/(pagina)/ [R=301,L]

Este código está correcto ou falta alguma coisa? A mim dá-me um erro no Apache.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tira

LoadModule rewrite_module modules/mod_rewrite.so

AddModule mod_rewrite.c

E só para confirmar:

Estás a substituir isto http://(site)/(pagina)/ pelos dados certos?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Continua a dar erro.

E estou a substituir pelos dados certos.

Mensagem: 'Either the server is overloaded or there was an error in a CGI script.'.  :'(

Neste momento ficou:

Options +FollowSymLinks

RewriteEngine on

RewriteRule (.*) http://localhost/a.php?id=$1 [R=301,L]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ah, se tás com servidor local, é capaz de o mod_rewrite não estar activo/instalado...

Mesmo assim experimenta meter assim:

Options +FollowSymLinks

RewriteEngine on

RewriteRule ^(.*) http://localhost/a.php?id=$1 [R=301,L]

Se não der, só mesmo instalando isso no teu servidor local ou testar num alojamento qualquer.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não funcionou. Estou a usar o xampp.

O primeiro que bloqueava apenas funciona.

Obrigado a todos! :P  :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Essa função é implementada pelo pacote pecl_http do PECL, ou seja, não vem de origem no PHP e duvido que encontres um host que o tenha.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora