Webdesign

Adobe a grafika 35 Google 27 PHP 78 Webdesign, CMS 304

Nastavte si lépe phpMyAdmin

phpMyAdmin 2.6.0 je jedna z nejužitečnějších PHP aplikací, pod GNU GPL licencí. Umožňuje spravovat vaše MySQL servery, a provádět na nich prakticky veškeré myslitelné operace.

Nová verze 2.6.0 má přepracované rozhraní, podporuje nativně češtinu v UTF-8 (cs-utf-8), odstraňuje řadu bugů, a má nové funkce. Jednou z tradičních funkcí phpMyAdmina je i vytváření relací mezi tabulkami, jejich popis, historie SQL příkazů, bookmarky a export do PDF. Tyto funkce jsou, nicméně, v základu zakázány. Jak je aktivovat?

V phpMyAdminu spusťte skript /scripts/create_tables.sql, vytvoří se Vám 7 tabulek, v nové databázi nazvané phpmyadmin, kam se budou dané informace ukládat. Následně je nutné modifikovat soubor config.inc.php:

// nastaveni URL na phpMyAdmina
$cfg['PmaAbsoluteUri'] = 'http://localhost/myadmin/';

// nastaveni hesla
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root'; 
$cfg['Servers'][$i]['password'] = 'xxxxxx';

// nastavení relací pro PMA
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages'; 
$cfg['Servers'][$i]['column_info'] = 'pma_column_info'; 
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['verbose_check'] = FALSE;

A můžeme doplnit i pár vizuálních úprav (odstranění loga), nastavení default jazyka a kódování, a zobrazování informací o běhu MySQL a PHP:

// persistent connections
$cfg['PersistentConnections'] = TRUE;

// nezobrazovat logo
$cfg['LeftDisplayLogo'] = FALSE;

// zobrazuj info o MySQL a PHP
$cfg['ShowMysqlInfo'] = TRUE;
$cfg['ShowMysqlVars'] = TRUE;
$cfg['ShowPhpInfo'] = TRUE;

// zobrazuj BLOBy
$cfg['ShowBlob'] = TRUE;

// default jazyk a charset
$cfg['DefaultLang'] = 'cs-utf-8';
$cfg['DefaultCharset'] = 'utf-8';
0 komentářů

Photoshop: Efekt zvětšovacího skla – lupa

Předmluva Radka Hulána k článku: Tento článek je dílem jedné velice schopné mladé ženy, Ivany Bednářové, která se věnuje profesionálně grafice (společnost ART-PGN). Ivana v seriálu článků na WELL.DONE hodlá přinést praktický pohled na použití Photoshopu pro potřeby webdesignu, od základů, až po kompletní “case-studie”, tedy vytvoření komplexní grafiky celého webu. Pro další inspiraci se můžete podívat na její reference, popřípadě si rovnou objednat zakázku na redesign, či nový design Vašeho webu.


V našem úvodním a spíše lehce pojatém článku o postupech v photoshopu bychom se mohli věnovat efektu, který bývá často používán a vypadá dosti realisticky. V určitých částech grafické tvorby ho lze velmi dobře využít. Jedná se o tzv. zvětšovací sklo – lupu. Článek věnujme ne úplným začátečníkům, i když…

V první části si připravíme obrázek, na který budeme „lupu“ aplikovat. Já jsem si vybrala obrázek resp. fotografii trojského zámku, který jsem nedávno pořídila (obr. č. 1).

Obrázek 1 Zvětšit obrázek č.1

Celý článek 0 komentářů

Užitečné funkce pro PHP - díl 5.

Znáte CURL PHP extension? Pokud ne, doporučuji se s ním seznámit, je to jedno z nejužitečnějších (pro určité úkoly) PHP rozšíření pro práci na úrovni http, https, ftp, gopher, telnet, dict, file a ldap protokolů. Například tímto kódem jste schopni poslat HTTP POST request (tedy to samé, co se stane při stisknutí tlačítka SUBMIT formuláře).

