Category Archives

43 Articles

UTF-8, MySQL, kódování a PHP funkce pro práci s řetězci: strlen, substr aj.

Možná jste při práci s PHP narazili na problém s UTF-8 kódováním. Doposud jste využívali kódování cp1250 nebo iso-8859-2 a nebyl problém. Okolnosti vás přinutily požívat UTF-8 a najednou bum. Na stránkách se vám chybně vypisují znaky s českou diakritikou a nevíte co s tím.

Jak správně použít UTF-8 a MySQL?

Je třeba dodržet následující pravidla:

  1. Po připojení nastavit kódování, ve kterém bude probíhat komunikace s databázovým serverem:
    mysql_query("SET NAMES 'utf8'");
    nebo 
    mysql_query('SET CHARACTER SET utf8');
    
    Od PHP 5.2.3 a MySQL 5.0.7 raději použijte:
    mysql_set_charset('utf8');
    
    Je to správná a bezpečná varianta
    pro použití mysql_real_escape_string(). Více: 1, 2, 3.
  2. Kódování PHP souborů nastavit na UTF-8 (pozor na počáteční UTF-8 boom znak)
  3. Odesílat hlavičky s UTF-8 kódováním:
    header('Content-Type: text/html; charset=utf-8');
  4. Nastavit UTF-8 kódování v HTML (meta tagy, xml hlavička aj.)
  5. Používat PHP řetězcové funkce, které zvládají UTF-8 (viz dále)

PHPMailer: Snadné posílání (HTML) e-mailů z PHP

by Zdeněk Večeřa 2 Comments

E-mail, obálka, dopis

Pokud potřebujete z webu, kde běží PHP, posílat e-maily, můžete sáhnout po funkci PHP mail(). Jsou s ní trochu starosti, protože musíte myslet na kódování a nesmíte zapomenout na správné uvedení hlaviček (headers).

PHPMailer: Pomocná ruka při posílání e-mailů

Na pomoc přichází PHP knihovna PHPMailer, která zastřešuje vše okolo posílání e-mailů. Můžete ji využít pro posílání nejen přes funkci mail(), ale můžete e-maily zasílat i skrz existující SMTP server (tedy reálnou e-mailovou adresu).

Kódování a HTML e-maily bez problému

S knihovnou PHPMailer jednoduše vytvoříte HTML e-maily s obrázky a přílohou. Nemusíte se ani obávat, že bude problém s kódováním, jako se stává, když bez znalostí pracujete přímo s funkcí mail(). PHPMailer se o vše postará za vás.

Vydán CKEditor 3.0: Nová generace wysiwyg editoru FCKeditor je tu

CKEditor, FCKEditor

Oblíbil jsem si kvalitní FCKeditor, se kterým je psaní a úprava textů v administraci hračka. Přestože bych mu několik drobností vytknul, tak největší problém vidím v jeho rychlosti. Ano, je rychlý, ale jeho načtení a zobrazení by mohlo být rychlejší.

FCKeditor a jeho 6 let úspěchu

Ani se to nezdá, ale FCKeditor je vyvíjen už šest let a za tu dobu si získal velkou oblibu nejen mezi uživateli, ale i vývojáři. Troufám si tvrdit, že spolu s TinyMCE patří mezi nejoblíbenější a nejznámější open-source editory.

CKEditor 3.0: Nová generace přichází

Šest let stáří FCKeditoru je mírně znát, proto vývojáři poslední téměř dva roky pilně pracovali na další verzi, která získala nové jméno: CKeditor.

Prakticky vzato, CKeditor je pokračování FCKeditoru, takže se nenechte zmást, že by zde byl další produkt.

Proč došlo k přejmenování?

Vývojáři se pro změnu názvu rozhodli kvůli jeho problémové výslovnosti v anglicky mluvících zemích.

MySQL: Rychlost UPDATE sloupce v závislosti na přítomnosti indexů

Nedávno jsme s Lukášem Churým a Ondrou Vašíčkem řešili rychlost operace UPDATE v závislosti na tom, jestli upravovaný sloupec má či nemá nastavený index.

Představte si, že máme v MySQL 5.0 tabulku o několika sloupcích, dva z nich jsou „id“ a „xy“. Nad sloupcem „id“ je přidělený index. Sloupec „xy“ index nemá. Rychlost UPDATE sloupce „xy“ trvá nějaký čas.

