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

karva

[PHP]Sistema de Redireccionamentos

18 mensagens neste tópico

<?
$pagina = "http://localhost/link.php"; //localizacao da pagina

$ligacao = mysql_connect("localhost","root",""); //ligacao a base de dados
mysql_select_db("link", $ligacao);

$action = $_GET['action']; //verificacao da accao a realizar
switch ($action) {

case "redir": 
$id = addslashes($_GET['id']);
$query = mysql_query("SELECT * FROM link WHERE id = '$id'"); //query correspondente ao id do link
$num = mysql_num_rows($query);
if ($num < 1) {
echo "Erro, ligação inexistente!"; //se o id nao existir
}
else
{
$endereco = mysql_result($query, 0, "link"); //passar o link para a variavel
echo "<meta http-equiv=\"refresh\" content=\"0;url=$endereco\">"; //redireccionar
}
break;
case "add":
$hora = time();
$link = addslashes($_POST['link']);
$query = mysql_query("INSERT INTO link (id, link, time) VALUES (NULL, '$link', '$hora')"); //inserir dados na base de dados
if (!$query) {
echo "Erro na inserção na base de dados.<br />Por favor contacte o administrador";
}
else
{
$ver = mysql_query("SELECT * FROM link WHERE link = '$link' AND time = '$hora'"); //verificar o id atribuido pelo mysql
$num = mysql_num_rows($ver);
if ($num < 1) {
echo "Erro! Por favor tente novamente.";
}
else
{
$id = mysql_result($ver, 0, "id");
echo "Endereço inserido com sucesso!<br />Pode testar o seu link aqui: <a href=\"$pagina?action=redir&id=$id\">Link</a>"; //ligacao para o link recem-criado
}
}
break;
default: //form de insercao
echo "<form action=\"link.php?action=add\" method=\"post\" />
Insira o endereço a redireccionar:<br />
<input type=\"text\" name=\"link\" value=\"http://\"><br />
<input type=\"submit\" value=\"Submeter\" />";

}
?>

Fica aqui a query para o mysql:

CREATE TABLE `link` (
  `id` int(12) NOT NULL auto_increment,
  `link` text collate latin1_general_ci NOT NULL,
  `time` int(64) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=11 ;

Espero que curtam ;)

BUG detectado:

se o endereço não começar por http:// , ele vai dar erro, vou tentar resolver o assunto

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O sistema parece-me porreiro, no entanto, faltam-lhe alguns comentários para compreenção e alguma organização do código para melhor leitura. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O sistema parece-me porreiro, no entanto, faltam-lhe alguns comentários para compreenção

done

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ele refere-se por exemplo, à formatação do código, podia estar bem melhor, tudo organizado por níveis, etc... ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois, quanto a isso, sempre me disseram que sou muito desorganizado...

Então começa a fazer tudo certinho, pois vai ajudar-te a ti próprio e aos outros a entender o código.

Se queres uma boa linguagem para aprender isso tentar escrever código em Python pois obriga-te a usar os níveis de formatação correctos. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois, quanto a isso, sempre me disseram que sou muito desorganizado...

Então começa a fazer tudo certinho, pois vai ajudar-te a ti próprio e aos outros a entender o código.

Se queres uma boa linguagem para aprender isso tentar escrever código em Python pois obriga-te a usar os níveis de formatação correctos. :)

Python é que não D: ;)

Sim, convem sempre organizar o nosso código. Para perceber o cód do karva tive quase que o copiar po notepad e organizá-lo eu :\

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

BUG detectado:

se o endereço não começar por http:// , ele vai dar erro, vou tentar resolver o assunto

Isso é fácil de resolver:
# trocar o echo da tag meta por:
if(!headers_sent()) header("Location: $endereco");
else echo '<script type="text/javascript">
window.location = "$endereco"
</script>
<noscript><meta http-equiv="refresh" content="0;url=$endereco"></noscript>';

Desculpem o off-topic, mas Python não porquê? :)

Porque tás a tentar-me a ir aprender python quando eu devia tar a fazer o trab de mat para entregar amnh ;)

nota, trocar o http://www.google.com/ por $pagina :\

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpem o off-topic, mas Python não porquê? ;)

Porque tás a tentar-me a ir aprender python quando eu devia tar a fazer o trab de mat para entregar amnh :)

Estás como eu! :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpem o off-topic, mas Python não porquê? ;)

Porque tás a tentar-me a ir aprender python quando eu devia tar a fazer o trab de mat para entregar amnh :)

Estás como eu! :D

"NÃO,  NÃO SOU O ÚNICOOOOOOOOOOOO!" :D

[me=djthyrax]<- chanfrado da mona. completamente.[/me]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Teste de mat amanhã e tou aqui por isso não se queixem, não estudei para este teste :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Teste de mat amanhã e tou aqui por isso não se queixem, não estudei para este teste :)

mas mat nao e assim mt de estudar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Teste de mat amanhã e tou aqui por isso não se queixem, não estudei para este teste :)

Pois, mas eu nnc estudo para os testes e safo-me. O trabalho tenho mesmo que o fazer.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora parece-me que tens ai uma falha de segurança :)

Não podes pegar no ID passado no GET e ler algo directamente da base de dados. Com essa falha qq pessoa tem acesso a tudo o que lá tens e pior, podem fazer update e apagar coisas!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora parece-me que tens ai uma falha de segurança :)

Não podes pegar no ID passado no GET e ler algo directamente da base de dados. Com essa falha qq pessoa tem acesso a tudo o que lá tens e pior, podem fazer update e apagar coisas!

sim, mas ainda não chegámos aí ;)
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