// HTTT POST
function postit(&$data,$url,$verbose){
 $s="";
 foreach($data as $key=>$val) {
   if (!empty($s)) $s.= '&';
   $s.= $key.'='.urlencode($val);
 }
 // init
 $ch = curl_init($url);
 // set options
 curl_setopt($ch, CURLOPT_HTTP_VERSION, 1.0);
 curl_setopt($ch, CURLOPT_VERBOSE, $verbose);
 curl_setopt($ch, CURLOPT_HEADER, 1);
 curl_setopt($ch, CURLOPT_TIMEOUT, 100);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $s);
 // perform post
 $rr=curl_exec($ch);
 if ($verbose) echo $rr;
 curl_close($ch);
 }
// příklad použití
$data['jmeno'] = 'Radek Hulan';
$data['komentar'] = 'Toto je komentar';
postit($data,'http://vase.domena.com',1);

Zajímavé je i použití parametru CURLOPT_PROXY, například následovně:

$proxy = 'http://81.5.140.49:80';
curl_setopt($ch, CURLOPT_PROXY, $proxy); 
0 komentářů

Užitečné funkce pro PHP - díl 4.

Dnes jsem řešil takový zábavný problém, automatický převod cyriliky na latinku, kvůli SEO URL, tedy aby to místo Советский Союз zcela automaticky vytvořilo sovetskij-sojuz. Fonetický přepis do latinky. A vyšla mi z toho tato funkce pro PHP, doufám, že se bude hodit i ostatním:

$global_utf=
  explode(',',
   "КВ,кв,КС,кс,А,а,Б,б,Ц,ц,Д,д,Э,Е,е,Ф,ф,Г,г,Х,х,".
   "И,и,Й,й,К,к,Л,л,М,м,Н,н,О,о,П,п,Р,р,С,с,".
   "Т,т,У,у,В,в,В,в,Ы,ы,З,з,Ч,ч,Ш,ш,Щ,щ,Ж,ж,".
   "я,ь,ю,Ю");
$global_asc=
  explode(',',
   "Q,q,X,x,A,a,B,b,C,c,D,d,E,E,e,F,f,G,g,H,".
   "h,I,i,J,j,K,k,L,l,M,m,N,n,O,o,P,p,R,r,S,".
   "s,T,t,U,u,V,v,W,w,Y,y,Z,z,Ch,ch,Sh,sh,Sht,".
   "sht,Zh,zh,ja");

function utf2ascii($title){
  global $global_utf,$global_asc;
  $i=0;
  foreach ($global_utf as $s)
   $title=
    str_replace(trim($s),trim($global_asc[$i++]),$title);
  return $title;
} 

Teď by bylo ještě zajímavé vyřešit takový fonetický přepis japonštiny, korejštiny a čínštiny 🙂

0 komentářů

PHP, setlocale(), strftime() a UTF-8

Tak tu řeším jeden problém s locale a češtinou v UTF-8, a nemohu se k tomu dopracovat.

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'>
<html><body>
<?php
 setlocale(LC_TIME,$_GET['a']); 
 header('Content-Type: text/html; charset=utf-8');
 echo "<h1>".strftime("%A, %d.%m.%y",time())."</h1>";
?>
</body></html>

Problém je v tom, že pokud zadám do setlocale cokoliv jiného než czech, je vše anglicky. Toto všechno nefunguje:

Czech_Czech Republic.UTF8
Czech_Czech Republic.65001
Czech_Czech Republic.UTF-8
cs_CZ.utf8
czech.65001
Czech_Czech Republic.UTF 

Předpokládám, že řešení bude naprosto triviální, ale teď je prostě nevidím. Možnost je napsat iconv('iso8859-2','utf-8',strftime(..)), ale to není řešení koncepční.

0 komentářů

Užitečné funkce pro PHP - díl 3.

Jeden z častých problémů weblogů je ten, že obsahují velké množství externích linků, takže de-facto reprezentují takovou malou link-farmu. Nic dobrého pro Google Page Rank. S PHP se to dá velice vhodně řešit. V případě BLOG:CMS je to celé možné napsat jako plugin.

Kód používá jednu z nejmocnějších funkcí v PHP, a to preg_replace_callback. Je dobré se s ní pořádně seznámit.

Vlastní implementace je pak poměrně jednoduchá. Uvedený objekt nám převede libovolný text tak, že veškeré externí linky budou směrovat na Váš vlastní web a otevírány přes proměnnou url. Ve spojení s NP_Cache je to možné dělat i za běhu serveru, nikoliv jen při ukládání.