Otázka zní, jestli UPDATE zabere stejný čas i v případě, kdyby sloupec „xy“ měl přidělený index.

Udělal jsem jednoduchý test, který přináší odpověď.

Jak na to: SQL injection, magic_quotes_gpc, addslashes() a stripslashes()

V názvu článku jsem vyjmenoval slova, která jsou strašákem nejednoho PHP programátora. Strašák to je ale pouze uměle vytvořený, vycházející z neznalosti problematiky.

Dost často se ve spojení s SQL injection (typ útoku hackera) zmiňuje PHP konstanta magic_quotes_gpc. Prý, že pokud je zapnutá, tak se dá SQL injection předejít. A víte, že od PHP 5.3 bude standardně magic_quotes_gpc vypnutá?

Znamená to, že poté budou SQL dotazy napadnutelné pomocí SQL injection? Ale vůbec ne.

Konstanta magic_quotes_gpc totiž s ochranou SQL injection nemá v podstatě nic společného. Pouze zde existuje průsečík v možnosti jejího využití. Proto ji neznalí programátoři začali přisuzovat větší váhu, než má. Váha magic_quotes_gpc je samozřejmě nulová, zvláštně, když od PHP 5.3 bude vypnutá a v PHP 6 zanikne úplně.

Vysvětleme si tedy, oč jde. SQL injection je vážný problém.

mPDF: Snadný export HTML stránek do PDF

by Zdeněk Večeřa 7 Comments

FDFDoposud jsem neznal nějaký snadný a efektivní způsob exportu HTML stránek do PDF formátu, za pomocí PHP. Ano, existuje PHP třída FPDF, ale něco v ní vytvořit mi zrovna jako efektivní nepřijde. Viz kus kódu. Pokud byste FPDF přece jen použili, mrkněte k Zaachimu na blog. Radí tam, jak na české znaky.

Nad touto třídou existuje nástavba, troufám si říct „naštěstí“. Jmenuje se mPDF a nabízí přímý export z HTML stránek do PDF za podpory UTF-8 kódování, tedy s bezproblémovou interpretací českých znaků.

FCKeditor: získání obsahu a vložení textu

by Zdeněk Večeřa 0 Comments

Vytvoření formuláře FCKeditoru pomocí PHP

<?php
$oFCKeditor = new FCKeditor('body') ;
$oFCKeditor->Value = $form['body'];
$oFCKeditor->Create();
?>

Získání obsahu formuláře FCKeditoru:

<input type="button" onclick="alert(FCKeditorAPI.GetInstance('body').GetData());" value="Submit" />

Vložení textu do formuláře FCKeditoru:

<input type="button" onclick="FCKeditorAPI.GetInstance('body').InsertHtml('<strong>ahoj</strong>');" value="Submit" />

phpMyAdmin 3.0.1: blesková správa MySQL databáze

Při vývoji většinou pracuji přímo s databází na webhostingu (přes vzdálený přístup). Pokud je vyvíjená aplikace přístupná pro úzký okruh testerů, je daleko snazší, když webová aplikace využívá stejnou databázi, a to jak z localhostu, tak i přímo na serveru. Vždy mám totiž přístup ke stejným datům.

Proto nějaká lokální databáze, databáze na serveru, synchronizace, atp., jsou pro mě spíše zdržování. Abych si usnadnil práci a nemusel se připojovat na phpMyAdmina na serveru, využívám u sebe na localhostu lokální instalaci phpMyAdmin. Instalace je ale dosti nadnesené slovo. Stačí stáhnout, rozbalit, nastavit pět hodnot a spustit.

Doposud jsem využíval phpMyAdmin ve verzi 2.9.2. Nyní jsem přešel na phpMyAdmin 3.0.1.1. A co že přináší? Nejmarkantnější rozdíl oproti předchozí používané verzi je v rychlosti. Ta se totiž zvýšila, ale rapidně.

Nový NetBeans IDE 6.5: nástroj pro PHP a JavaScriptové vývojáře

Vyšel nový NetBeans 6.5. Nabízí podporu pro skriptovací jazyk PHP, automatické dokončování funkcí, jejich napovídání s provázaností na třídy, kontrolu syntaxe a zvýraznění klíčových slov.

Součástí je ladící nástroj Xdebug. Nová verze dále přichází se vylepšenou podporou JavaScriptu, CSS a techniky AJAX. Můžete také například využít ladění JavaScriptu na Firefoxu a Internet Exploreru.