Regitrace uživatelů - čast. 2 ( práce s PHP a MySQL)

 2012-09-18 00:00:00
 Dmitry Burobin

Toto je pokračování první části o registraci uživatelů. Doplníme registraci o několik věci: přidame avatar ( obrázek ), šifrování hesla, ochranu proti hádání hesla, ukládání uživatele.

Začíname

Začneme tím, že doplníme naši tabulku users o pole avatar, kam budeme uklálát cestu k avataru uživatele.
phpmyadmin

phpmyadmin
Taktéž vytvoříme složku avatar, do které se budou ukládát obrázky. Složka avatar se musí nacházet ve stejné složce se všema skripty.

registration.php

Dál doplníme soubor registration.php, najděte tag form a dopište atribut enctype="multipart/form-data":

<h1>Registrace nového uživatele</h1>
<
form action="pridavani.php" method="POST" enctype="multipart/form-data">
a ještě pole pro přidávaní avataru:
<div><label for="login">login:</label></div>
    <
div><input type="text" name="login"></div>
<!--  Do 
textového pole se jménem login name="login" nový uživatel zadá svůj login  -->

    <
div><label for="avatar">AvatarObrázek musi být ve formatu jpggif nebo png:</label></div>
    <
div><input type="FILE" name="avatar"></div>
<!--  do 
proměnné avatar se uloži obrázekkterý vybral uživatel  -->
    
    <
div><label for="heslo">Heslo:</label></div>
    <
div><input type="password" name="heslo"></div>
Uložte soubor.

pridavani.php

Potom doplníme soubor pridavani.php:

  • 1. Na začátku vložíme soubor function.inc.php, který bude obsahovat funkce pro pro načtení obrázku na server a pro přizpůsobování velikosti obrázku.
  • 2. Pak zjistime, zda uživatel zadál avatar.
  • 3. Nezapomeňte doplnít příkaz pro vkládání dat do databázi o pole avatar.
<?php
header('Content-type: text/html;charset=UTF-8');

