Upgrade PHP 5.4.0 pro XAMPP
Na začátku měsíce vyšla nová stable verze PHP, která přináší různé novinky – podporu traits, krátkou syntaxi pro pole, ale také například možnost sledovat uploadování souborů, bez použití přídavného PECL balíčku. Více informací naleznete zde: http://docs.php.net/manual/en/migration54.new-features.php.
Cílem článku ovšem není popsat nové vlastnosti PHP, ale jednoduchý návod na provedení upgradu pro xampp.
- Nejprve si stáhněte oficiální PHP build pro Windows ze stránek php.net http://windows.php.net/download/. Stahujte zip Thread Safe verze.
- Mezitím co budete stahovat novou verzi PHP, udělejte si pro jistotu záložní kopii staré verze. Otevřete si složku s nainstalovaným xamppem a přejmenujte složku php na php_zaloha.
- Jakmile budete mít staženo rozbalte veškeré soubory do nové složky php a tu zkopírujte do vaši instalace xamppu. Potom ve složce vyhledejte soubory: php5apache2_2.dll, php5apache2_2_filter.dll, php5apache_2_3.dll a zkopírujte je do složky apache/modules v kořenovém adresáři xamppu.
- Posledním krokem by měla být konfigurace vašeho php.ini, kterou naleznete právě ve složce php.
- Nyní můžete nastartovat apache a vytvořit si testovní soubor s funkcí phpinfo(), pokud jste vše provedli správně, měli by jste nyní vidět verzi PHP 5.4.0.
Přeložení stránkování v url (už žádné page)
Do nedávné doby bylo možné přeložit stránkování v URL adrese pouze tak, že jste museli zasáhnout do jádra WordPressu a „na tvrdo“ jej přepsat. Novinkou ve verzi 3.1.0 je nový parametr $pagination_base pro třídu WP_Rewrite, která se stará o vytváření SEO odkazů.
Pokud chcete změnit stránkování přidejte si do functions.php následující kód:
function new_pagination_base() {
global $wp_rewrite;
// Změna stránkování z "page" na "strana"
$wp_rewrite->pagination_base = 'strana';
// Vygenerování nových pravidel pro přesměrování (rewrite rules)
// A jejich uložení do DB
$wp_rewrite->flush_rules();
}
add_action( 'wp_loaded', 'new_pagination_base' );
Poznámka: Funkce flush_rules() je zbytečnou zátěží pro načítání WP, je nutnost jí volat pouze pokud se pravidla nějak změnila. Proto ji doporučuji zavolat pouze poprvé a poté ji smazat. Vygenerování nových pravidel můžete také docílit tím, že navštívíte stránku v Nastavení „Trvalé odkazy“.
Edit 6.3.2012: Na zmíněné téma jsem vytvořil jednoduchý plugin, který lze nalézt na adrese http://wordpress.org/extend/plugins/pagination-translator/. Po aktivaci pluginu si své stránkování můžete nastavit na stránce „Trvalé odkazy“.
Zachycení echo výstupu funkce
Při ladění webu postaveného na WordPress jsem se pozdržel u jedné věci. Většina tvůrců plugin totiž nemyslí na to, že by jejich výstupní data někdo potřeboval doladit. V takovém případě se tedy většinou setkáváme s funkcemi, které svůj výsledek vypisují na stránku.
Naštěstí zachycení výstupu nějaké funkce není nic extra složitého.
ob_start(); vypisVysledek(); $vysledekVPromenne = ob_get_contents(); ob_end_clean();
Pro získání vypsaných dat používáme Output Buffer (ob).
Použité funkce:
PHPMailer – jednoduché odesílání emailů
Pokud jste někdy použili PHP funkci pro odesílání emailů mail() (a já věřím že ano), jistě jste měli spousty problémů týkající se např. kódování, nebo posílání příloh. Aby se vám email správně zobrazil, je potřeba správně doplňovat hlavičky.
mail()
Ukázka kódu, který jsem používal pro správné zobrazení diakritiky funkce mail().
<?php
$telo = "Tělo zprávy s diakritikou";
$telo = base64_encode($telo);
$subject = "Předmět zprávy taky...";
$subject = imap_8bit($subject);
$subject = "=?UTF-8?Q?".$subject."?=";
$hlavicky="From: $mailto \nReturn-Path: $mailto".
"MIME-Version: 1.0\n".
"Content-Type: text/plain; charset=\"utf-8\"\n".
"Content-Transfer-Encoding: base64";
mail($mailto, $subject, $telo, $hlavicky);
?>
Jak jste si určitě všimli, kód počítá s kódováním UTF-8. Pokud bychom tedy odesílali ze stránek, používající jiné kódování než UTF-8, veškerá diakritika by se rozpadla. Samozřejmě je tady ta možnost vytvořit si funkce pro nejpoužívanější kódování, ale proč bychom to měli dělat, když už to někdo udělal za nás?
PHPMailer
PHPMailer je právě jedna ze tříd, která podobné věci řeší za vás. PHPMailer podporuje přílohy, SMTP servery, emaily ve formátu HTML, a další… Údajně by měla také v budoucnu přijít podpora pro SMS a MMS.
V následujícím příkladu bych rád ukázal jednoduchost PHPMaileru. Bude se jednat o odeslání emailů (zákazníkovi a provozovateli), po odeslání objednávkového formuláře.
<?php
require_once("class.phpmailer.php");
$mail = new PHPMailer();
// Posíláme pomocí PHP funkce mail()
$mail->IsMail();
// Chceme email ve formátu HTML
$mail->IsHTML(true);
$mail->CharSet = "utf-8";
// Email pro zákazníka
// Nastavení odesílatele
$mail->From = "adresa@odesilatele.cz";
$mail->FromName = "Jméno odesilatele";
// Přidání adresy zákazníka
$mail->AddAddress("zakaznik@centrum.cz");
$mail->Subject = "Objednávka ze stránky..";
$mail->Body = "Děkujeme za objednávku. <br />" .
"<b>Prosím odešlete stanovenou částku v Kč na účet **********</b> ... ";
if(!$mail->Send()) {
echo "Chybová hláška: " . $mail->ErrorInfo;
}
// Email pro provozovatele
// Vyprázdnit stávající adresy (tzn. adresa zákazníka)
$mail->ClearAddresses();
// Pomocí příkazu AddAdress můžeme přidat kolik emailů jen chceme
$mail->AddAddress("administrator@nejaky-obchod.cz");
$mail->AddAddress("sef-vyroby@nejaky-obchod.cz");
$mail->Subject = "Nová zkázka..";
$mail->Body = "Právě si někdo objednal nový výrobek <br />" .
"<i>Vlastní motiv v příloze</i> ...";
// Přidání přílohy z formuláře
$mail->AddAttachment($_FILES['file']['tmp_name'], $_FILES['file']['name']);
if(!$mail->Send()) {
echo "Chybová hláška: " . $mail->ErrorInfo;
}
?>
Zhruba takhle by mohl vypadat finální kód, použití třídy je velmi jednoduché a intuitivní.
PHPMailer a SMTP
Pokud by jste chtěli použít PHPMailer s SMTP a napojit se tak například na Gmail, musíte ke svému projektu připojit soubor class.smtp.php, který je samozřejmě součástí archivu PHPMaileru. Nastavení pro nejpoužívanější servery lze nalézt zde: Popular Server Settings.
Využití Gmailu
<?php require "class.phpmailer.php"; $mail = new PHPMailer(); $mail->IsSMTP(true); $mail->SMTPAuth = true; $mail->SMTPSecure = "tls"; $mail->Host = "smtp.gmail.com"; $mail->Port = 587; $mail->Username = "uzivatelskejmeno"; $mail->Password = "heslo"; $mail->From = "adresa@odesilatele.cz"; $mail->FromName = "Jméno odesílatele"; // Zbytek kódu již je stejný jako v předchozím příkladu ... ?>
PHPMailer v češtině
Chybové hlášky jsou lokalizované do několika jazyků, včetně češtiny. Pokud chcete používat češtinu, stačí si vykopírovat příslušný soubor ze složky lang k hlavnímu souboru třídy. Poté zavoláte metodu $mail->SetLanguage(„cz“, „“) (samozřejmě až po vytvoření třídy). Metoda SetLanguage má dva parametry, prvním vybíráme jazyk a druhý slouží k určení cesty k souboru, jako defaultní je nastavena složka „language“.


(5 hlasů, průměr: 4,40 z 5)