<?php
class SEO {
 // inicializace
 function SEO(){
   global $_SERVER;
   $this->server = $_SERVER['HTTP_HOST'];
   $this->redirect = '/redirect/';
 }
 // převede externí linky v textu na
 // URL typu /redirect/?url=http://externi
 function _SEO(&$text){
   $text = preg_replace_callback(
   '/<a(.*?)href=[\"|\'](.*?)[\"|\']/',
   array(&$this, 'myLink'),
   $text);
 }
 // callback funkce, převede linky, které nejsou na moji
 // doménu, a obsahují URI na SEO-friendly formát
 function myLink($m){
   if (strstr($m[2],$this->server) || 
       ( !strstr($m[2],'http://') && 
         !strstr($m[2],'//') &&
         !strstr($m[2],'ftp://') ) )
     return '<a'.$m[1].'href="'.$m[2].'"';
   else
     return '<a'.$m[1].'href="'.
      $this->redirect.'?url='.$m[2].'"';
 }
} // end class SEO
?>
Celý článek 0 komentářů

Užitečné funkce pro PHP - díl 2.

V tomto díle seriálu publikuji skript na základní a automatizovanou kontrolu formulářů na straně serveru, a jejich před-vyplňování, v případě, že formulář nebyl vyplněn korektně, a je nutné je opravit.

function check($field,$type,$chars=''){
 $field=htmlspecialchars(trim($_POST[$field]));
 $error='';
 switch ($type){
  case 'email':
   if (preg_match(
    '/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+.[A-Za-z]{2,5}$/', 
    $field)) return;
   $error='Emailová adresa není platná.';
   break;
 case 'string':
   if (!isset($chars)) $chars=2;
   if (strlen($field)>=$chars) return;
   $error="Tato položka musí mít minimálně $chars znaků.";
   break;
 case 'number':
   if (!isset($chars)) $chars=0;
   if ($chars==0 && !is_numeric($field)) 
     $error="Položka nebyla zadána správně.";
   if ($chars==0 && is_numeric($field) && intval($field)<0) 
     $error="Položka nebyla zadána správně.";
   if ($chars>0) 
   if (!preg_match("/d{".strval($chars)."}/",$field)) 
     $error="Toto číslo musí mít právě $chars znaků.";
   break;
 case 'ico':
   if (!is_numeric($field)) 
     $error='IČ nemá správný formát.';
   break;
 case 'equal':
   if (!isset($field) || !isset($_POST[$chars])) 
     $error='Položka není shodná s předchozí';
   if (strcmp($field,$_POST[$chars])!=0) 
     $error='Tato položka ('.
       $field.
       ') není shodná s předchozí ('.
       $_POST[$chars].')';
   break;
 default:
   die('Chybná konfigurace systému');
   break;
 }
 if (!empty($error)) {
 echo "<p style='color:red'>Chyba: <em>$error</em></p>n";
 $this->isok=false;
 }
} /* end check */

Uvedenou funkci poté můžeme používat pro kontrolu stringových, numerických položek, emailů, IČ organizace (musí být modulo 11), případně rovnosti 2 vložených položek (například 2x vkládaného emailu či hesla).

Celý článek 0 komentářů

Užitečné funkce pro PHP - díl 1.

V tomto seriálu budu publikovat jednoduché funkce v PHP, které jsou ovšem velice užitečné pro běžné programování redakčního systému.

Vytvoření náhodného hesla pro uživatele

function createPassword($length){
 $vowels = array('a', 'e', 'i', 'o', 'u');
 $cons = array('b', 'c', 'd', 'g', 'h', 'j', 'k', 'l', 
               'm', 'n', 'p', 'r', 's', 't', 'u', 'v', 
               'w', 'tr', 'cr', 'br', 'fr', 'th', 'dr', 
               'ch', 'ph', 'wr', 'st', 'sp', 'sw', 'pr',
               'sl', 'cl');
 $num_vowels = count($vowels);
 $num_cons = count($cons);
 $password = '';
 for($i = 0; $i < $length; $i++)
   $password .= 
     $cons[rand(0, $num_cons - 1)] . 
     $vowels[rand(0, $num_vowels - 1)];
 return substr($password, 0, $length);
}

