Baza modelek Glamour Models: Modelki, Fotomodelki, Hostessy

środa, 14 grudnia 2011

Tablica znaków w PHP bez używania pętli

Cześć,
pokażę, jak stworzyć tablicę znaków w PHP nie używając pętli, czyli
array('A', 'B', ..., 'Z', 'a', 'b', ..., 'z').

// utworzenie tablicy liczb array(65, ..., 90)
$big = range(65, 90);
// utworzenie tablicy liczb array(97, ..., 122)
$small = range(97, 122);
// złączenie tych tablic
$nums = array_merge($big, $small);
// stosujemy funkcję chr() do każdego elementu tablicy
$letters = array_map('chr', $nums);
var_dump($letters);

Liczby w tablicach $big i $small to kody ASCII liter.

Jeżeli chcemy otrzymać string 'ABC...Zabc....z',
to wystarczy złączyć elementy tablicy:
implode('', $letters);

czwartek, 8 grudnia 2011

Tworzenie pliku .htaccess (z kropką) w Windows

Cześć,
jak zwykle w Windows trzeba zrobić coś na około.
Pokażę, jak utworzyć plik zaczynający się od kropki na przykładzie .htaccess.

1. Najpierw tworzymy sobie np. htaccess.txt
2. Wchodzimy do wiersza polecenia (cmd lub wybieramy z akcesorii)
3. Przechodzimy do poleceniem cd do katalogu z plikiem htaccess.txt
4. Poleceniem ren htaccess.txt .htaccess zmieniamy nazwę.

Gotowe!

Jak ktoś ma Notepad++, to jest to dużo prostsze.
Wystarczy otworzyć plik htaccess.txt i z menu File wybrać Raname i wpisać nową nazwę z kropką na początku.

wtorek, 6 grudnia 2011

Rotator zdjęć w jQuery z jedną zmienną globalną

Cześć,
często piszemy skrypty JavaScript stosując wiele zmiennych globalnych. Nieraz może to spowodować, że w dwóch miejscach na raz będziemy mieć zmienną o takiej samej nazwie.
Pokażę na przykładzie rotatora zdjęć z wykorzystaniem funkcji setTimeout, jak wykorzystać tylko jedną zmienną globalną.

niedziela, 4 grudnia 2011

Znak wodny na wszystkich obrazkach w katalogu

Cześć,
pokażę, jak dodać do zdjęć znak wodny, nie modyfikując i bez żadnych przeróbek wcześniejszego kodu.
Zakładamy, że zdjęcia znajdują się na serwerze w katalogu images.
Do tego katalogu wrzucamy obrazek ze znakiem wodnym najlepiej w formacie PNG, aby mieć wpływ na przeźroczystość. Niech się nazywa watermark.png.

środa, 2 listopada 2011

Uniwersalne przekierowanie z www na bez www w htaccess

Witam,

pokażę, jak przekierować dowolną stronę z www na bez www.
Dzięki temu przekierowaniu nie trzeba zmieniać .htaccess za każdym razem.

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Objaśnienia:

  • RewriteCond %{HTTP_HOST} ^www\.(.*)$ - sprawdza, czy nazwa hosta zaczyna się od www. Nawias zapisuje się do zmiennej %1.
  • [NC] - no case, czyli brak rozróżnianie wielkich i małych liter.
  • RewriteRule ^(.*)$ http://%1/$1 - nawias jest zapisany do zmiennej $1 i następuje przekierowanie.
  • R=301 - przekierowanie typu 301
  • L - last, czyli poinformowanie, aby następne reguły nie były przetwarzane.

czwartek, 8 września 2011

Jak dodać wpis do śledzika na naszej klasie

Pokażę, jak dodać wpis do śledzika na naszej klasie przez FireBug.
Najpierw trzeba się (niestety) zalogować.
Odpalamy FireBug'a i konsoli wklejamy kod:


var iframe = document.getElementById('nk_portal');
var frameDoc = iframe.contentDocument || iframe.contentWindow.document;
var el = frameDoc.getElementById('sledzik_form_content');
var forma=frameDoc.getElementById('sledzik_form');
el.value='Treść wpisu';
forma.submit();