// Vložime potřebné funkce
require_once 'function.inc.php';

    
if(isset(
$_POST['go'])){    //jestli tlačítko bylo zmačknuté tak jdi dál, jinak budete přesměrování na stránku pro registraci nového uživatele

    
if(isset($_POST['name']))
    {
        
$name stripcslashes(htmlspecialchars(trim($_POST['name'])));
        if(
$name == '')
        {
                unset(
$name);
        }
    }
//uložime do proměnné $name jméno, které uživatel zadál ve formuláři, 
//a hned ji ošetříme několika funkcemi, aby ani tagy ani skripty nefungovali a odstraníme mezery ( trim ) 
//Jestli je proměnná prázdna tak ji odstraníme.

    
    
if(isset($_POST['login']))
    {
        
$login stripcslashes(htmlspecialchars(trim($_POST['login'])));
        if(
$login == '')
        {
                unset(
$login);
        }
    }
//uložime do proměnné $login login, který uživatel zadál ve formuláři, 
//a hned ji ošetříme několika funkcemi, aby ani tagy ani skripty nefungovali a odstraníme mezery ( trim ) 
//Jestli je proměnná prázdna tak ji odstraníme.
    
    
if(isset($_POST['heslo']))
    {
        
$heslo stripcslashes(htmlspecialchars(trim($_POST['heslo'])));
        if(
$heslo == '')
        {
                unset(
$heslo);
        }
    }
//uložime do proměnné $heslo heslo, které uživatel zadál ve formuláři, 
//a hned ji ošetříme několika funkcemi, aby ani tagy ani skripty nefungovali a odstraníme mezery ( trim ) 
//Jestli je proměnná prázdna tak ji odstraníme.


//V případě, že jakákoli proměnná je prázdna, zastavíme skript a vyvedeme hlášení    
    
if(empty($name) or empty($login) or empty($heslo))
    {
        exit(
"Vyplňte všechna pole");
    }


//--------------NOVÉ------------------------------------------//


// ověřujeme, zda uživatel vložil obrázek
if(!empty($_FILES['avatar']['name']))
{
// Uložime obrázek ( název ) do proměnné avatar a ošetřime ji
   
$avatar upload_file();
// Jestli se proměnná rovna 0 nebo je prázdna  
   
if($avatar == '' OR empty($avatar)) 
   {
// V případě, že proměnná je prázdna odstraníme ji
      
unset($avatar);
   }
}



if(!isset(
$avatar) OR empty($avatar) OR $avatar == '')
{
// V případě, že proměnná neexistuje, automatický přiřádime uživateli obrázek s nadpisem "Nemá avatar"
// nakreslete obrázek no_avatar.jpg nebo stáhněte jej z archivu k článku
    
$avatar "no_avatar.jpg"
} else {
// Uděláme z původního obrázku, obrázek o velikosti 90x90    
    
$mini_av resizeimg("avatar/$avatar","avatar/mini-$avatar",90,90);     
        
$avatar 'mini-'.$avatar;
}   

// Zašifrujeme heslo pomocí algoritmu md5       
$heslo    md5($heslo); 
// Ještě přidáme reverzí       
$heslo    strrev($heslo); 

// můžete přidat několik sybmolů, např. "g5ds8". V případě, že takto ošetřené heslo někdo bude chtít prolomit Brute Forcem ( hádání hesla )
// a použijí k tomu md5, pak se ničeho nedocíli. Můžete taky přidat symboly na začátku nebo uprostřed hesla.          
$heslo    $heslo."g5ds8";


// Nezapomeňte přidat pole `avatar` do SQL příkazu pro vkládáni dat do databáze  

//--------------KONEC NOVÉHO------------------------------------------//



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

//Ověřujeme, zda jíž není uživatel se stejným loginem    
    
$q1 mysql_query("SELECT * FROM `users` WHERE `login`='".$login."'");
    if(!
$q1) { echo mysql_error() . ' - ' mysql_errno(); }
    else {
//Jestli existuje tak vyvedeme hlášení
        
if(mysql_num_rows($q1)==1){
            exit(
"Uživatelské jméno je obsazené, vyberte si jiné");
        } else {
//V případě, že není tak vložíme data o novém uživateli do databáze
            
$q2 mysql_query("INSERT INTO `users`(`name`,`login`,`pass`,`avatar`) VALUES('".$name."','".$login."','".$heslo."','".$avatar."')");
            if(!
$q2) { echo mysqll_error() . ' - ' mysql_errno(); }
            else {
                echo 
"Děkuji za registraci, teď se můžete <a href=\"index.php\">přihlásit</a>.";
                
            }
        }
    }
    
} else { 
header("Location: ".$_SERVER['SERVER_ROOT']."registration.php"); }
?>

function.inc.php

Soubor function.inc.php:

<?php
// Funkce pro načtení obrázku na server
function upload_file()
{
// pole s dostupnými formáty obrázků
    
$arr = array(".jpeg",".gif",".png",".jpg",".JPG",".PNG",".GIF");
    
// jestli nenastala žádna chyba a velikost obrázku je větší jak 0
    
if($_FILES['avatar']['error'] ==&amp;&amp$_FILES['avatar']['size'] >0)
    {
// zjistime formát obrázku
        
$type strrchr($_FILES['avatar']['name'], ".");
// do proměnné $name uložime název obrázku
        
$name $_FILES['avatar']['name'];
// cesta, kam se uloži obrázek
        
$upname "avatar/".$_FILES['avatar']['name'];

// Jestli formát nahráneho souboru odpovída formátům povoleným v poli $arr
// Soubor se přesune do složky avatar        
        
if(in_array($type,$arr))          
            
move_uploaded_file($_FILES['avatar']['tmp_name'], $upname);

// Zjistime, zda soubor byl nahrán na server      
        
if(file_exists($upname))
            return 
$name;
        else
            return 
false;          
    }
    else
    {
        return 
false;
    }
}


