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

dikx

[Resolvido] Gestão de URL's

17 mensagens neste tópico

Boas, eu precisava de fazer um sistema , do tipo tenho um um login para um serviço , que me vai gerar um link ..

Eu precisava de ter assim - http://dominio.net/index.php?id=123, que correspondia ao link do download - http://dl.123.share.net/vacamuah.iso

Então é assim, precisava de saber o que fazer .. já tive a falar com pessoal... e até aqui no fórum com ajuda do pessoal, posso usar o cUrl, mas a minha duvida esta aqui ..

Como adiciono o link original para corresponder ao ficticio ?

A minha outra hipotese seria fazer um index.php, e um add.php - onde no add.php, metia o link original, e depois o link fícticio escolhido por mim , por exemplo..

Penso que seria assim ..

// index.php-DC

// ligação à bd
...

if ( $_SERVER["useragent"] = "blabla") {

//Através de MySQL buscar o link referente ao ID e associa-lo a $redirectlink
consulta SELECT orig FROM tabela WHERE id = $_GET["id"]

header('location:" . $redirectlink);

} else {

// Enviar para página erro.php
header("location:http://dominio.com/erro.php");
}

Obrigado pelo tempo  dispensado a ler isto ..

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ya... em vez de fazeres o header fazias readfile

replace

header("location: ".$redirectlink);

por

readfile($redirectlink);

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, então quer dizer que e melhor pelo código que eu postei não é ? usando um base de dados .., nomeadamente com as correções feitas :

// index.php-DC

// ligação à bd
...

if ( $_SERVER["useragent"] = "blabla") {

//Através de MySQL buscar o link referente ao ID e associa-lo a $redirectlink
consulta SELECT orig FROM tabela WHERE id = $_GET["id"]

readfile($redirectlink);

} else {

// Enviar para página erro.php
header("location:http://dominio.com/erro.php");
}

--------------------------

Agora a minha dúvida é como e que associo o $redirectlink , através de um select na base de dados ?

Outra questão é , na  bd apenas preciso de 2 campos não é verdade ?

o original(onde meto o url original), e o ficticio ?

Cumprimentos, e Obrigado pela ajuda

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na base de dados teras de ter apenas o ID e o link.

Depois no teu script PHP vais buscar o link atraves do ID

do genero: http://www.teudominio.com/file.php?id=24

     $file_id = addslashes($_GET['id']);
     $result = @mysql_query("SELECT link FROM tabela_links WHERE id = '$file_id'");
     list($link) = @mysql_fetch_array($result);

    $filename = explode("/", $link);
    $filename = $filename[count($filename) - 1];

     header('Content-Type: application/octet-stream');
     header('Content-Disposition: attachment; filename="'.$filename.'"');
     @readfile($link);

Não testei fiz agora a pressão mas nao sei se funciona com links externos o readfile(); entretanto dá para teres uma ideia :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pequena correcção

     $file_id = mysql_real_escape_string($_GET['id']);
     $result = @mysql_query("SELECT link FROM tabela_links WHERE id = '$file_id'");
     list($link) = @mysql_fetch_array($result);

    $filename = explode("/", $link);
    $filename = $filename[count($filename) - 1];

     header('Content-Type: application/octet-stream');
     header('Content-Disposition: attachment; filename="'.$filename.'"');
     readfile($link);

Em relação ao readfile, ele deve dar para links externos. Caso não dê, usa echo file_get_contents($link);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, peço desculpa mas isto tá me a dar as voltas a cabeça :P  :)

Tenho o seguinte código

<?php
// ligação à bd


$conexao = mysql_connect("xxx", "xxxxx", "xxx");
$db = mysql_select_db("xxxx");