Zaslání hlaviček (pokud je příjemce umí)

function serverVar($name) {
 return $_SERVER[$name];
}
function sendContentType($contenttype, $charset = 'utf-8') {
 $accept=false;
 if ($contenttype == 'application/xhtml+xml') {
  if (stristr(serverVar("HTTP_ACCEPT"),"application/xhtml+xml")) {
   if (preg_match("/application\/xhtml\+xml;q=0(\.[1-9]+)/i",serverVar("HTTP_ACCEPT"), $matches)) {
    $xhtml_q = $matches[1];
    if (preg_match("/text\/html;q=0(\.[1-9]+)/i",serverVar("HTTP_ACCEPT"), $matches)) {
     $html_q = $matches[1];
     if($xhtml_q >= $html_q) $accept=true;
    }
   } else
   $accept=true;
  }
  if (stristr(serverVar("HTTP_USER_AGENT"),"W3C_Validator")) $accept=true;
 }
 // cannot accept xhtml+xml
 if (!$accept && ($contenttype == 'application/xhtml+xml')) $contenttype='text/html';
 // content type
 header('Content-Type: ' . $contenttype . '; charset=' . $charset);
}
0 komentářů

Gmail - podrobnější popis a screenshoty

Gmail

Gmail pár dnů testuji a mám z něj velice pozitivní dojmy. Proč? Funguje to jako skutečná aplikace. Potom, co se v cache usadí 250kB JavaScriptů, tak je reakce okamžitá i na gprs připojení, možnost řadit (automaticky) zprávy dle konverzací, a hlavně vytváření pohledů (filtrů) je velice přínosná.

Vtip je v tom, že filtr je lepší než složka. Ve složce může být jeden email právě jednou, ale filtr, je jen pohled na hromadu emailů v Inboxu a SentBoxu, takže, není problém mít filtr na emaily od XYZ, pak na emaily s videem, atd., a Gmail to v reálném čase prohledává a filtruje, a díky použití JS i okamžitě zobrazí i na velice pomalém připojení.

To, že to nemá ani Doctype je naprosto jedno. Webová aplikace se jako XHTML 1.0 prezentační web nedá napsat, webová aplikace musí používat JavaScript, a Gmail jej používá velice dobře. Zkoušel jsem Yahoo i Hotmail, ale i email.cz, seznam.cz, ale to je nepoužitelné.

Gmail je první skutečně použitelný webmail, protože si nehraje na webmail, ale v podstatě simuluje GUI aplikaci, přičemž si zachovává výhodu online dostupnosti.

To, že nyní nemá POP3 mě moc nebere, je v podstatě jedno, jestli si spustím aplikaci v browseru, nebo jako EXE soubor 😉 Jinak řečeno, jako koncového uživatele mě nezajímá, zda aplikace jako API používá WinAPI, či XHTML / JS / CSS / HTTP. Navíc, nemusím se takto starat o zálohování, a pokud mám jen POP3, a přijímám emaily na více místech, tak ani o merge těch dat.

Špehuje nás Gmail?

Ne, ne, a 1000x ne. To je obava tupých lam, jinak to nazvat nemohu. Gmail jen uplatňuje počítačový algoritmus, program, který k prohlíženému emailu nabídne krátkou textovou reklamu. Nic víc. Dělá to spousta providerů, dělá to email.cz, seznam.cz, yahoo.com. Dělá to každý. Hloupé komentáře na toto téma budou mazány.

Jak tedy Gmail v reálu vypadá?

0 komentářů

PunBB - sympatické a rychlé fórum

PunBB je fórum, které není zatíženo žádným grafickým balastem, tar.bz2 download má jen 90kB (!), je extrémně rychlé i na pomalých linkách a má přitom vše, co potřebujete, včetně exportu posledních příspěvků v RSS/XML formátu. Navíc, je vydáno v GNU GPL licenci. Na naprostou většinu potřeb je phpBB zcela zbytečně nabobtnalé, PunBB je zde vhodnější. Dostupný je dokonce i konvertor z phpBB do PunBB 🙂

0 komentářů