Klikamy 'Uruchom' i już, dokument się przeładuje i można znów odpalić skrypcik.
Oczywiście na stronie musi być forma do wpisów śledzika.

Jak ktoś zna inny sposób na dodanie wpisu do śledzika, niech da w komentarzu.

wtorek, 21 czerwca 2011

Jak korzystać z innego configu pagincaji w KO3

Załóżmy, że w pliku config/pagination.php mamy:

<?php defined('SYSPATH') or die('No direct script access.');
return array(
  'default' => array(
    'current_page'      => array('source' => 'route', 'key' => 'id'),
    'total_items'       => 0,
    'items_per_page'    => 10,
    'view'              => 'pagination/floating',
    'auto_hide'         => true,
    'first_page_in_url' => false,
  ),
  'other' => array(
    'current_page'      => array('source' => 'route', 'key' => 'id'),
    'total_items'       => 0,
    'items_per_page'    => 50,
    'view'              => 'pagination/basic',
    'auto_hide'         => false,
    'first_page_in_url' => true,
  ),
);


Zwykle korzystamy z ustawienia 'default':

$gallery_pagination = Pagination::factory(array(
            'total_items' => $gallery->countAll(),
            ));
           

Jeśli chcemy skorzystać z innych ustawień, nie wpisując wszystkich ustawień za każdym razem, gdy tworzymy paginację, możemy przekazać w tablicy w metodzie factory indeks 'group'. Oczywiście można użyć innych opcji, które nadpiszą te z configu:

$gallery_pagination = Pagination::factory(array(
            'group' => 'other',
            'total_items' => $gallery->countAll(),
            ));


Można sprawdzić, co się wyświetli:

echo $gallery_pagination->render();


wtorek, 24 maja 2011

Obsługa błędu 404 w Kohana 3.0 - plik bootstrap.php


Kod należy umieścić w pliku bootstrap.php:
    $request = Request::instance();
    try {
         $request->execute();
    } catch (Exception $e) {
        Kohana::$log->add(Kohana::ERROR, Kohana::exception_text($e));
      
        if(Kohana::$environment == Kohana::PRODUCTION){
            $request->status = 404;
            $request->response = View::factory('error/404');
        }
        else{
            throw $e;
        }      
    }

    $request->send_headers();
    echo $request->response;

Oczywiście, dla tego przypadku należy dodać plik 404.php w katalogu views/error.

W zależności od ustawienia

Kohana::$environment = Kohana::DEVELOPMENT;
lub
Kohana::$environment = Kohana::PRODUCTION;

wyświetlana jest strona błędu Kohany lub widok z pliku 404.php


poniedziałek, 18 kwietnia 2011

Problem z mapą witryny w Google Narzędzia dla webmasterów

Jeśli otrzymasz taki komunikat błędu:

Napotkaliśmy błąd podczas próby dostępu do tej mapy witryny. Sprawdź, czy mapa witryny jest zgodna z naszymi wymogami i można do niej uzyskać dostęp w podanej lokalizacji, a następnie prześlij ponownie.

i masz pewność, że mapa witryny jest dobrze wygenerowana, to wyślij na serwer plik robots.txt np. z taką zawartością:
User-agent: *
Allow: /  
Powinno być już OK.

środa, 16 marca 2011

Przenoszenie elementów między listami: drag&drop, zaznacz-kliknij-przenieś

Przenoszenie elementów między dwoma listami dwoma sposobami na raz:
-        za pomocą drag&drop,
-        poprzez zaznaczenie elementu i przeniesienie przyciskiem.

Zrobimy to przy pomocy jQuery UI:
<script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.10.custom.min.js"></script>

czwartek, 3 marca 2011

Dostęp sieci w VirtualBox

Mam Windows XP, maszynę wirtualną z Ubuntu.

