Systém komentářů pomocí jQuery a Ajax.

 2012-10-27 00:00:00
 Dmitry Burobin

Dnes vytvoříme systém komentářů s automatickou kontrolou vstupních dat pomocí technologie Ajax a přidáváním nového komentáře s použitím jQuery bez znovunačtení stránky.

Série článků:
1) Systém komentářů pomocí jQuery a Ajax.
2) Lajkování neboli karma u komentářů.
3) Strankování.

Vytvoření tabulky a připojení k databázi.

Vytvoříme si tabulku comments, do které budeme ukládat: identifikátor komentáře ( id ), identifikátor rodičovského komentáře ( parent_id ), jméno ( name ), text komentáře ( text ) a datum přidání komentáře ( date ).

CREATE TABLE `comments` (
`id` INT ( 5 ) NOT NULL AUTO_INCREMENT,
`parent_id` INT ( 5 ) NOT NULL,
`name` VARCHAR ( 255 ) NOT NULL,
`komentar` TEXT,
`date` DATETIME,
PRIMARY KEY(`id`)
)ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci

Taktéž si vytvořte soubor db.php, pro připojení k databázi.
<?php
$DBSERVER 'localhost'//server, který bude použít pro navázáníspojení s DB 
$DBUSER 'root'//Váš mysql login, nejspíš je stejný jako u mě pro localhost, tudiž root 
$DBPASS '****'//heslo, které jste zadaval při instalaci MySQL 

$DB 'test'//databáze, s kterou budeme pracovat 

//navazení spojení pomoci mysql_connect  
$link mysql_connect($DBSERVER$DBUSER$DBPASS)  or die("Could not connect: " mysql_error()); 
//vybírame databázi 
mysql_select_db($DB$link) or die ('Can\'t use test : ' mysql_error()); 
//řekněme MySQL, že všechná data jsou ve formatu UTF-8 
mysql_query("SET NAMES UTF8");
?>

index.php

Hlavní stránka bude obsahovat formulář pro přidávání komentářů s polem pro jméno, zprávu a skryté pole, do kterého budeme ukálát identifikátor rodičovského komentáře, pokud někdo bude odpovídat na nějaký komenář. Soubor index.php vypadá takto:

<?php
/*Soubor pro vybírání komentářů z databáze*/
require_once 'comment.php';
?>
<!DOCTYPE html>
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">

<
head>
    <
title>Systém komentářů.</title>
    <
meta charset="utf-8" >
    
    <
link rel="stylesheet" href="style.css"> <!-- soubor se styly -->
    <
script src="jquery-1.7.1.min.js"></script> <!-- připojení jquery -->
    <script src="comment.js"></script> <!-- funkce potřebné pro přidávání komentářů -->
    
</head>
<body>
<ul id="commentWrapper">
<?php
/*Zde v proměnné $comments jsou komentáře*/
echo $comments;
?>
<!-- formulář pro přidávání komentářů -->
</
ul>    
    <
div id="commentBox">
        <
input class="validate" type="text" name="name" >
        <
input id="parent" type="hidden" name="parent_id" value="">
        <
div class="commentText">
            <
textarea name="text"></textarea>
        </
div>
        <
button>Přidat</button><img class="loader" src="loader.gif">
    </
div>
</
body>
</
html>

Styly a knihovna jQuery

Pro správné fungování potřebujeme připojit knihovnu jQuery. Tu buď stáhnete z oficiálního webu nebo z archivu s tímto článkem. Pak, aby komentáře líp vypadali přidáme styly, nic složitého v nich není, proto je nebudu popisovat:

body
{
    
margin:0;
    
padding:0;
}
ulli
{
    list-
style-type:none;
}
.
loader
{
    
display:none;
}
#commentBox
{
    
width:400px;
    
padding:10px;
}
#commentBox input
{
    
width:250px;
    
height:25px;
    
padding0 5px;
    
margin:5px;
    
bordersolid 1px #ccc;
    
background:#f1f1f1 url(bg_input.png) no-repeat;
    
font400 12pt/14pt Ume Gothic O5;
}
#commentBox textarea
{
    
width:250px;
    
height:100px;
    
margin5px;
    
padding5px;
    
bordersolid 1px #ccc;
    
background:#f1f1f1 url(bg_koment.png) no-repeat;
    
font400 12pt/14pt Ume Gothic O5;
}
#commentBox button
{
    
height:30px;
    
width:85px;
    
margin-left183px;
    
margin-top:0px;
    
font:700 12pt/14pt Ume Gothic O5;
}
#commentWrap
{
    
width:350px;
    
padding:10px;
    
padding-bottom:3px;
    
margin:10px;
    
border1px solid #ccc;
    
border-radius:10px;
    
background:#f7f7f7;
}
#commentWrap .komentar
{
    
padding:5px;
    
padding-left:0px;
    
border-top:1px solid #ccc;
    
margin-bottom:10px;
    
font:400 12pt/14pt Times New Roman;
}
#commentWrap .replay
{
    
margin-left:270px;
    
font:700 10pt/12pt Ume Gothic O5;
}
#commentWrap a
{
    
text-decoration:none;
}
#commentWrap .commentName
{
    
font:700 10pt/12pt Ume Gothic O5;
}
#commentWrap .commentDate
{
    
font:400 11pt/13pt Times New Roman;
}
.
repName
{
    
font:400 12pt/14pt Times New Roman;
    
font-style:italic;
}
.
repText
{
    
font:700 10pt/12pt Ume Gothic O5;
}
.
repDate
{
    
font:400 9pt/11pt Times New Roman;
    
font-style:italic;
}

comment.php

Tento soubor je určen pro vybírání dat z databáze a vkládání těchto dat do šablony.

<?php
// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce ) 
require_once 'db.php';