if ( $_SERVER["useragent"] = "blabla") {

     $file_id = mysql_real_escape_string($_GET['id']);    
     $result = @mysql_query("SELECT link FROM tabela_links WHERE id = '$file_id'"); 
     list($link) = @mysql_fetch_array($result);   
     $filename = explode("/", $link);  
     $filename = $filename[count($filename) - 1];   
     header('Content-Type: application/octet-stream');    
     header('Content-Disposition: attachment; filename="'.$filename.'"');     
     readfile($link); 


} else {

// Enviar para página erro.php
header("location:http://link.net/erro.php");
}
?>

Já tenho a db feita em mysql, tabela - "tabela_links" , e campos "id" e "link"

Eu sei q me falta qualquer coisa :S, noob question ..  :P

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, o erro é este :s

"Parse error: syntax error, unexpected $end in /home/tugapc/public_html/vip/php.php on line 30"

ou seja o final :S  -    "?>"

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Onde ta

$_SERVER["useragent"] = "blabla"

tens que por:

$_SERVER["useragent"] == "blabla"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, já mudei , obrigado, mas continua a dar o mesmo erro também ..

"Parse error: syntax error, unexpected $end in /home/tugapc/public_html/vip/php.php on line 30"

ou seja o final :S  -    "?>"

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Faltam-te ; } ou outras coisas. Indenta o código e vê.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

man tens de postar ai o teu code todo! esse codigo ai em cima q mostraste nao tem 30 linhas!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, peço desculpa não ter respondido antes..

o código é o seguinte :

<?php
// ligação à bd


$conexao = mysql_connect("xxx", "xxxxx", "xxx");
$db = mysql_select_db("xxxxxx");


if ( $_SERVER["useragent"] == "link") {

     $file_id = mysql_real_escape_string($_GET['id']);    
     $result = @mysql_query("SELECT link FROM tabela_links WHERE id = '$file_id'"); 
     list($link) = @mysql_fetch_array($result);   
     $filename = explode("/", $link);  
     $filename = $filename[count($filename) - 1];   
     header('Content-Type: application/octet-stream');    
     header('Content-Disposition: attachment; filename="'.$filename.'"');     
     readfile($link); 

} else {

// Enviar para página erro.php

header("location:http://xxx/erro.php");
}

?>

Já consegui resolver a parte do erro..

Agora tenho 2 problemas..

1º é : Ao colocar um user agent definido, ele dá logo erro ( ou seja saca o file erro.php) , usando o flashget e definindo o protocolo como link...

Entretanto se meter em branco e em branco..

Ele "supostamente" funciona

mas isto leva ao 2 problema  , ele encontra o link e indentifica o file..

mas saca um ficheiro de cerca de 486 bytes,, ou seja Nada..

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

1) $_SERVER['HTTP_USER_AGENT']

2) 486 bytes != nada. De onde vêm esses bytes? Confirma que $link está correcto...

Boa sorte  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, obrigado pela correção, ja ta a funcionar a função if com o HTTP user agent .. e já funciona,

Agora o segundo problema mantem-se, mas ,agora é um ficheiro de 20 kb, com o nome do ficheiro,bem como extensão correcta, mas ao fazer abrir o ficheiro com o bloco de notas ,

consigo ver os seguintes erros..

Warning: readfile(): Circular redirect, aborting. in /home/xxx/public_html/xtre/php.php on line 18

Warning: readfile(http://webprod17.megashares.com/index.php?d01=a8420b8&lcc=675812bf5487eb1:-1:-1:1300729600:0:1:0&lccdl=edcaa03f7abac583377188c75de328f0&sq=&d01go=1&fln=/zry_sup.iso): failed to open stream: Permission denied in /home/xxx/public_html/xtre/php.php on line 18

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, o link eu tenho directo ;)

Mas, é a minha conta premium, mas se quiseres posto o link directo ..

Mas de qualquer maneira da me esse erro :S

Alguem sugestão ?

Cumprimentos

EDIT:

Boas, tudo resolvido :) Agradecimento ao pessoal todo , e também ao Triple que me ajudou ..

Agora lá vou eu estudar cUrl, afinal , 1 ºproblema resolovido , outro que vem xD

é assim a vida..

Cumprimentos

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