Pierwsza karta sieciowa VirtualBox jest ustawiona na NAT, dzięki czemu z VB jest dostęp do Internetu.
W Ubuntu mam postawiony serwer WWW, jednak nie można się odwołać do niego przez IP. Zatem należy uaktywnić drugą kartę sieciową typu host-only, jednak teraz nie ma dostępu do internetu.
Rozwiązanie jest takie, aby dwie pierwsze karty ustawić na NAT, a trzecią na host-only.
Wtedy Ubuntu widzi dwie karty: pierwsza łączy się z Internetem, dzięki drugiej jest dostęp w Windows.

środa, 9 lutego 2011

Trójkolumnowy układ strony

Układ trójkolumnowy strony przy pomocy div’ów:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>3 kolumy</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style type="text/css">
     * {
          margin:0px;
          padding:0px;
     }
     #wrapper {
          width:1000px;
          margin: 0px auto;
     }
     #left {
          float: left;
          background-color: red;
          width: 200px;
     }
     #right {
          float: right;
          background-color: yellow;
          width: 200px;
     }
     #content {
          background-color: pink;
     }
</style>
</head>
<body>
<div id="wrapper">
     <div id="left">
          left
     </div>
     <div id="right">
          right
     </div>
     <div id="content">
          content
     </div>
</div>
</body>
</html>

Ważna jest kolejność div’ów - najpierw lewy, potem prawy, na końcu umieszczamy środkowy - wtedy szerokość środkowej części automatycznie się dopasuje.

Dodatkowo możemy ustawić szerokość naszej strony na np. 1000px oraz wyśrodkować przez margin: 0px auto (górny i dolny margines na 0px, lewy i prawy automatycznie ustawiany przez przeglądarkę).

wtorek, 8 lutego 2011

Renderowanie obrazków w Kohana 3

Aby pokazać obrazek w locie (np. miniaturka, ze znakiem wodnym), w PHP tworzymy obrazek, podajemy typ mime oraz wysyłamy do przeglądarki:
header('Content-type: image/jpeg');
$img = imagecreatefromjpeg('plik.jpeg');
imagejpeg($img);
imagedestroy($img);

W Kohana wygląda to tak:
W kontrolerze np. obrazek.php dodajemy akcję action_render(). Podobnie, jak w czystym PHP, musimy utworzyć obrazek z pliku, podać typ wysyłanych danych, wysłać je w nagłówkach oraz zwrócić wyrenderowany obrazek:
<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Obrazek extends Controller {
        public function action_render(){
            $this->request->headers['Content-type']='image/jpeg';
            $this->request->send_headers();
            $img=Image::factory('media/images/obraz.jpg');
            $this->request->response=$img->render('jpg');
           
        }
}

Wywołujemy następująco:
<?php echo Html::image('obrazek/render'); ?>

W ten sposób można również ukryć ścieżkę do zdjęć.
Oczywiście można przekazać do akcji dowolny obrazek:
<?php echo Html::image('obrazek/render/' . $nazwa_pliku); ?>

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Obrazek extends Controller {
        public function action_render(){
            $nazwa_pliku=$this->request->param('id'); //zależnie od ustawień w bootstrap.php
            $this->request->headers['Content-type']='image/jpeg';
            $this->request->send_headers();
            $img=Image::factory('upload/' . $nazwa_pliku);
            $this->request->response=$img->render('jpg');
        }
}



poniedziałek, 7 lutego 2011

Swift Mailer jako moduł w Kohana 3

Krótki tutorial na temat integracji Swift Mailer jako modułu Kohana 3.
Najpierw należy utworzyć katalogi i pliki:
/modules/swiftmailer
/modules/swiftmailer/init.php
/modules/swiftmailer/classes

Skopiuj do katalogu /modules/swiftmailer/classes/  najnowszą wersję Swift Mailer.
W pliku /modules/swiftmailer/init.php umieść następującą linię:
<?php
require Kohana::find_file('classes', 'Swift-4.0.6/lib/swift_required');

Następnie do pliku bootstrap.php dołącz moduł:
'swiftmailer'  => MODPATH.'swiftmailer',


Teraz wystarczy utworzyć obiekty Swift_Message, Swift_SmtpTransport, Swift_Mailer oraz podać dane połączenia, 

$message=new Swift_Message();
$message->setSubject('Temat');
$message->setFrom(array('od_email@od_email.pl'=>'Admin'));
$message->setTo(array('do_email@ do_email.pl'));
$message->setBody('Treść');