// Funkce pro přizpůsobování velikosti obrázku, uděláme obrázek 90x90
function resizeimg($filename$smallimage$w$h


// Definujeme poměr komprese obrázku     
    
$ratio $w/$h
// Velikost původního obrazu    
    
$size_img getimagesize($filename); 
// Pokud je velikost menší, pak nemusíme škálovat
    
if (($size_img[0]<$w) &amp;&amp; ($size_img[1]<$h)) return true
// Kompresní poměr původního obrázku
    
$src_ratio=$size_img[0]/$size_img[1]; 

// Dále vypočítame velikost zmenšené kopie, abysme zachovali proporce původního obrazu 
// Toto můžete odstranit abyste měli obrázky velikosti přesně 90x90  
    
if ($ratio<$src_ratio
    { 
      
$h $w/$src_ratio
    } 
    else 
    { 
      
$w $h*$src_ratio
    } 
// Vytvořime prázdný obrázek s definovanou velikosti 
    
$dest_img imagecreatetruecolor($w$h);   
    
$white imagecolorallocate($dest_img255255255);        
    if (
$size_img[2]==2)  $src_img imagecreatefromjpeg($filename);                       
    else if (
$size_img[2]==1$src_img imagecreatefromgif($filename);                       
    else if (
$size_img[2]==3$src_img imagecreatefrompng($filename);  

// škálujeme obrázek pomocí funkci imagecopyresampled() 
// $dest_img - zmenšená kopie
// $src_img - původní obrázek 
// $w - šířka zmenšene kopie
// $h - výška zmenšene kopie         
// $size_img[0] - šířka původního obrázeku 
// $size_img[1] - výška původního obrázeku 
    
imagecopyresampled($dest_img$src_img0000$w$h$size_img[0], $size_img[1]);                 
// Uložime zmenšenou kopii do souboru  
    
if ($size_img[2]==2)  imagejpeg($dest_img$smallimage);                       
    else if (
$size_img[2]==1imagegif($dest_img$smallimage);                       
    else if (
$size_img[2]==3imagepng($dest_img$smallimage);  
// Vyčístime paměť od vytvořených obrázků 
    
imagedestroy($dest_img); 
    
imagedestroy($src_img); 
    return 
true;          
}
?>

Tabulka chyba

Teď přidame ještě jednu tabulku ( chyba ) do stejné databázi, ve které budou uložený ip adresy všech uživatelů, kdo udělal chybu při zadávání dat při přihlášení. Tímto omezíme přístup uživatelům, kteři chybovali víc jak 3 krát, například na 15 minut.

CREATE TABLE `chyba` (
`id` INT( 5 ) NOT NULL AUTO_INCREMENT,
`ip` VARCHAR( 12 ) NOT NULL,
`date` DATETIME,
`errors` INT( 1 ) NOT NULL,
PRIMARY KEY (`id`)
)ENGINE=MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci

ip - ip adresa uživatele, errors - množstvi chybných přihlášení.

overeni.php

Upravíme soubor overeni.php

<?php
.
.
.
//V případě, že jakákoli proměnná je prázdna, zastavíme skript a zobrazime hlášení        
    
if(empty($login) or empty($heslo))
    {
        exit(
"Vyplňte všechna pole");
    }

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




//--------------NOVÉ------------------------------------------//

// Zjistime ip 
    
$ip=getenv("HTTP_X_FORWARDED_FOR");
    if(empty(
$ip) || $ip=='unknown') { $ip=getenv("REMOTE_ADDR"); } 

// Odstraňujeme ip uživatelů, kteři chybovali při přihlášení, po 15 minutách                       
    
mysql_query("DELETE FROM `chyba` WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(`date`) > 900");
    
// Vypišeme z databáze množstvi chybných pokusů přihlášení u uživatele s určitým ip 
    
$error mysql_query("SELECT `errors` FROM `chyba` WHERE `ip`='".$ip."'");
    
$r_error mysql_fetch_assoc($error);

    if(
$r_error['errors'] > 2
    {
// V případě, že chybných přihlášení je víc jak 2, zobrazíme hlášení
        
exit("Zadali jste nesprávně uživatelské jméno nebo heslo 3 krát. Počkejte 15 minut pro další pokus.");
    }          
    
// Zašifrujeme heslo pomocí algoritmu md5       
    
$heslo    md5($heslo); 
// Ještě přidáme reverzí       
    
$heslo    strrev($heslo); 

// můžete přidat několik sybmolů, např. "g5ds8". V případě, že takto ošetřené heslo někdo bude chtít prolomit Brute Forcem ( hádání hesla )
// a použijí k tomu md5, pak se ničeho nedocíli. Můžete taky přidat symboly na začátku nebo uprostřed hesla.          
    
$heslo    $heslo."g5ds8";

// Vypišeme z databáze veškera data o uživateli s zadaným loginem a heslem
    
$q1 mysql_query("SELECT * FROM `users` WHERE `login`='".$login."' AND `pass`='".$heslo."'");
    if(!
$q1) { echo mysql_error() . ' - ' mysql_errno(); }
    else
    {
        
$r1 mysql_fetch_assoc($q1);

        if(empty(
$r1['id']))
        {
// V případě, že uživatel neexistuje, přidame záznam do tabulky chyba, že uživatel s touto ip adresou se nepřihlásil  
            
$sel_ip mysql_query("SELECT `ip` FROM `chyba` WHERE `ip`='".$ip."'");
            
$r_ip mysql_fetch_row($sel_ip);
            
// Ověřujeme, zda uživatel jíž není v tabulce
            
if($ip == $r_ip[0])
            {
                
$sel_errors mysql_query("SELECT `errors` FROM `chyba` WHERE `ip`='".$ip."'");
                
$r_errors mysql_fetch_assoc($sel_errors);
// Přidame ještě jeden nepovedený pokus
                
$count $r_errors['errors'] + 1;
                
// Dále aktualizujeme tabulku chyba
                
mysql_query("UPDATE `chyba` SET `errors` = '".$count."', date = NOW() WHERE `ip`='".$ip."'");
            } else {
// V případě, že uživatel ještě nechyboval přidame nový záznam
                
mysql_query("INSERT INTO `chyba` (`ip`,`date`,`errors`) VALUES('".$ip."',NOW(),'1')");
            }
            
            exit(
"Je nám líto, zadali jste chybné uživatelské jméno nebo heslo");
        } else {
// V připadě, že uživatelské jméno a heslo odpovídají ( jsou v databázi ),
// Vytvořime uživatelsou session.            
            
$_SESSION['heslo'] = $r1['pass']; 
            
$_SESSION['login'] = $r1['login']; 
            
$_SESSION['id'] = $r1['id'];

// Dále uložime data do COOKIE, pro pozdější přihlášení                
// POZOR!!! DATA V COOKIE NEJSOU ŠIFROVÁNÁ, DĚLEJTE TO NA ZÁKLADĚ VLASTNÍHO UVÁŽENÍ            
            
if($_POST['save'] == 1
            {
// Jestli uživetel chce, aby jeho data byla uložena pro pozdější přihlášení, pak uložime je do COOKIE souboru prohlížeče 
                
setcookie("login"$_POST['login'], time()+9999999);
                
setcookie("password"$_POST['heslo'], time()+9999999);
            }                  
            
            
header("Location: ".$_SERVER['SERVER_ROOT']."index.php");
        }
    }

//--------------KONEC NOVÉHO------------------------------------------//

    

} else { header("Location: ".$_SERVER['SERVER_ROOT']."index.php"); }
?>

index.php

Úplně změnime soubor index.php, zobrazíme avatar a checkbox pro pamatování hesla a logina.

<?php
session_start();
//Celý postup funguje na sessions. Právě v session se ukládají data uživatele, zatímco se nacházi na stránkach. Je důležite spustit sessions na začátku stránky!  

if($_GET['action']=='odhlasit_se'){

    
$_SESSION['login']='';
    
$_SESSION['heslo']='';
    
$_SESSION['id']='';
    unset(
$_SESSION['login']);
    unset(
$_SESSION['heslo']);
    unset(
$_SESSION['id']);
    
}

//Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce )    
require_once 'db.php';
 
// V případě, že session nejsou prázdné a obsahují heslo a login, vybereme z databáze avatar tohoto uživatele
if(!empty($_SESSION['login']) and !empty($_SESSION['heslo']))
{
    
$login $_SESSION['login'];
    
$heslo $_SESSION['heslo'];
    
$q_ava mysql_query("SELECT `id`,`avatar` FROM `users` WHERE `login` = '".$login."' AND `pass` = '".$heslo."'"); 
    
$r_ava mysql_fetch_array($q_ava);
}
?>
<!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>
    <
title>Přihlašení uživatele</title>
    <
meta http-equiv="content-type" content="text/html;charset=utf-8" />

<
style>

.
back{
    
font-size:10pt;
    
margin-top:20px;
}

</
style>
    
</
head>

<
body>
<?php
//Ověřujeme, zda byla vybrána nějaka data z databáze ( avatar ). Jestli ne v COOKIE jsou špatné heslo nebo login.
if(empty($r_ava['avatar']) OR !isset($r_ava['avatar']) OR $r_ava['avatar']=='')
{
echo 

<h1>Přihlaste se</h1>
<form action="overeni.php" method="POST">
<!--  overeni.php je skript pro ověření zadaných dat, tzn. po klíknutí na tlačítko Ok se data pošlou do tohoto souboru metodou POST  -->

    <div><label for="login">login:</label></div>'
;
// Jestli existuje proměnná COOKIE['login']. Bude jestli uživatel při předchozím přihlášení zaškrtnul políčko "Zapamatovat mě"   
    
if(isset($_COOKIE['login']))
    {
// Do atributu value přidame hodnotu proměnné COOKIE s loginem
        
echo '<div><input type="text" name="login" value="'.$_COOKIE['login'].'"></div>';
    } else {
        echo 
'<div><input type="text" name="login" ></div>';
    }    
    
echo 
'    <div><label for="heslo">Heslo:</label></div>';
// Jestli existuje proměnná COOKIE['login']. Bude jestli uživatel při předchozím přihlášení zaškrtnul políčko "Zapamatovat mě"   
    
if(isset($_COOKIE['password']))
    {
// Do atributu value přidame hodnotu proměnné COOKIE s heslem
        
echo '<div><input type="password" name="heslo" value="'.$_COOKIE['password'].'"></div>';
    } else {
        echo 
'<div><input type="password" name="heslo" ></div>';
    }
           
echo 
'
<div><input name="save" type="checkbox" value="1">Zapamatovat mě.</div>
<div><input type="submit" name="go" value="Ok"></div>
</form>'
;

echo 
"Ahoj návtěvníku. Tyto <a href=\"#\">stránky</a> můžou navštívit jen registrované uživatele";        
echo 
'<div class="back"><a href="registration.php">registrace</a></div>';  
    
} else {
//V případě, že v databázi je obrázek u uživatele s heslem a loginem, které máme uložené v COOKIE    
 
 
  
echo "<h1>Ahoj ".$_SESSION['login']."</h1> 
 <p>Tyto <a href=\"http://www.complux.eu/cz/\">stránky</a> můžou navštívit jen registrované uživatele</p>
 <p><a href=\""
.$_SERVER['PHP_SELF']."?action=odhlasit_se\">Odhlásit se</a></p>";

// Zobrazime Váš obrázek ( avatar ), cestu máme v proměnné $r_ava 
  
echo 'Váš obrázek:<br><img alt='.$_SESSION['login'].' src=avatar/'.$r_ava['avatar'].'>';         
}
?>
</body></html>

Závěr

Už máme funkčnější registraci. V dalším článku přidame captchu, osobní stránky uživatelů, soukromé zprávy uživatelům.

Systém Orphus
Napište komentář.
Celkem komenrářů(54)
DavidENARA - 2018-04-14  02:17:58
 https://sites.google.com/site/hiringgenius/home/fiverryouronestopshop
India kamagra 100mg chewable tablets - 2018-03-30  07:05:29
 kamagra 100mg oral jelly in india
[url=http://kamagradxt.com/]kamagra store reviews[/url]
kamagra oral jelly 100mg usa
kamagra oral jelly 100mg factory discount prices
kamagra jelly sale
http://kamagradxt.com/
ajanta kamagra 100 chewable tablet
MarfaCliB - 2018-01-05  09:09:29
 Recovery face, pulling wrinkles without jabs and procedures is available to everyone. Chemical elements remove components of old cells. Skin swiftly is updated. A face without wrinkles and signs of acne. Significant improvement of the exte
al appearance of the skin. Rejuvenation, plastic, removal wrinkles are guaranteed.
Apply chemical peeling invented by German workers in the 19th century. Since then, safety operations has grown several times. Effect can purchase and household conditions. Skin becomes smooth and light, without wrinkles, redness.
[url=http://chemicalpeel.in/chemical-peel-before-and-after]chemical peel before and after photos[/url]
JustSugs - 2017-12-26  17:45:41
 Comprar Cialis 20mg Il Viagra Fa Male Al Fegato Where Can I Buy Cheap Flagyl In Carrollton [url=http://costofcial.com]cialis online[/url] Levitra Vardenafil Preisvergleich Buy Synthroid 50 Mcg Flagyl By Mail cialis Quick Delivery Cialis Paypal Medications Online Pattaya Kamagra Cheap Pills Without A Prescription Comprar Cialis En Miami http://costofcial.com - cialis Comprar Viagra De Calidad Sunthi Prix Cialis Generique
Nioptota - 2017-12-12  03:06:29
 Snack of fried tomatoes like absolutely everything. Residents in most cases ask recipe are surprised mastery chef. Even children with pleasure eat fried tomato in breadcrumbs. Tomatoes very good combined are combined with many products. Garlic adds sharpness. Cheese gives ruddy crust. Italian herbs tu
roasted tomatoes into a dish from a restaurant. Omelette with tomatoes - elementary and nutritious dish for breakfast. Prepare even sandwiches with fried tomatoes.
Cooking tomatoes easily. For cooking use butter. In olive oil - fewer calories. It is also combined mixed with fried cubes tomato.
[url=http://stewedtomatoes.top/how-to-can-stewed-tomatoes-at-home]what is stewed tomatoes[/url]
Jeffpoonia - 2017-12-04  03:49:57
 Levitra Que Precio Tiene Proscar Prix Viagra Ohne Rezept Serios [url=http://cialtobuy.com ]cialis[/url] Cialis Generika Serios Cialis Fast
Jeffpoonia - 2017-12-04  03:49:56
 Levitra Que Precio Tiene Proscar Prix Viagra Ohne Rezept Serios [url=http://cialtobuy.com ]cialis[/url] Cialis Generika Serios Cialis Fast
Jeffpoonia - 2017-12-04  03:49:54
 Levitra Que Precio Tiene Proscar Prix Viagra Ohne Rezept Serios [url=http://cialtobuy.com ]cialis[/url] Cialis Generika Serios Cialis Fast
Jeffpoonia - 2017-12-04  03:49:53
 Levitra Que Precio Tiene Proscar Prix Viagra Ohne Rezept Serios [url=http://cialtobuy.com ]cialis[/url] Cialis Generika Serios Cialis Fast
Haroreab - 2017-11-29  13:52:21
 Hydrochlorothiazide Holistic [url=http://cheapvia50mg.com]buy viagra[/url] Cialis Tempi Sildenafil Citrate 100mg Plus Tadalis Sx Soft Online Kaufen
Haroreab - 2017-11-27  14:59:33
 Buy Pfizer Brand Viagra Online [url=http://cialgeneri.com]cialis[/url] Kamagra Oral Jelly Aachen Levitra Sin Receta Madrid
Haroreab - 2017-11-07  11:45:35
 Propecia Canada Online Cash On Delivery Fluoxetine Overseas [url=http://cheapvia100mg.com]viagra[/url] Online Meds Why Is My Alli So Expensive
Haroreab - 2017-11-07  11:45:33
 Propecia Canada Online Cash On Delivery Fluoxetine Overseas [url=http://cheapvia100mg.com]viagra[/url] Online Meds Why Is My Alli So Expensive
Haroreab - 2017-11-07  11:45:32
 Propecia Canada Online Cash On Delivery Fluoxetine Overseas [url=http://cheapvia100mg.com]viagra[/url] Online Meds Why Is My Alli So Expensive
Haroreab - 2017-11-07  11:45:30
 Propecia Canada Online Cash On Delivery Fluoxetine Overseas [url=http://cheapvia100mg.com]viagra[/url] Online Meds Why Is My Alli So Expensive
Haroreab - 2017-11-02  22:17:58
 Magasin Levitra 20mg Buy Amitriptyline No Percription [url=http://cheapviapills.com]viagra[/url] E Drugstog Viagra Baclofene Dose Seuil Viagra Europe
Haroreab - 2017-10-29  08:51:25
 Viagra Rezeptfrei Auf Rechnung Cialis 20 Mg 8 Compresse [url=http://mailordervia.com]viagra[/url] Cyklokapron
Haroreab - 2017-10-29  08:51:23
 Viagra Rezeptfrei Auf Rechnung Cialis 20 Mg 8 Compresse [url=http://mailordervia.com]viagra[/url] Cyklokapron
Haroreab - 2017-10-29  08:51:22
 Viagra Rezeptfrei Auf Rechnung Cialis 20 Mg 8 Compresse [url=http://mailordervia.com]viagra[/url] Cyklokapron
Haroreab - 2017-10-29  08:51:20
 Viagra Rezeptfrei Auf Rechnung Cialis 20 Mg 8 Compresse [url=http://mailordervia.com]viagra[/url] Cyklokapron
[1] [2] [3] 
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.