// Vybereme komentáře z databáze
$query mysql_query("
         SELECT `id`,`parent_id`,`name`,`komentar`, 
         DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add
         FROM `comments` ORDER BY `id` ASC 
         "
);
         
// Pokud při vykonání příkazu nastané chyba vypišeme ji
if(!$query) { echo mysql_error() . " - " mysql_errno(); }
else {

// Jinak pomocí cyklusu projdeme všechny záznamy v tabulce
        
while($result mysql_fetch_assoc($query))
        {
            
// a uložíme je do pole $data  
            
$data[$result['id']] = $result;
        }

// Funkce pro vkládání dat ( komentářů ) do šablony
function commentsToTemplate($comment)
{
// $comment - pole komentáře - id, parent_id, name, text, date 
    
// Zapneme bufferování výstupu, aby šablona nebyla zobrazená v místě volání funkce
    
ob_start();  
      
// Připojíme šablonu comment_template.php, do které vložíme data z pole $comment
    
require_once 'comment_template.php';                     
  
// Získáváme obsah bufferu jako řetězec   
    
$comments_string =  ob_get_contents(); 

// Vymažeme všechno z bufferu
    
ob_end_clean();

// Vrácíme komentář jako řetězec   
    
return $comments_string;    
}

// Funkce pro zpracování pole $data, které
// bude rozděleno do jednotlivých komentářů a odesláno funkci 
// commentsToTemplate
function commentsString($data)
{
    foreach(
$data as $w
    {
        
$string .= commentsToTemplate($w);
    }
 
return 
$string
}  

// proměnná $comments obsahuje naše komentáře, které zobrazujeme na hlavní stránce
$comments commentsString($data);

// vynulujeme proměnnou $data 
$data null;
}
?>

comment_template.php

Toto je vlastně šablona jednotlivého komentáře.

<?php
// Do této šablony se načítají data z pole $data, která jsou odesláná funkci commentsToTemplate
echo '<li id="comment'.$comment['id'].'">
    <div id="commentWrap">'
;
        
// Pokud existuje parent_id, pak zobrazíme, že se jedna o odpověď
        
if($comment['parent_id']!=0)
        {
// Vybereme z DB jméno a datum rodičovského komentáře
            
$q mysql_query("SELECT `name`, DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add FROM `comments_my` WHERE `id`='".$comment['parent_id']."'");
            
$r mysql_fetch_assoc($q);
            echo 
'<span class="repText">Odpověď na komentář</span> <span class="repName">
            '
.$r['name'].'
            </span> <span class="repText">from</span> <span class="repDate">
            '
.$r['date_add'].'
            </span><br>'
;
        }
        
// Zobrazíme jméno a datum přidání
echo    '<span class="commentName">'.$comment['name'].'</span> - <span class="commentDate">'.$comment['date_add'].'</span>
        <div class="komentar">
<!--Zobrazíme text komentáře-->
            '
.$comment['komentar'].'
        </div>
<!--Pokud zmačkneme na tento odkaz, pak se do skrýteho pole s názvem parent_id přidá
identifikátor tohoto komentáře. 
Použil jsem zde JS událost onClick, tzn. pokud je tlačítko zmačknuté, pak najdi prvek s 
id parent ( což je skrýte pole parent_id ) a do hodnoty přidej id komentáře, na který chcete odpovědět-->
        <a class="replay" href="javascript:;"
        onClick="document.getElementById(\'parent\').value='
.$comment['id'].';">Odpovědět</a>
    </div>
</li>'
;
?>

comment.js

Tento soubor je určen pro odesílaní dat na server a přidávání do databáze

$(document).ready(function(){
    
// Objekt commentBox bude obsahovat data pro odesílání na server
    
var commentBox = {};
    
// Po kliknutí na tlačítko přidat      
     
$('#commentBox button').live('click',function(){
         
// Do objektu commentBox bude přidána hodnota skrýteho pole input s názvem parent_id,
// které obsahuje id rodičovského komentáře a pokud je prázdné tak bude 0, což znamená, že
// se jedná o nový komentář bez reakci na něj ( toto se bude ověřovat až odešleme data na server ).   
        
commentBox.parent_id = $('#commentBox').find("input[name='parent_id']").val();
        
// Taktéž přidáme do objektu commentBox hodnotu pole name a zprávu
        
commentBox.name = $('#commentBox').find("input[name='name']").val();        
        
commentBox.text = $('#commentBox').find("textarea").val();
// Abyste to lépe pochopili syntaxe toho, jak přidáváme hodnoty do objektu je:
// Objekt.název_proměnné = hledáme input nebo textarea.hodnota pole

// Funkce pro odesílání dat na server        
        
sendData();
     });
    

function 
sendData()
{
// Najdeme tlačítko schováme jej a zobrazíme loader ( ten si můžete stáhnout z archivu )
    
$('#commentBox').find('button').hide().next().show();

// Odešleme    data metodou post na server
    
$.post(
// Soubor, ve kterém se provádí ověřování dat a přidávání komentářů     
        
"addkoment.php",
// Objekt s proměnnými (parent_id, name a text)
        
commentBox,
        function(
data){
// Pokud jsou nějaka data, to znamená, že nastala chyba
            
if(data)
            {
// Převedeme tento řetězec JSON do objektu JS
                
data = $.parseJSON(data);
                
// Vytvoříme proměnnou errors, která bude obsahovat název chyby
                
var errors '';

// Použijeme cyklus pro zobrazení všech chyb najednou.
// Použil jsem tuto konstrukci, protože nejprvé jsem zobrazoval všechny chyby, ale
// nakonec jsem to změnil a teď se bude zobrazovat jenom jedna konkretní chyba     
// Kdybyste chtěli zobrazit všechny chyby tak použijte konstrukci
// errors += val+'\n'; - každá chyba se zobrazí na samostatném řádku.
// i - obsahuje název chybného pole a val - popis chyby
            
                
$.each(data, function(ival)
                {
                    
errors += i;
                });

// Uložil jsem do proměnné errors jenom název chybného pole a
// cyklusem switch procházim všechny varianty a přidávam červený rámeček 
// pokud pole je prázdné nebo jestli komentář nebyl přidan tak zobrazim hlášení                    
                   
switch (errors
                   {
                      case 
'name':
                        $(
'#commentBox').find("input[name='name']").css('border','2px solid red');
                        break
                      case 
'text':
                        $(
'#commentBox').find("textarea").css('border','2px solid red');
                        break
                      case 
'not_add':
                        
alert('Komentář nebyl přidan.')
                        break
                      default:
                        
alert('Něco je špatně')
                  }

// Najdeme loader ( ten si můžete stáhnout z archivu ) schováme jej a zobrazíme tlačítko přidat     
                
$('#commentBox').find('button').show().next().hide();

// Jinak, pokud žadná chyba nenastala, tak voláme funkci addComment, která zobrazí
// komentář bez znovunačtení stránky a vynuluje hodnoty vstupních poli
            
} else {
                
addComment();        
            }
        }
    
    )

}


function 
addComment()
{
// Na konec prvků s id commentWrapper ( což je ul ) přidame tag <li></li>,
// ve kterém se bude nacházet nový komentář
    
$("#commentWrapper").append('<li></li>');

// Najdeme poslední tag <li>, který jsme teď vytvořili a
// načteme do něj poslední komentář
    
$("#commentWrapper li:last").load('new_comment.php');
// Najdeme loader ( ten si můžete stáhnout z archivu ) schováme jej a zobrazíme tlačítko přidat     
    
$('#commentBox').find('button').show().next().hide();

// Vynulujeme hodnoty vstupních poli
    
$('#commentBox input').val('');
    $(
'#commentBox textarea').val('');

}


});

addkoment.php

Tento skript zpracovává data poslána na server pro zpracování.

<?php
// Ověříme, zda se jedna o odeslána POST data nebo si člověk jen tak otevřel tuto stránku
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {

// Pokud ano, pomocí funkci sleep přidame efekt zpoždění, abyste 
// viděl loader, jinak, protože pracujeme na lokálním serveru
// se ten loader hned schová  
     
sleep(2);

// Ověříme vstupní data     
// Pokud je pole name nebo textové pole prázdné do pole $error uložíme text chyby
// ukončíme skript a odešleme tuto chybu v JSON formátu  
     
if(!isset($_POST['name']) OR empty($_POST['name']))
     {
        
$error['name'] = "Zadejte jméno.";
        exit(
json_encode($error));
     } else {
        
$name htmlspecialchars(stripslashes(trim($_POST['name'])));
     }
     
     if(!isset(
$_POST['text']) OR empty($_POST['text']))
     {
        
$error['text'] = "Zadejte zprávu.";
        exit(
json_encode($error));
     } else {
        
$text stripslashes(htmlspecialchars(trim($_POST['text'])));
     }
     
// V tomto případě, když parent_id je prázdné pole tak mu přiřadime hodnotu 0
// to znamená, že se jedná o nový komentář, který není odpovědí na něčí jiný  
     
if(!isset($_POST['parent_id']) OR empty($_POST['parent_id']))
     {
        
$parent_id 0;
     } else {
        
$parent_id stripslashes(htmlspecialchars(trim($_POST['parent_id'])));
     }
     
// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce )  
     
require_once 'db.php';
     
// Přidame komentář do databáze a vrátíme false, tzn.
// že chyba nenastala a komentář byl přidán.
     
$q mysql_query("
     INSERT INTO `comments`(`parent_id`,`name`,`komentar`,`date`)
     VALUES('"
.$parent_id."','".$name."','".$text."', NOW())
     "
);
     if(!
$q) { $error['not_add'] = "Komentář nebyl přidan."; exit(json_encode($error));}
     else { exit(
false); }

}
?>

new_comment.php

V tomto souboru vybírame poslední komentář, abysme ho následně zobrazili po úspěšnem ověření vstupních dat.

<?php
// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce ) 
require_once 'db.php';
// Vybereme maximální ( poslední přidáný ) id
$max mysql_query("SELECT MAX(`id`) FROM `comments_my`");
// Pak vybereme všechny související údaje s tímto identifikátorem
$query mysql_query("
         SELECT `parent_id`,`name`,`komentar`, 
         DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add
         FROM `comments_my` WHERE `id` = '"
.mysql_result($max,0)."'
         "
);
$comment mysql_fetch_assoc($query);

// A stejně, jak jsme zobrazovali komentáře před tím, zobrazíme poslední přidáný
echo '<li id="comment'.mysql_result($max,0).'">
    <div id="commentWrap">'
;
        
        if(
$comment['parent_id']!=0)
        {
            
$q mysql_query("SELECT `name`, DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add FROM `comments_my` WHERE `id`='".$comment['parent_id']."'");
            
$r mysql_fetch_assoc($q);
            echo 
'<span class="repText">Odpověď na komentář</span> <span class="repName">
            '
.$r['name'].'
            </span> <span class="repText">from</span> <span class="repDate">
            '
.$r['date_add'].'
            </span><br>'
;
        }
        
echo    
'<span class="commentName">'.$comment['name'].'</span> - <span class="commentDate">'.$comment['date_add'].'</span>
        <div class="komentar">
            '
.$comment['komentar'].'
        </div>
        <a class="replay" href="javascript:;"
        onClick="document.getElementById(\'parent\').value='
.mysql_result($max,0).';">Odpovědět</a>
    </div>
</li>'
;
?>

Závěr

Probrali jsme, jak můžeme zpracovávát formuláře bez znovunačtení stránky. Doufám, že se Vám tento článek líbil a byl pro Vás přínosný.

Systém Orphus
Napište komentář.
Celkem komenrářů(11211)
Angelael - 2017-11-25  23:43:15
 [b]Геошторм фильм 2017 смотреть онлайн без регистрации 13.11.2017 r d z[/b]

[url=http://bit.ly/2xMN3zu][IMG]http://i89.fastpic.ru/big/2017/1030/91/fe3f2fa38f3cf2c22a3599f02bf72a91.jpg[/IMG][/url]

[url=http://bit.ly/2xMN3zu][b]Смотреть фильм Геошторм[/b][/url]
[url=http://bit.ly/2xMN3zu][b][color=red]Смотреть фильм Геошторм[/color][/b][/url]
[url=http://bit.ly/2xMN3zu][b][color=green]Смотреть фильм Геошторм[/color][/b][/url]

















У нас посмотреть фильмы 2017 года онлайн можно бесплатно и без регистрации.Продолжительность: 105 мин.01:45. Премьера (РФ): .2017.
Смотрите онлайн фильмы в хорошем качестве или скачайте кино с торрента бесплатно на сайте Геошторм (2017)Скачать торрентСмотреть онлайнПланета обезьян: Война (2017)Продолжительность: 01:36:00
Геошторм Опубликовано: 04:24:15, 21 Oct 2017Озвучка: Русский (Дублированный (Звук с CAMRip)); В качестве: CAMRip; Режиссер:
Смотреть лучшие фильмы онлайн бесплатно в хорошем качестве, кино без регистрации и смс - Кино онлайн, фильмы, сериалы, мультфильмы. Высокое HD качество, Новинки выходят каждый день.ТВфру.Геошторм. CAMRip
Трейлер все онлайн фильмы.онлайн фильм Геошторм.1; 2; 3; 4; 5Разместил: Admin Дата: 9-10-2017, 14:02 Просмотров: 40841Отзывов: 11.
Смотреть фильм Ночной беглец онлайн бесплатно в хорошем качестве. . 14 окт 2017фильм 1998геошторм фильм 2017только правда
Смотреть00:35. Порошенко встретился с инвесторами Horizon Capital и Вышел трейлер фильма "Геошторм" с Джерардом Батлеромв YouTube опубликовала трейлер фильма "Геошторм" режиссера Дина
Скачать торрент фильм Фокус (2015) в хорошем качестве. Главный героймолодой человек, который является опытным мошенником.
Geostorm - trailer, 2017Геошторм, трейлер online. 394. Фильм Про 2017-09-28:i RwN0akT76pLws0WYAXXwvdUYbpwIbS Geostorm - trailer,"Напарник": в чём революционность новой комедии.
Геошторм (2017). +32. -1. Фильм Геошторм (2017) в hd 720 качестве смотреть онлайн. Жанр: фильмы На этой странице представлен фильм Геошторм (2017) онлайн, его можно смотреть в хорошем hd 720 качестве. Пишите
Кинофильм о знаменитом квесте, когда игроки ищут выход из запертого здания, решая серию головоломок. Четыре молодых друзей
Геошторм (2017) смотреть онлайн бесплатно в hd 720С удовольствием включаю эту картину для просмотра онлайн сегодня в качестве hd 720, минуя всякие отговорки психологического61. Вчера, 13:16
Геошторм (2016) фильм смотреть онлайн бесплатно в хорошем качестве Фильм Капсула 2016 смотреть онлайн бесплатно в хорошем качестве полныйСериал Окно жизни 1-24,25 серия 2016 смотреть онлайн бесплатно.




Геошторм (2017) Geostorm. Качество BDRip Просмотров 32 030. Рейтинг фильма . Проголосовало 3 582 Премьера (РФ). 18 октября 2017. Режиссер. Дин Девлин.
Аритмия - Duration: 2:48. Ticketon Онлайн-покупка билетов 59 views Тэд путешественник и тайна Царя Мидаса - Duration: 1:59.
Русские трейлеры к фильмам, мультфильмам и сериалам! Интересные ролики о фильмах и их съёмках! Подпишись на канал Дата выхода в РФ - 19 октября 2017
Информация о фильме .все ролики. Тизер (русский язык). 01:21 Andrewdesignersinger 10 марта 2017, 04:14 пожаловаться Но Девлин явно скорее всего выпустит ещё 2 трейлера, покажет ещё больше и будет этим гордиться.
Дом, который построили призраки — Русский трейлер (2018) 01:21 ВОРОНА — Cosa Nostra Official Lyric Video 02:42 Геошторм — Русский трейлер 3 (2017).
другие популярные новости (смотрите ниже). Фильм Геошторм Русский трейлер В кино с 19 октября Подписывайся http Оперный певец Дмитрий Хворостовский отмечает 55-летие. Голая Ольга Бузова вчера на Music Box, сегодня - на море.
Название: Геошторм Оригинальное название: Geostorm Год выхода: 2017 Жанр: фантастика, боевик Новое на сайте. Сюрприз, сюрприз! 5 выпуск 29.09.2017.
Геошторм Geostorm (2017) CAMRipD 24-10-2017 09:20:35 (14 часов назад). Оценил на: 10. Фильм понравился, выйдет в качестве заберу в коллекцию наравне с фильмом "Разлом Сан-Андреас".
Геошторм Описание. Кадры из фильма 13:20 20:00 + Последний богатырь сдвоенный сеанс.
Главная Фильмы 2017Геошторм фильм смотреть онлайн Рекомендуем посмотреть
Кино Поиск не сохраняет в базе данных e-mail адреса, вводимые в этом окне, и не собирается использовать их для каких-либо посторонних целей.
Фильм торрент Зарубежные фильмыГеошторм (2017) скачать торрент бесплатно в хорошем качестве geoSHtorm14 (1,37 Gb).


Релевантные слова:
Геошторм фильм онлайн 2017
Геошторм фильм трейлер
Геошторм 2017 смотреть онлайн
Геошторм трейлер
фильм онлайн Геошторм
Геошторм hd онлайн
Геошторм онлайн
кино Геошторм смотреть онлайн


Хиты проката:
[url=http://gwardiapolska.pl/viewtopic.php?f=3&t=147345]Геошторм кино 13.11.2017 c p d[/url]
[url=http://www.localbitcoinsreviews.com/viewtopic.php?f=12&t=744673]Бегущий по лезвию 2049 онлайн hd 13.11.2017 c u t[/url]
[url=http://shop.smartstore24.ru/index.php?topic=12509.msg75060#msg75060]Салют-7 трейлер 2017 13.11.2017 l u j[/url]
[url=http://atechnewyork.com/index.php/forum/suggestion-box/329876-my-little-pony-13-11-2017-y-c-i#329880]My Little Pony в кино онлайн в хорошем качестве 13.11.2017 y c i[/url]
[url=http://www.washilftwenn.de/viewtopic.php?f=3&t=13690]посмотреть фильм Бегущий по лезвию 2049 13.11.2017 f q k[/url]
[url=http://forum.shoutout.ie/viewtopic.php?f=3&t=626056]Салют-7 художественный фильм 13.11.2017 a c i[/url]
[url=http://dnd-solutions.com/Tesla/phpBB3/viewtopic.php?f=2&t=589243]My Little Pony в кино новый мультфильм 13.11.2017 k u l[/url]
[url=http://www.thetunnel-art.co.uk/forum/viewtopic.php?f=15&t=2030328]Геошторм скачать торрент в хорошем качестве 13.11.2017 q u d[/url]













































































































































.
HermanTum - 2017-11-25  22:26:28
 Our team is a unique producer of quality fake documents.
We offer only original high-quality fake passports, driver's licenses, ID cards, stamps and other products for a number of countries like:
USA, Australia, Belgium, Brazil, Canada, Italia, Finland, France, Germany, Israel, Mexico, Netherlands, Sweden, Spain, United Kingdom. This list is not full.

To get the additional information and place the order just visit our website:

http://www.salepassportsfake.cc www. salepassportsfake.cc


>> Contact e-mails:


General support: support@salepassportsfake.cc


Technical support: admin@salepassportsfake.cc



-----------------------------
Keywords:

buy fake passport of Afghanistan
buy fake passport of Albania
buy fake passport of Algeria
buy fake passport of Andorra
buy fake passport of Angola
buy fake passport of Antigua & Deps
buy fake passport of Argentina
buy fake passport of Armenia
buy fake passport of Australia
buy fake passport of Austria
buy fake passport of Azerbaijan
buy fake passport of Bahamas
buy fake passport of Bahrain
buy fake passport of Bangladesh
buy fake passport of Barbados
buy fake passport of Belarus
buy fake passport of Belgium
buy fake passport of Belize
buy fake passport of Benin
buy fake passport of Bhutan
buy fake passport of Bolivia
buy fake passport of Bosnia Herzegovina
buy fake passport of Botswana
buy fake passport of Brazil
buy fake passport of Brunei
buy fake passport of Bulgaria
buy fake passport of Burkina
buy fake passport of Burundi
buy fake passport of Cambodia
buy fake passport of Cameroon
buy fake passport of Canada
buy fake passport of Cape Verde
buy fake passport of Central African Rep
buy fake passport of Chad
buy fake passport of Chile
buy fake passport of China
buy fake passport of Colombia
buy fake passport of Comoros
buy fake passport of Congo
buy fake passport of Congo Democratic Rep
buy fake passport of Costa Rica
buy fake passport of Croatia
buy fake passport of Cuba
buy fake passport of Cyprus
buy fake passport of Czech Republic
buy fake passport of Denmark
buy fake passport of Djibouti
buy fake passport of Dominica
buy fake passport of Dominican Republic
buy fake passport of East Timor
buy fake passport of Ecuador
buy fake passport of Egypt
buy fake passport of El Salvador
buy fake passport of Equatorial Guinea
buy fake passport of Eritrea
buy fake passport of Estonia
buy fake passport of Ethiopia
buy fake passport of Fiji
buy fake passport of Finland
buy fake passport of France
buy fake passport of Gabon
buy fake passport of Gambia
buy fake passport of Georgia
buy fake passport of Germany
buy fake passport of Ghana
buy fake passport of Greece
buy fake passport of Grenada
buy fake passport of Guatemala
buy fake passport of Guinea
buy fake passport of Guinea-Bissau
buy fake passport of Guyana
buy fake passport of Haiti
buy fake passport of Honduras
buy fake passport of Hungary
buy fake passport of Iceland
buy fake passport of India
buy fake passport of Indonesia
buy fake passport of Iran
buy fake passport of Iraq
buy fake passport of Ireland Republic
buy fake passport of Israel
buy fake passport of Italy
buy fake passport of Ivory Coast
buy fake passport of Jamaica
buy fake passport of Japan
buy fake passport of Jordan
buy fake passport of Kazakhstan
buy fake passport of Kenya
buy fake passport of Kiribati
buy fake passport of Korea North
buy fake passport of Korea South
buy fake passport of Kosovo
buy fake passport of Kuwait
buy fake passport of Kyrgyzstan
buy fake passport of Laos
buy fake passport of Latvia
buy fake passport of Lebanon
buy fake passport of Lesotho
buy fake passport of Liberia
buy fake passport of Libya
buy fake passport of Liechtenstein
buy fake passport of Lithuania
buy fake passport of Luxembourg
buy fake passport of Macedonia
buy fake passport of Madagascar
buy fake passport of Malawi
buy fake passport of Malaysia
buy fake passport of Maldives
buy fake passport of Mali
buy fake passport of Malta
buy fake passport of Marshall Islands
buy fake passport of Mauritania
buy fake passport of Mauritius
buy fake passport of Mexico
buy fake passport of Micronesia
buy fake passport of Moldova
buy fake passport of Monaco
buy fake passport of Mongolia
buy fake passport of Montenegro
buy fake passport of Morocco
buy fake passport of Mozambique
buy fake passport of Myanmar, Burma
buy fake passport of Namibia
buy fake passport of Nauru
buy fake passport of Nepal
buy fake passport of Netherlands
buy fake passport of New Zealand
buy fake passport of Nicaragua
buy fake passport of Niger
buy fake passport of Nigeria
buy fake passport of Norway
buy fake passport of Oman
buy fake passport of Pakistan
buy fake passport of Palau
buy fake passport of Panama
buy fake passport of Papua New Guinea
buy fake passport of Paraguay
buy fake passport of Peru
buy fake passport of Philippines
buy fake passport of Poland
buy fake passport of Portugal
buy fake passport of Qatar
buy fake passport of Romania
buy fake passport of Russian Federation
buy fake passport of Rwanda
buy fake passport of St Kitts & Nevis
buy fake passport of St Lucia
buy fake passport of Saint Vincent & the Grenadines
buy fake passport of Samoa
buy fake passport of San Marino
buy fake passport of Sao Tome & Principe
buy fake passport of Saudi Arabia
buy fake passport of Senegal
buy fake passport of Serbia
buy fake passport of Seychelles
buy fake passport of Sierra Leone
buy fake passport of Singapore
buy fake passport of Slovakia
buy fake passport of Slovenia
buy fake passport of Solomon Islands
buy fake passport of Somalia
buy fake passport of South Africa
buy fake passport of Spain
buy fake passport of Sri Lanka
buy fake passport of Sudan
buy fake passport of Suriname
buy fake passport of Swaziland
buy fake passport of Sweden
buy fake passport of Switzerland
buy fake passport of Syria
buy fake passport of Taiwan
buy fake passport of Tajikistan
BillyJek - 2017-11-25  15:25:28
 Новости народной медицины здесь [url=http://medata.org/]medata.org[/url]
Miguzese - 2017-11-25  14:55:17
 Cialis 12 Preis Cialis Autentico Comprar Viagra For Men For Home Delivery [url=http://levitrial.com]levitra information[/url] Keflex For Bronchitis
Alisafulk - 2017-11-25  06:48:35
 AMBER JEWELRY, Natural BALTIC AMBER, Earrings hook, stud, bar

You are Welcome in my Baltic Amber exhibition AmberWizard! https://www.etsy.com/shop/amberwizard

[url=https://www.etsy.com/listing/530210864/amber-earrings-round-beads-natural?ref=shop_home_active_1]AMBER Earrings Round Yellow beads[/url]

Gift, present, Women jewelry

[url=https://www.etsy.com/listing/530210864/amber-earrings-round-beads-natural?ref=shop_home_active_1][img]https://img0.etsystatic.com/187/0/11536221/il_570xN.1260805852_c7lq.jpg[/img][/url]
.
Alisafulk - 2017-11-25  06:19:15
 AMBER JEWELRY, Natural BALTIC AMBER, Earrings hook, stud, bar

You are Welcome in my Baltic Amber shop AmberWizard! https://www.etsy.com/shop/amberwizard

[url=https://www.etsy.com/listing/530210864/amber-earrings-round-beads-natural?ref=shop_home_active_1]AMBER Earrings Round Yellow beads[/url]

Gift, present, Women jewelry

[url=https://www.etsy.com/listing/530210864/amber-earrings-round-beads-natural?ref=shop_home_active_1][img]https://img0.etsystatic.com/187/0/11536221/il_570xN.1260805852_c7lq.jpg[/img][/url]
.
Miguzese - 2017-11-25  02:20:01
 Order Nexium Online [url=http://ciali20mg.com]cheap cialis[/url] Propecia Pill Cialis Generico Comprar
Miguzese - 2017-11-25  02:19:58
 Order Nexium Online [url=http://ciali20mg.com]cheap cialis[/url] Propecia Pill Cialis Generico Comprar
Miguzese - 2017-11-25  02:19:57
 Order Nexium Online [url=http://ciali20mg.com]cheap cialis[/url] Propecia Pill Cialis Generico Comprar
Miguzese - 2017-11-25  02:19:55
 Order Nexium Online [url=http://ciali20mg.com]cheap cialis[/url] Propecia Pill Cialis Generico Comprar
Miguzese - 2017-11-25  01:19:46
 Keflex Generic Brand Kamagra Aus Der Apotheke Viagra En Andorra [url=http://buycialonline.com]viagra cialis[/url] Viagra E Nitroderivati
Miguzese - 2017-11-25  01:19:44
 Keflex Generic Brand Kamagra Aus Der Apotheke Viagra En Andorra [url=http://buycialonline.com]viagra cialis[/url] Viagra E Nitroderivati
Miguzese - 2017-11-25  01:19:43
 Keflex Generic Brand Kamagra Aus Der Apotheke Viagra En Andorra [url=http://buycialonline.com]viagra cialis[/url] Viagra E Nitroderivati
Miguzese - 2017-11-25  01:19:41
 Keflex Generic Brand Kamagra Aus Der Apotheke Viagra En Andorra [url=http://buycialonline.com]viagra cialis[/url] Viagra E Nitroderivati
XXXZZZSig - 2017-11-25  00:14:36
 This question have already been answered a lot of times.
Watch out and do not flood
here is the hyperlink:
http://blog.assistent.by/ways-to-write-an-impressive-admission-essay/
HermanTum - 2017-11-24  22:16:58
 Our team is a unique producer of quality fake documents.
We offer only original high-quality fake passports, driver's licenses,
ID cards, stamps, VISAs and other products for a number of countries
like:
USA, Australia, Belgium, Brazil, Canada, Italy, Finland, France,
Germany, Netherlands, Spain, United Kingdom. This list is not full.

To get the additional information and place the order just visit our website:

http://www.salepassportsfake.cc www. salepassportsfake.cc


>> Contact e-mails:


General support: support@salepassportsfake.cc


Technical support: admin@salepassportsfake.cc



-----------------------------
Keywords:

sale false/fake passports of Afghanistan
sale false/fake passports of Albania
sale false/fake passports of Algeria
sale false/fake passports of Andorra
sale false/fake passports of Angola
sale false/fake passports of Antigua & Deps
sale false/fake passports of Argentina
sale false/fake passports of Armenia
sale false/fake passports of Australia
sale false/fake passports of Austria
sale false/fake passports of Azerbaijan
sale false/fake passports of Bahamas
sale false/fake passports of Bahrain
sale false/fake passports of Bangladesh
sale false/fake passports of Barbados
sale false/fake passports of Belarus
sale false/fake passports of Belgium
sale false/fake passports of Belize
sale false/fake passports of Benin
sale false/fake passports of Bhutan
sale false/fake passports of Bolivia
sale false/fake passports of Bosnia Herzegovina
sale false/fake passports of Botswana
sale false/fake passports of Brazil
sale false/fake passports of Brunei
sale false/fake passports of Bulgaria
sale false/fake passports of Burkina
sale false/fake passports of Burundi
sale false/fake passports of Cambodia
sale false/fake passports of Cameroon
sale false/fake passports of Canada
sale false/fake passports of Cape Verde
sale false/fake passports of Central African Rep
sale false/fake passports of Chad
sale false/fake passports of Chile
sale false/fake passports of China
sale false/fake passports of Colombia
sale false/fake passports of Comoros
sale false/fake passports of Congo
sale false/fake passports of Congo Democratic Rep
sale false/fake passports of Costa Rica
sale false/fake passports of Croatia
sale false/fake passports of Cuba
sale false/fake passports of Cyprus
sale false/fake passports of Czech Republic
sale false/fake passports of Denmark
sale false/fake passports of Djibouti
sale false/fake passports of Dominica
sale false/fake passports of Dominican Republic
sale false/fake passports of East Timor
sale false/fake passports of Ecuador
sale false/fake passports of Egypt
sale false/fake passports of El Salvador
sale false/fake passports of Equatorial Guinea
sale false/fake passports of Eritrea
sale false/fake passports of Estonia
sale false/fake passports of Ethiopia
sale false/fake passports of Fiji
sale false/fake passports of Finland
sale false/fake passports of France
sale false/fake passports of Gabon
sale false/fake passports of Gambia
sale false/fake passports of Georgia
sale false/fake passports of Germany
sale false/fake passports of Ghana
sale false/fake passports of Greece
sale false/fake passports of Grenada
sale false/fake passports of Guatemala
sale false/fake passports of Guinea
sale false/fake passports of Guinea-Bissau
sale false/fake passports of Guyana
sale false/fake passports of Haiti
sale false/fake passports of Honduras
sale false/fake passports of Hungary
sale false/fake passports of Iceland
sale false/fake passports of India
sale false/fake passports of Indonesia
sale false/fake passports of Iran
sale false/fake passports of Iraq
sale false/fake passports of Ireland Republic
sale false/fake passports of Israel
sale false/fake passports of Italy
sale false/fake passports of Ivory Coast
sale false/fake passports of Jamaica
sale false/fake passports of Japan
sale false/fake passports of Jordan
sale false/fake passports of Kazakhstan
sale false/fake passports of Kenya
sale false/fake passports of Kiribati
sale false/fake passports of Korea North
sale false/fake passports of Korea South
sale false/fake passports of Kosovo
sale false/fake passports of Kuwait
sale false/fake passports of Kyrgyzstan
sale false/fake passports of Laos
sale false/fake passports of Latvia
sale false/fake passports of Lebanon
sale false/fake passports of Lesotho
sale false/fake passports of Liberia
sale false/fake passports of Libya
sale false/fake passports of Liechtenstein
sale false/fake passports of Lithuania
sale false/fake passports of Luxembourg
sale false/fake passports of Macedonia
sale false/fake passports of Madagascar
sale false/fake passports of Malawi
sale false/fake passports of Malaysia
sale false/fake passports of Maldives
sale false/fake passports of Mali
sale false/fake passports of Malta
sale false/fake passports of Marshall Islands
sale false/fake passports of Mauritania
sale false/fake passports of Mauritius
sale false/fake passports of Mexico
sale false/fake passports of Micronesia
sale false/fake passports of Moldova
sale false/fake passports of Monaco
sale false/fake passports of Mongolia
sale false/fake passports of Montenegro
sale false/fake passports of Morocco
sale false/fake passports of Mozambique
sale false/fake passports of Myanmar, Burma
sale false/fake passports of Namibia
sale false/fake passports of Nauru
sale false/fake passports of Nepal
sale false/fake passports of Netherlands
sale false/fake passports of New Zealand
sale false/fake passports of Nicaragua
sale false/fake passports of Niger
sale false/fake passports of Nigeria
sale false/fake passports of Norway
sale false/fake passports of Oman
sale false/fake passports of Pakistan
sale false/fake passports of Palau
sale false/fake passports of Panama
sale false/fake passports of Papua New Guinea
sale false/fake passports of Paraguay
sale false/fake passports of Peru
sale false/fake passports of Philippines
sale false/fake passports of Poland
sale false/fake passports of Portugal
sale false/fake passports of Qatar
sale false/fake passports of Romania
sale false/fake passports of Russian Federation
sale false/fake passports of Rwanda
sale false/fake passports of St Kitts & Nevis
sale false/fake passports of St Lucia
sale false/fake passports of Saint Vincent & the Grenadines
sale false/fake passports of Samoa
sale false/fake passports of San Marino
sale false/fake passports of Sao Tome & Principe
sale false/fake passports of Saudi Arabia
sale false/fake passports of Senegal
sale false/fake passports of Serbia
sale false/fake passports of Seychelles
sale false/fake passports of Sierra Leone
sale false/fake passports of Singapore
sale false/fake passports of Slovakia
sale false/fake passports of Slovenia
sale false/fake passports of Solomon Islands
sale false/fake passports of Somalia
sale false/fake passports of South Africa
sale false/fake passports of Spain
sale false/fake passports of Sri Lanka
sale false/fake passports of Sudan
sale false/fake passports of Suriname
sale false/fake passports of Swaziland
sale false/fake passports of Sweden
sale false/fake passports of Switzerland
sale false/fake passports of Syria
sale false/fake passports of Taiwan
sale false/fake passports of Tajikistan
sale false/fake passports of Tanzania
sale false/fake passports of Thailand
sale false/fake passports of Togo
sale false/fake passports of Tonga
sale false/fake passports of Trinidad & Tobago
sale false/fake passports of Tunisia
sale false/fake passports of Turkey
sale false/fake passports of Turkmenistan
sale false/fake passports of Tuvalu
sale false/fake passports of Uganda
sale false/fake passports of Ukraine
sale false/fake passports of United Arab Emirates
sale false/fake passports of United Kingdom
sale false/fake passports of United States
sale false/fake passports of Uruguay
sale false/fake passports of Uzbekistan
sale false/fake passports of Vanuatu
sale false/fake passports of Vatican City
sale false/fake passports of Venezuela
sale false/fake passports of Vietnam
sale false/fake passports of Yemen
sale false/fake passports of Zambia
sale false/fake passports of Zimbabwe
Martindom - 2017-11-24  19:43:11
 Последние новости политики здесь [url=http://vash-deputat.ru/]vash-deputat.ru[/url]
HerbertNet - 2017-11-24  16:38:23
 Последние новости андроид здесь [url=http://hi-android.net/]hi-android.net[/url]
Haroreab - 2017-11-24  16:35:16
 Hydrochlorothiazide 25 Mg For Sale How Long Does Zithromax Stay In Your System [url=http://leviprices.com]levitra 10 mg[/url] Medicinale Levitra Kamagra What Is It Chloroquine
Haroreab - 2017-11-24  16:35:15
 Hydrochlorothiazide 25 Mg For Sale How Long Does Zithromax Stay In Your System [url=http://leviprices.com]levitra 10 mg[/url] Medicinale Levitra Kamagra What Is It Chloroquine
<<[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] [190] [191] [192] [193] [194] [195] [196] [197] [198] [199] [200] [201] [202] [203] [204] [205] [206] [207] [208] [209] [210] [211] [212] [213] [214] [215] [216] [217] [218] [219] [220] [221] [222] [223] [224] [225] [226] [227] [228] [229] [230] [231] [232] [233] [234] [235] [236] [237] [238] [239] [240] [241] [242] [243] [244] [245] [246] [247] [248] [249] [250] [251] [252] [253] [254] [255] [256] [257] [258] [259] [260] [261] [262] [263] [264] [265] [266] [267] [268] [269] [270] [271] [272] [273] [274] [275] [276] [277] [278] [279] [280] [281] [282] [283] [284] [285] [286] [287] [288] [289] [290] [291] [292] [293] [294] [295] [296] [297] [298] [299] [300] [301] [302] [303] [304] [305] [306] [307] [308] [309] [310] [311] [312] [313] [314] [315] [316] [317] [318] [319] [320] [321] [322] [323] [324] [325] [326] [327] [328] [329] [330] [331] [332] [333] [334] [335] [336] [337] [338] [339] [340] [341] [342] [343] [344] [345] [346] [347] [348] [349] [350] [351] [352] [353] [354] [355] [356] [357] [358] [359] [360] [361] [362] [363] [364] [365] [366] [367] [368] [369] [370] [371] [372] [373] [374] [375] [376] [377] [378] [379] [380] [381] [382] [383] [384] [385] [386] [387] [388] [389] [390] [391] [392] [393] [394] [395] [396] [397] [398] [399] [400] [401] [402] [403] [404] [405] [406] [407] [408] [409] [410] [411] [412] [413] [414] [415] [416] [417] [418] [419] [420] [421] [422] [423] [424] [425] [426] [427] [428] [429] [430] [431] [432] [433] [434] [435] [436] [437] [438] [439] [440] [441] [442] [443] [444] [445] [446] [447] [448] [449] [450] [451] [452] [453] [454] [455] [456] [457] [458] [459] [460] [461] [462] [463] [464] [465] [466] [467] [468] [469] [470] [471] [472] [473] [474] [475] [476] [477] [478] [479] [480] [481] [482] [483] [484] [485] [486] [487] [488] [489] [490] [491] [492] [493] [494] [495] [496] [497] [498] [499] [500] [501] [502] [503] [504] [505] [506] [507] [508] [509] [510] [511] [512] [513] [514] [515] [516] [517] [518] [519] [520] [521] [522] [523] [524] [525] [526] [527] [528] [529] [530] [531] [532] [533] [534] [535] [536] [537] [538] [539] [540] [541] [542] [543] [544] [545] [546] [547] [548] [549] [550] [551] [552] [553] [554] [555] [556] [557] [558] [559] [560] [561] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.