$transport=new Swift_SmtpTransport();
$transport->setHost('host');
$transport->setUsername('user');
$transport->setPassword('password');

$mailer=new Swift_Mailer($transport);

$result=$mailer->send($message);


czwartek, 3 lutego 2011

Jak ukryć reklamy na stronie bez Adblock Plus?

Mam kilka strona na yoyo.pl.

Pokażę jak ukryć znajdujące się tam reklamy.
Jest kilka sposobów: można użyć AdBlockPlus lub np. za pomocją JavaScript/jQuery.
AdBlock wystarczy ściągnąć i zainstalować w przeglądarce, proste.

Zajmijmy się jQuery.
Po pierwsze ściągamy bibliotekę jQuery.
Wstawiamy do naszego pliku:
<script type="text/javascript" src="jquery.min.js"></script>

Następnie wstawiamy fragment kodu:
<script>
$(document).ready(function(){
     $("div[id][style]").each(function(){
          if($(this).css('z-index')>=99999){
                $(this).hide();
          }
     });
});
</script>

Wyjaśnienie:
Funkcja $(document).ready() wykonuje się, gdy załaduje się drzewo DOM.
$("div[id][style]") zwraca listę znaczników DIV, które mają atrybuty id i style.
Warunek if($(this).css('z-index')>=99999)sprawdza w aktualnym elemencie, czy wartość stylu z-index spełnia warunek.
Jeśli tak, to polecenie $(this).hide() ukrywa znacznik DIV.

UWAGA:
Ten sposób będzie działać na domenach yoyo.pl oraz gdy nasza strona nie będzie miała elementów typu <DIV id="..." style="...">, gdzie z-index>=99999.

Jeśli chodzi o inne domeny, to można sprawdzić jakie elementy należy ukryć oraz podać odpowiednie warunki.

piątek, 21 stycznia 2011

Kohana 3 - spolszczenie

Dziś pokażę, jak wyświetlać polskie komunikaty.
Na początku edytujemy plik bootstrap.php. Należy dodać nową linijkę:
I18n::lang('pl');

Można ją dopisać zaraz po autoładowaniu klas:
spl_autoload_register(array('Kohana', 'auto_load'));

Następnie zamienić te linijki:
date_default_timezone_set('America/Chicago');
setlocale(LC_ALL, 'en_US.utf-8');

na:
date_default_timezone_set('Europe/Warsaw');
setlocale(LC_ALL, 'pl_PL.utf-8');

Następnie tworzymy plik /application/i18n/pl.php z zawartością:
<?php defined('SYSPATH') or die('No direct script access.');

return array
(
     'Polish' => 'Polski',
     'Hello, world!' => 'Witaj świecie!',
     'First' => 'Pierwsza',
     'Last' => 'Ostatnia',
     'Previous' => 'Poprzednia',
     'Next' => 'Następna',
);

Teraz, wyświetlając paginację mamy polskie wyrazy zamiast angielskich.
Działa to tak:
w odpowiednich plikach (np. w widoku paginacji /module/pagination/views/pagination/basic.php) widać polecenia typ:
<?php echo __('First') ?>
<?php echo __('Previous') ?>
<?php echo __('Next') ?>
<?php echo __('Last') ?>

Dzięki funkcji __ (2 podkreślniki) Kohana wie, że ma korzystać z plików w katalogu i18n i zamieniać je zgodnie z wzorcami.
Mam nadzieję, że wszystko jest zrozumiałe.

czwartek, 13 stycznia 2011

Wiele paginacji w Kohana 3

Pokażę, jak korzystać z kilku paginacji w Kohna.
Załóżmy, że mamy stronę foto galerii, na której są miniatury, a pod nimi komentarze.
Chcemy, aby przewijanie stron z miniaturami i przewijanie stron z komentarzami było niezależne, np. przeglądamy piątą stronę ze zdjęciami i dziesiątą z komentarzami i nie chcemy, aby przejście do kolejnej strony z komentarzami spowodowało przejście do pierwszej strony ze zdjęciami.