<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>E-learning kursy i szkolenia Online &#124;&#124;&#124;S&#124;G&#124;&#124;&#124; &#187; Projektowanie www</title>
	<atom:link href="http://elearning.media.pl/index.php/category/projektowanie-www/feed/" rel="self" type="application/rss+xml" />
	<link>http://elearning.media.pl</link>
	<description>Blog o tematyce nauczania zdalnego , zbiór publikacji , audiobooki</description>
	<lastBuildDate>Wed, 02 Dec 2009 08:17:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Kurs PHP cz. 15 Dynamiczna grafika</title>
		<link>http://elearning.media.pl/index.php/2009/12/02/kurs-php-cz-15-dynamiczna-grafika/</link>
		<comments>http://elearning.media.pl/index.php/2009/12/02/kurs-php-cz-15-dynamiczna-grafika/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 08:17:33 +0000</pubDate>
		<dc:creator>Bogdan Markowicz</dc:creator>
				<category><![CDATA[Kursy php cms java html flash itp]]></category>
		<category><![CDATA[darmowe kursy]]></category>
		<category><![CDATA[kurs PHP]]></category>
		<category><![CDATA[mySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[projektowanie stron www w praktyce]]></category>
		<category><![CDATA[Projektowanie www]]></category>

		<guid isPermaLink="false">http://www.blog.servicetek.media.pl/?p=381</guid>
		<description><![CDATA[15. Dynamiczna grafika
15.1. Jak to działa?
Dzięki użyciu obecnej domyślnie w PHP biblioteki GD istnieje możliwość dynamicznego tworzenia plików graficznych. Grafika taka jest tworzona przez parser PHP, a następnie wysyłana do przeglądarki tak jak zwykły plik graficzny. Dzięki GD można utworzyć grafikę w różnych formatach, m.in. JPG, GIF, WBMP i PNG, ...]]></description>
			<content:encoded><![CDATA[<h3>15. Dynamiczna grafika</h3>
<h4>15.1. Jak to działa?</h4>
<p>Dzięki użyciu obecnej domyślnie w PHP biblioteki GD istnieje możliwość dynamicznego tworzenia plików graficznych. Grafika taka jest tworzona przez parser PHP, a następnie wysyłana do przeglądarki tak jak zwykły plik graficzny. Dzięki GD można utworzyć grafikę w różnych formatach, m.in. JPG, GIF, WBMP i PNG, przy czym zalecane jest używanie właśnie PNG, który ostatnio zaczyna wypierać GIF-y z Sieci.</p>
<h4>15.2. Podstawy</h4>
<p>Dynamiczną grafikę wstawia się do dokumentu tradycyjnie, używając znacznika &lt;img&gt;. Jedyną różnicą jest to, że atrybut src wskazuje na plik z rozszerzeniem PHP. Możliwe jest nawet uruchamianie skryptu tworzącego grafikę z parametrami podanymi jako zmienne GET. Oto, jak należy wstawić przykładowy obrazek do dokumentu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
echo&#8221;&lt;img src=\&#8221;licznik.php?wizyty=&#8221;.$licz.&#8221;\&#8221; /&gt;&#8221;;<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>Najważniejsze jest ustawienie Content-type w nagłówku, tak aby przeglądarka mogła odpowiednio zinterpretować plik. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
header(&#8221;Content-type: image/png&#8221;);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>W zależności od założonego typu pliku należy ustawić odpowiedni Content-type na image/png, image/gif lub image/jpeg. Następnie należy utworzyć nowy, pusty obrazek za pomocą funkcji imagecreate(). Zwraca ona uchwyt do obrazka, coś na wzór uchwytu do pliku funkcji fopen(). Jako parametry tej funkcji trzeba podać wysokość i szerokość obrazka. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>$img=imagecreate(200,200);</td>
</tr>
</tbody>
</table>
<p>Można też utworzyć nowy obrazek na podstawie wzorca za pomocą funkcji imagecreatefrompng(). Jest to bardzo dobra metoda do tworzenia np. przycisków na stronie. Wystarczy utworzyć jeden obrazek z tłem i później stworzyć tylko skrypt wstawiający tekst z parametru GET na gotowe tło. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>$img=imagecreatefrompng(&#8221;buttony/podklad1.png&#8221;);</td>
</tr>
</tbody>
</table>
<p>Po zakończeniu tworzenia obrazka trzeba go wysłać do przeglądarki. Służą do tego funkcje imagepng(), imagejpeg(), imagegif() i imagewbmp(). Pobierają one dwa argumenty. Jako pierwszy należy podać wskaźnik do obrazka, a drugi (opcjonalny) to nazwa pliku (używamy go w momencie, gdy chcemy zapisać obrazek na serwerze).</p>
<p>W nazwach kilku funkcji obsługi grafiki występuje również format pliku, np. imagecreatefrompng czy imagepng. Oznacza to, że funkcja ta służy do obsługi danego formatu pliku. Do obsługi innych formatów służą inne funkcje, z innymi nazwami, np. imagecreatefromjpeg czy imagegif. Należy o tym pamiętać i podczas tworzenia obrazka trzymać się zawsze jednego formatu. Tworząc cały serwis, najlepiej tworzyć pliki graficzne w jednym wybranym formacie, chociaż najbardziej przyszłościowym wydaje się właśnie PNG.</p>
<h4>15.3. Pierwsze rysunki ? deklaracja kolorów</h4>
<p>Jeśli mamy już gotowy plik, warto teraz coś w nim narysować. Najpierw jednak należy zadeklarować kolory, które będą użyte podczas malowania. Do deklarowania koloru służy funkcja imagecolorallocate(), która pobiera cztery argumenty. Należy podać kolejno zmienną-obiekt z obrazkiem oraz wartości składowe: czerwoną, zieloną i niebieską wybranego koloru (od 0 do 225). Funkcja zwraca zmienną-identyfikator koloru. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
$orange=imagecolorallocate($img,220,210,60);<br />
$white=imagecolorallocate($img,225,225,225);<br />
$black=imagecolorallocate($img,0,0,0);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<h4>15.4. Wypełnianie</h4>
<p>Do wypełniania zwartych powierzchni służy funkcja imagefill(). Należy podać cztery argumenty, zmienną id obrazka, współrzędną początkową x (left), współrzędną początkową y (top) oraz id koloru. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
imagefill($img,0,0,$black);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<h4>15.5. Linie</h4>
<p>Aby narysować linię, należy użyć funkcji imageline(). Argumenty, które należy podać, to imageline(obrazek, x_poczatkowe, y_poczatkowe, x_koncowe, y_koncowe, kolor). Na rysunku obok widać narysowaną linię i opisane współrzędne. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
imageline($img,120,120,190,190,$white);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<h4>15.6. Kwadraty</h4>
<p>Aby narysować kwadrat, należy użyć funkcji imagerectangle(). Argumenty, które podajemy, to imagerectangle(obrazek, x_poczatkowe, y_poczatkowe, x_koncowe, y_koncowe, kolor), przy czym x_początkowe i y_poczatkowe to współrzędne lewego górnego wierzchołka kwadratu, a x_koncowe i y_koncowe to współrzedne prawego dolnego wierzchołka. Istnieje też funkcja imagefilledrectangle() (te same argumenty), rysująca wypełniony kwadrat. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
imagerectangle($img,10,10,30,30,$orange);<br />
imagefilledrectangle($img,30,30,50,50,$orange);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p><a name="eztoc5335_0_1_7"></a></p>
<h4>15.7. Elipsy</h4>
<p>Do rysowania elipsy należy użyć funkcji imageellipse(). Argumenty, które podajemy, to imageellipse(obrazek, x_srodka, y_srodka, x_szerokosc, y_wysokosc, kolor). Istnieje też funkcja imagefilledellipse() (te same argumenty), rysująca wypełnioną elipsę. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
imageellipse($img,180,20,20,20,$orange);<br />
imagefilledellipse($img,20,180,20,20,$orange);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p><a name="eztoc5335_0_1_8"></a></p>
<h4>15.8. Kształty bliżej nieokreślone</h4>
<p>Jeśli musimy narysować nieregularny kształt, należy się posłużyć funkcją imagepolygon(). Argumenty, które podajemy, to imagepolygon(obrazek, tablica_wierzcholkow, ilosc_wierzcholkow, kolor). Tablica wierzchołków to tablica przygotowana według poniższego wzorca:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
$wartosci=array(<br />
50,50,// punkt 1 (x, y)<br />
90,60,// punkt 2 (x, y)<br />
80,100,// punkt 3 (x, y)<br />
40,60,// punkt 4 (x, y)<br />
);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>Pamiętajmy, żeby zmienna liczba_wierzchołkow miała taką samą wartość jak liczba, którą zadeklarowaliśmy w tablicy. W przeciwnym wypadku wystąpi błąd. Oczywiście, tak jak w innych sytuacjach, istnieje też funkcja tworzącą wypełniony wielobok ? imagefilledpolygon(). Efekt taki jak na obrazku (biały wielobok z pomarańczowym obrysem) uzyskaliśmy, wywołując dwa razy tworzenie wieloboku o tych samych wierzchołkach: raz białego z wypełnieniem, a drugi raz pomarańczowego. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
imagefilledpolygon($img,$wartosci,4,$white);<br />
imagepolygon($img,$wartosci,4,$orange);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p><a name="eztoc5335_0_1_9"></a></p>
<h4>15.9. Łuki</h4>
<p>Schemat działania imagearc()<br />
i kontynuacja &#8216;malowanki&#8217;:<br />
Aby narysować część okręgu, należy posłużyć się funkcją imagearc(). Argumenty, które podajemy, to imagearc(obrazek, x_srodka, y_srodka, szerokosc, wysokosc, kat_poczatka, kat_konca, kolor). Łuk jest zawsze rysowany od poziomu (jak na schemacie) zgodnie z ruchem wskazówek zegara. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
imagearc($img,120,120,100,100,90,360,$orange);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>Łuki wypełnione<br />
IMG_ARC_PIE IMG_ARC_CHORD IMG_ARC_NOFILL<br />
IMG_ARC_EDGED IMG_ARC_EDGED+IMG_ARC_NOFILL<br />
W poprzednich funkcjach, żeby otrzymać figurę wypełnioną, wystarczyło zmienić nazwę funkcji, dodając filled. Aby narysować wypełniony łuk, należy się również posłużyć funkcją imagefilledarc(). Oprócz parametrów opisanych przy imagearc() musimy również na końcu dodać jeszcze styl wypełnienia. Cztery dostępne style to:</p>
<ul>
<li>IMG_ARC_PIE ? tworzy wypełniony łuk, połączony ze środkiem okręgu,</li>
<li>IMG_ARC_CHORD ? tworzy wypełniony trójkąt, początek i koniec łuku są połączone prostą,</li>
<li>IMG_ARC_NOFILL ? tworzy sam łuk bez wypełnienia,</li>
<li>IMG_ARC_EDGED ? użyty pojedynczo wygląda tak samo jak IMG_ARC_PIE.</li>
</ul>
<p>Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
imagefilledarc($img,40,30,100,100,30,120,$orange,IMG_ARC_PIE);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>Style można łączyć operatorem + (tworząc w ten sposób nowe style). Najlepszym przykładem na to jest połączenie IMG_ARC_NOFILL oraz IMG_ARC_EDGED, dzięki któremu otrzymujemy sam łuk i linie łączące jego końce ze środkiem (bez wypełnienia). Warto też samemu eksperymentować z różnymi kombinacjami stylów, które dają czasem dosyć ciekawe efekty.</p>
<p><a name="eztoc5335_0_1_10"></a></p>
<h4>15.10. Napisy</h4>
<p>Do dodawania do obrazka napisów służy kilka funkcji. Pierwsza z nich to imagechar(). Dodaje ona do obrazka tylko jeden znak. Jej argumenty to imagechar(obrazek, wielkosc, x_poczatkowe, y_poczatkowe, znak, kolor). Wielkość to cyfra od 1 do 5 ? 1 to najmniejsza, 5 to największa. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
imagechar($img,3,80,80,&#8217;P',$orange);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>Istnieje też druga funkcja dodająca po jednym znaku do obrazka. To imagecharup(). Pobiera ona te same parametry, a różni się od poprzedniej tylko tym, że rysuje znak pionowo.</p>
<p><a name="eztoc5335_0_1_11"></a></p>
<h4>15.11. Ciąg znaków</h4>
<p>Aby dodać jakiś tekst do obrazka, nie trzeba bawić się w dodawanie po kolei każdego znaku. Wystarczy uzyć funkcji imagestring(). Parametry, które podajemy, są takie same jak w wypadku imagechar(), tylko zamiast pojedynczego znaku podaje się cały ciąg. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
imagestring($img,5,80,80,&#8217;PHP jest OK&#8217;,$orange);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>Aby dodać tekst pionowo, wystarczy (podobnie jak w wypadku jednego znaku) użyć funkcji imagestringup().</p>
<p><a name="eztoc5335_0_1_12"></a></p>
<h4>15.11. Styl ciągu znaków</h4>
<p>Domyślna czcionka w imagestring() nie jest zbyt ciekawa. Czasem zachodzi potrzeba wypisania czegoś bardziej ciekawym fontem. Z pomocą przychodzi wtedy funkcja imagettftext(), dzięki której możemy tworzyć napisy pisane dowolną czcionką True Type. Oto argumenty, które trzeba podać do funkcji:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>imagettftext(obrazek, wielkosc,<br />
kat, x_poczatkowe, y_poczatkowe,<br />
kolor, plik_z_czcionka, tekst)</td>
</tr>
</tbody>
</table>
<p>Wielkość to tym razem nie liczba od 1 do 5, a liczba od 5 do 150 reprezentująca wielkość w pikselach, taką jaką znamy z np. Worda. Kąt to kąt nachylenia tekstu. Wyrażenie 0 stopni to tekst pisany normalnie ? poziomo. Tym razem jednak tekst jest obracany o dany kąt przeciwnie do ruchu wskazówek zegara. Zmienne x_poczatkowe i y_poczatkowe to współrzędne lewego (dolnego) wierzchołka tekstu (a nie lewego górnego, tak jak w imagestring()!). W parametrze plik_z_czcionka należy zaś podać adres do pliku .TTF z czcionką True Type. Czcionki True Type to czcionki używane w systemie ? wystarczy skopiować taki plik z folderu C:\WINDOWS\FONTS i wgrać go na własne konto ze stroną. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
imagettftext($img,10,315,30,<br />
30,$orange,&#8221;folder/acmesa.ttf&#8221;,&#8221;czcionka A.C.M.E &#8211; test&#8221;);</p>
<p>imagettftext($img,10,20,30,<br />
140,$white,&#8221;folder/bluehigb.ttf&#8221;,&#8221;czcionki True Type&#8221;);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p><a name="eztoc5335_0_1_13"></a></p>
<h4>15.12. Licznik wyświetlający grafikę</h4>
<p>Pokażemy teraz, jak utworzyć plik licznik.php pobierający liczbę odwiedzin z parametru wizyty i wyświetlający graficznie liczbę odwiedzin. Najpierw należy ustawić odpowiednią wartość Content-type. Później kopiujemy zawartość zmiennej wizyty z tablicy _GET do zmiennej $wizyty, a w zmiennej $dl zapisujemy długość ciągu zmiennej $wizyty. Kolejno tworzymy obrazek o odpowiedniej szerokości (liczba cyfr*20) i definiujemy kolory. Pokrywamy tło na czarno i w pętli for wyświetlamy po kolei każdą cyferkę, używając funkcji imagettftext(). Na koniec wysyłamy gotowy obrazek, używając imagepng(). Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?php<br />
header(&#8221;Content-type: image/png&#8221;);<br />
$wizyty=$_GET['wizyty'];<br />
$dl=strlen($wizyty);<br />
$img=imagecreate(($dl*20),40);//szerokość zależna od liczby cyfr<br />
$orange=imagecolorallocate($img,220,210,60);//deklaracja kolorów<br />
$black=imagecolorallocate($img,0,0,0);<br />
imagefill($img,0,0,$black);//wypełnienie tła<br />
for($i=0;$i$dl;$i++) {<br />
imagettftext($img,15,0,$i*20+5,27,$orange,&#8221;gd/bluehigb.ttf&#8221;,<br />
substr($wizyty,$i,1));<br />
}<br />
imagepng($img);//wysłanie obrazka do przeglądarki<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>Aby teraz wstawić to do dokumentu, należy użyć znacznika &lt;img&gt;. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;img src=&#8221;licznik.php?wizyty=12345&#8243; /&gt;</td>
</tr>
</tbody>
</table>
<p>a tam, gdzie jest wpisane 12345, wpisać nazwę zmiennej z liczbą do wyświetlenia.</p>
]]></content:encoded>
			<wfw:commentRss>http://elearning.media.pl/index.php/2009/12/02/kurs-php-cz-15-dynamiczna-grafika/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jentla: system jednoczesnego zarządzania wieloma projektami Joomli!</title>
		<link>http://elearning.media.pl/index.php/2009/11/30/jentla-system-jednoczesnego-zarzadzania-wieloma-projektami-joomli/</link>
		<comments>http://elearning.media.pl/index.php/2009/11/30/jentla-system-jednoczesnego-zarzadzania-wieloma-projektami-joomli/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 11:15:44 +0000</pubDate>
		<dc:creator>Bogdan Markowicz</dc:creator>
				<category><![CDATA[Bezpieczeństwo]]></category>
		<category><![CDATA[Kursy php cms java html flash itp]]></category>
		<category><![CDATA[Nowości]]></category>
		<category><![CDATA[Projektowanie www]]></category>
		<category><![CDATA[Technologie internet IT]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[instalacja]]></category>
		<category><![CDATA[jak zainstalowac joomle]]></category>
		<category><![CDATA[jentla]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[joomladay]]></category>
		<category><![CDATA[kurs]]></category>
		<category><![CDATA[kurs PHP]]></category>
		<category><![CDATA[po polsku]]></category>
		<category><![CDATA[polska]]></category>
		<category><![CDATA[poradnik]]></category>
		<category><![CDATA[projektowanie stron www]]></category>

		<guid isPermaLink="false">http://www.blog.servicetek.media.pl/?p=808</guid>
		<description><![CDATA[Firma Zac-Ware ogłosiła, że wkrótce zostanie wydana aplikacja Jentla Enterprise Layer. Ten zestaw dodatków i usług umożliwi centralne, jednoczesne zarządzanie wieloma projektami bazującymi na system zarządzania treścią Joomla!.

Rozwiązanie ma ułatwić nadzorowanie różnych serwisów internetowych i zaoszczędzić sporo czasu deweloperom czy administratorom. Pierwotnie Jentla została zaprezentowana podczas konferencji JoomlaDay, która odbyła ...]]></description>
			<content:encoded><![CDATA[<p><strong><span>Firma <a href="http://www.zac-ware.com/">Zac-Ware</a> ogłosiła, że wkrótce zostanie wydana aplikacja Jentla Enterprise Layer. Ten zestaw dodatków i usług umożliwi centralne, jednoczesne zarządzanie wieloma projektami bazującymi na system zarządzania treścią Joomla!.</span></strong></p>
<p><strong><span><img src="http://webhosting.pl/files/groups/editors/software/2008_01/joomla_logo_ok-300x150.gif" alt="" width="300" height="165" /></span></strong></p>
<p>Rozwiązanie ma ułatwić nadzorowanie różnych serwisów internetowych i zaoszczędzić sporo czasu deweloperom czy administratorom. Pierwotnie <strong>Jentla</strong> została zaprezentowana podczas konferencji <strong>JoomlaDay</strong>, która odbyła się niedawno w Melbourne. Pakiet jest skierowany przede wszystkim do średnich firm, które nie potrzebują korporacyjnych rozwiązań, ale mają już kilkanaście stron WWW.</p>
<p>Jentla pozwala kontrolować do tysiąca serwisów internetowych. Umożliwia klonowanie witryn i wykorzystywanie dotychczasowych stron jako gotowych wzorów, na bazie których da się tworzyć kolejne projekty. Aplikacja jest bardzo elastyczna ? administrator może instalować lub usuwać różne wtyczki czy moduły w sytuacji konfliktowej. Jentla automatycznie przechowuje stare wersje serwisów, co umożliwia przywracanie ich na żądanie.</p>
<p style="text-align: center;"><img src="http://webhosting.pl/files/groups/editors/software/2009_02/jentlasmall.jpg" border="0" alt="" /></p>
<h5 style="text-align: center;">Schemat zarządzania projektami w ramach Jentli.</h5>
<p>W ramach Jentli można także znaleźć funkcje pozwalające czytelnikom (klientom) na recenzowanie czy modyfikowanie zawartości. Z pakietem zintegrowano biblioteki wideo oraz moduł reklamowy. Produkt Zac-Ware&#8217;u zawiera także opcję powiadamiania administratora o najważniejszych zmianach i wydarzeniach oraz funkcję automatycznego archiwizowania permanentnie usuniętych komponentów.</p>
<p><strong>Jentla zbliża Joomlę! do modelu ACL ? Access Control Levels ? dostarczając hierarchię globalnej administracji, moderatorów, redaktorów i dostawców treści.</strong></p>
<p><em>Źródło: CMSwire.com</em></p>
]]></content:encoded>
			<wfw:commentRss>http://elearning.media.pl/index.php/2009/11/30/jentla-system-jednoczesnego-zarzadzania-wieloma-projektami-joomli/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nowa runda poprawek w CMS-ach &#8211; Drupal, Joomla!, Moodle i XOOPS</title>
		<link>http://elearning.media.pl/index.php/2009/11/30/nowa-runda-poprawek-w-cms-ach-drupal-joomla-moodle-i-xoops/</link>
		<comments>http://elearning.media.pl/index.php/2009/11/30/nowa-runda-poprawek-w-cms-ach-drupal-joomla-moodle-i-xoops/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 11:11:22 +0000</pubDate>
		<dc:creator>Bogdan Markowicz</dc:creator>
				<category><![CDATA[Bezpieczeństwo]]></category>
		<category><![CDATA[Nowości]]></category>
		<category><![CDATA[Projektowanie www]]></category>
		<category><![CDATA[Technologie internet IT]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[moodle]]></category>
		<category><![CDATA[mySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[projektowanie stron www]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[xoops]]></category>

		<guid isPermaLink="false">http://www.blog.servicetek.media.pl/?p=806</guid>
		<description><![CDATA[Regularnie co pewien czas, gdy w Sieci zgromadzi się odpowiednia liczba podatności w popularnych systemach portalowych, e-sklepach czy mechanizmach zarządzania treścią, informujemy o takich najistotniejszych zagrożeniach. Systemy webowe, w większości rozpowszechniane na zasadach licencji z otwartym kodem, są łatwo edytowalne. Z tego powodu wielu programistów tworzy dla nich liczne dodatki ...]]></description>
			<content:encoded><![CDATA[<p><strong><span>Regularnie co pewien czas, gdy w Sieci zgromadzi się odpowiednia liczba podatności w popularnych systemach portalowych, e-sklepach czy mechanizmach zarządzania treścią, informujemy o takich najistotniejszych zagrożeniach. Systemy webowe, w większości rozpowszechniane na zasadach licencji z otwartym kodem, są łatwo edytowalne. Z tego powodu wielu programistów tworzy dla nich liczne dodatki i moduły. Najczęściej też to w nich właśnie wykrywane jest najwięcej podatności.</span></strong></p>
<p><strong><span><img src="http://webhosting.pl/files/groups/editors/bezpieczenstwo/2007_11/sql_injection/sqli_00-300x150.jpg" alt="" width="300" height="165" /></span></strong></p>
<h2>Co najbardziej zagraża CMS-om?</h2>
<p>W znacznej większości wypadków, błędy wykrywane w kodzie portali są wariantami kilku typowych luk. Zagrożenia również są wciąż te same ? nieautoryzowany dostęp do zasobów zgromadzonych w wewnętrznej części serwisów. W zależności od wersji luk, można podzielić je na te, które wyłącznie umożliwiają odczytanie danych, czyli wydobycie ich z powiązanych z serwisem baz danych oraz na takie, które umożliwiają ich modyfikację.</p>
<p>Innym kryterium podziału, może być zasada działania exploitów. Część z nich stara się wykorzystać ataki Cross Site Scripting w celu przejęcia praw i danych sesji obecnie lub uprzednio zalogowanego użytkownika (bądź administratora), a następnie uzyskać dzięki temu możliwość poruszania się w systemie jako ten użytkownik. Inną grupę stanowią zaś luki, które stosują boczne wejścia (niedopatrzenia w kodzie modułów lub szczeliny w mechanizmach ochronnych portalu/sklepu), dzięki którym intruz może wyłowić dane ? np. odgadując położenie pożądanego pliku o zadanej nazwie i typowej dla danego rozwiązania lokalizacji w drzewie katalogów.</p>
<p>Osobną grupę zagrożeń stanowią wstrzyknięcia. Zasadniczo wyróżnia się tu dwie wersje ? atak na sam kod strony WWW, traktowanej jako zbiór skryptów HTML, JavaScript czy XSD (HTML script injection) oraz ataki wstrzyknięć poleceń SQL (SQL injection), które są wymierzone w bazę danych. W wypadku obu rodzajów wstrzyknięć w ich wyniku najczęściej może dojść do wydobycia danych ? czy to wprost z bazy poprzez zmianę zapytań SQL, czy też poprzez manipulację skryptami, które dadzą pośrednie odpowiedzi na zadawane przez napastnika pytania. Rzadziej dochodzi do ataków zmierzających do zmiany danych (np. dopisania użytkownika, zmiany hasła już istniejącego konta czy podmiany powiązanego z kontem adresu <a title="e-mail" href="http://home.pl/poczta" target="_blank">e-mail</a> w celu późniejszego zmienienia haseł dostępu). Takie wypadki bazują na błędach SQL injection, które pozwalają na dokonanie szerszych zmian w poleceniach, poprzez połączenie typowych zapytań SQL do bazy typu SELECT z poleceniami INSERT lub UPDATE.</p>
<p>Ostatnia popularną metodą jest atak podłączenia pliku z kodem. Taki atak przeważnie łączy w sobie wcześniej wspomniane scenariusze, wykorzystując możliwość umieszczenia kodu skryptów wykonywanych po stronie serwera (PHP, ASP, Pyton, Ruby itp.) z atakiem wstrzyknięcia kodu po stronie przeglądarki. Może być ona wówczas zmuszona do pobrania z innej lokalizacji pliku zawierającego kod, a następnie dzięki błędom walidacji parametrów przesłanych w danych sesji, przekazania ich do kodu po stronie serwera.</p>
<h2>Luki w oprogramowaniu</h2>
<p>Na liście nowych luk i podatności znalazły się popularne moduły dla CMS-ów <strong>Drupal</strong> i <strong>Joomla</strong>. W wypadku systemów <strong>Moodle</strong> i <strong>XOOPS</strong>, luki znajdują się w ich głównym kodzie.</p>
<p>Moduł Drupal Project Module 5.x nie weryfikuje poprawnie rodzaju plików wgrywanych na serwer. Pozwala to przesłać pliki skryptów lub inne typy plików niż jest to oczekiwane. Drugim błędem jest również błąd walidacji ? tym razem mogący prowadzić do ataku Cross Site Scripting i wydobycia danych o sesji zalogowanych użytkowników. Nowa wersja 5.x-1.3 nie zawiera już wspomnianych podatności.</p>
<p>Drugim podatnym modułem Drupala jest ImageField Module 5.x, który podobnie jak poprzednik, pozwala przesłać inny typ pliku graficznego. Może to posłużyć do ?wyexploitowania? kodu PHP służącego do obsługi grafiki.</p>
<p>Kolejnymi wadliwymi modułami są dwie wersje 5.x i 6.x <strong>Drupal</strong> Views Bulk Operations Module, które dzięki luce w kodzie funkcji <em>theme_views_bulk_operations_confirmation()</em> pozwalają na atak Cross Site Scripting. Poprawne wersje to odpowiednio 5.x-1.3 i 6.x-1.4.</p>
<p>Kod systemu Moodle, zawiera serię niemal wszystkich wspomnianych w pierwszej części luk ? znajdziemy tu podatności na ataki Cross Site Scripting, możliwość nieautoryzowanego wydobycia wrażliwych danych i eskalację uprawnień kont działających w ramach portalu. Błędy dotyczą wersji Moodle 1.6.x, Moodle 1.7.x, Moodle 1.8.x oraz Moodle 1.9.x. Odpowiednio poprawione wersje są dostępne i oznaczone: Moodle 1.9.4, 1.8.8, 1.7.7, i 1.6.9.</p>
<p>System <strong>XOOPS </strong>jest podatny na ataki spreparowanymi wartościami parametru <em>mydirname</em>, który może być przekazywany do modułów <em>oninstall.php</em>, <em>onupdate.php</em>, <em>notification.php</em> oraz <em>onuninstall.php</em> w folderze <em>xoops_lib/modules/protector</em>. Wartości nie są odpowiednio weryfikowane i umożliwiają przesłanie kodu PHP, który zostanie uruchomiony poleceniem <em>eval()</em>.</p>
<p>Ostatnią podatną wersją jest moduł Flash Magazine Deluxe dla Joomli!. Jest on podatny na atak SQL injection. Wartość przekazana do pliku <em>index.php</em> poprzez parametr <em>mag_id</em> przy jednocześnie włączonej opcji <em>option</em> = <em>com_ flashmagazinedeluxe</em> umożliwia przesłanie poleceń SQL, które zostaną scalone z kodem SQL poprawnych zapytań samej Joomli!. W wypadku tej podatności w Sieci dostępny jest już publicznie exploit wykorzystujący lukę.</p>
<h2>Jak się zabezpieczyć?</h2>
<p>Dla tych modułów i systemów które dysponują nowszymi poprawionymi wersjami, należy je zainstalować lub zaktualizować. W wypadku pozostałych, gdzie jedyną możliwością jest własnoręczna edycja kodu, warto pamiętać o kilku dość prostych środkach, które pozwalają uniknąć podatności.</p>
<ul>
<li>Należy sprawdzać każdą daną, jaką może wprowadzić użytkownik (bezpośrednio w formularzach) lub w adresie URI, w sygnaturze przeglądarki, polu odniesienia źródła (reffer) itd.</li>
<li>Podczas przekazywania parametrów do zapytań SQL, warto sprawdzać je pod kątem występowania w nich znaków i ciągów, które niemal zawsze wiążą się z próbami modyfikacji zapytania ? INNER JOIN, LEFT JOIN, UNION itd.</li>
<li>Dane plików wrażliwych (logi, pliki tymczasowe powstające podczas przetwarzania danych na serwerze) powinny być nieosiągalne z zewnątrz serwera przez innych użytkowników niż właściciel procesu samego serwera i/lub interpretera. Ponadto pliki takie powinny być składowane poza drzewem katalogów osiągalnych przez serwer WWW.</li>
<li>W wypadku PHP warto pamiętać, aby wyłączać feralną 	możliwość automatycznego pamiętania danych w sesji ? 	<em>register_globals</em>. W znaczącej części exploitów podłączających zewnętrzny kod, funkcja ta odgrywa kluczową rolę, pozwalając na zapis danych do sesji z zewnątrz bez jakiejkolwiek walidacji.</li>
</ul>
<p><em>Źródło: <a href="http://infoprof.pl/">InfoProf.pl</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://elearning.media.pl/index.php/2009/11/30/nowa-runda-poprawek-w-cms-ach-drupal-joomla-moodle-i-xoops/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kurs systemu zarządzania treścią Joomla! Część druga &#8211; podstawy administracji</title>
		<link>http://elearning.media.pl/index.php/2009/11/30/kurs-systemu-zarzadzania-trescia-joomla-czesc-druga-podstawy-administracji/</link>
		<comments>http://elearning.media.pl/index.php/2009/11/30/kurs-systemu-zarzadzania-trescia-joomla-czesc-druga-podstawy-administracji/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 11:05:54 +0000</pubDate>
		<dc:creator>Bogdan Markowicz</dc:creator>
				<category><![CDATA[Kursy php cms java html flash itp]]></category>
		<category><![CDATA[Nowości]]></category>
		<category><![CDATA[Projektowanie www]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[cmsy]]></category>
		<category><![CDATA[instalacja]]></category>
		<category><![CDATA[instrukcja]]></category>
		<category><![CDATA[jak zainstalowac joomle]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[joomla polska]]></category>
		<category><![CDATA[kurs]]></category>
		<category><![CDATA[kurs PHP]]></category>
		<category><![CDATA[po polsku]]></category>
		<category><![CDATA[polska]]></category>
		<category><![CDATA[poradnik]]></category>
		<category><![CDATA[projektowanie stron www]]></category>
		<category><![CDATA[sg]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://www.blog.servicetek.media.pl/?p=803</guid>
		<description><![CDATA[Joomla! to obecnie jeden z najpopularniejszych systemów obsługi treści, umożliwiający twórcom serwisów internetowych łatwe i wydajne zarządzanie informacjami. Po lekturze pierwszej części naszego kursu nawet mniej zaawansowani użytkownicy nie powinni mieć problemów z instalacją Joomli! na serwerze. Po zakończeniu tego procesu, wraz z pojawieniem się po raz pierwszy ekranu logowania, ...]]></description>
			<content:encoded><![CDATA[<p><strong><span><span style="text-decoration: underline;">Joomla! </span>to obecnie jeden z najpopularniejszych systemów obsługi treści, umożliwiający twórcom serwisów internetowych łatwe i wydajne zarządzanie informacjami. Po lekturze pierwszej części naszego kursu nawet mniej zaawansowani użytkownicy nie powinni mieć problemów z instalacją Joomli! na serwerze. Po zakończeniu tego procesu, wraz z pojawieniem się po raz pierwszy ekranu logowania, przyszli administratorzy serwisu zyskają bezpośredni wpływ na jego wygląd i sposób funkcjonowania. Aby rodzące się możliwości odpowiednio wykorzystać, przystosowując Joomlę! do własnych potrzeb, trzeba jednak najpierw zapoznać się z podstawowymi zasadami rządzącymi strukturą informacji, sposobem ich prezentowania i dostępem użytkowników do nich.</span></strong></p>
<p><strong><span><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/opener-300x150.png" alt="" width="300" height="165" /><br />
</span></strong></p>
<h2>Początek ? logowanie na zaplecze</h2>
<h3>Gdzie szukać wejścia?</h3>
<p>Zanim zaczniemy modyfikować jakiekolwiek opcje systemu, musimy najpierw uzyskać dostęp do jego zaplecza administracyjnego. Przed panelem zarządzającym mogą bowiem zasiąść tylko użytkownicy, którzy mają własne konto i odpowiednie uprawnienia ? głównego administratora, administratora lub operatora. Podczas logowania system sprawdza więc, czy użytkownik ma prawo wstępu do panelu i jakim poziomem uprawnień dysponuje ? co znajdzie bezpośrednie odzwierciedlenie w zakresie działań, które będzie mógł wykonać. Tę procedurę nazywa się często uwierzytelnieniem, autentyfikacją, autoryzacją lub rejestracją, uważając te określenia za synonimy. Nie są to jednak terminy równoznaczne. Uwierzytelnienie lub autentyfikacja to tylko sprawdzenie, czy użytkownik jest tym, za kogo się podaje. Gdy się zaś dokonuje autoryzacji, system sprawdza, jaki jest zakres uprawnień danej osoby. Rejestracja oznacza z kolei jedynie procedurę zakładania konta użytkownika ? i w tym znaczeniu będziemy się tym określeniem posługiwali w dalszej części kursu.</p>
<p>Po poprawnie przeprowadzonej instalacji do panelu administracyjnego zaprowadzi nas odnośnik <strong>Zaplecze</strong>, umieszczony na stronie podsumowującej całą procedurę, lub też hiperłącze opisane wymownym tytułem <strong>Administrator</strong>, widniejące na stronie głównej serwisu.</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut1.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut1.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Po kliknięciu odnośnika umieszczonego w prawym górnym rogu<br />
panelu programu instalacyjnego,zostaniemy od razu przeniesieni<br />
do ekranu logowania.</h5>
<p>W trakcie wstępnej konfiguracji serwisu odnośnik Administrator, umieszczony domyślnie w menu witryny, jest zwykle usuwany, tak by nie kusił domorosłych hakerów. Aby dostać się na zaplecze administracyjne po usunięciu tego łącza, należy w pasku przeglądarki wpisać adres postaci <strong>http://www.twojastrona.com/administrator</strong>. W wypadku instalacji przeprowadzonej na komputerze lokalnym URL zaplecza może natomiast wyglądać następująco: <strong>http://localhost/nazwa_katalogu_joomla/administrator</strong>.</p>
<h3>Moduł logowania</h3>
<p>Wejście na zaplecze chronione jest przez moduł administratora ? <strong>Logowanie</strong>. W oknie, którego przykładowy wygląd zaprezentowany został na poniższej ilustracji, powinniśmy wpisać nazwę użytkownika i hasło.</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut2.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut2.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Ekran logowania.</h5>
<p style="text-align: center;">
<p>Jeśli jest to nasza pierwsza wizyta na zapleczu systemu, nazwą użytkownika będzie domyślnie określone słowo ? <strong>admin</strong>. Brzmienie hasła dostępu ustaliliśmy natomiast w trakcie procesu instalacyjnego. Jeśli zdążyliśmy już je zapomnieć, sprawdźmy naszą skrzynkę pocztową. Na podany przez nas podczas instalacji adres e-mailowy program konfigurujący Joomlę! zapobiegliwie wysyła ustalony ciąg znaków.</p>
<p>Jeśli login i hasło zostaną wpisane prawidłowo, uwierzytelnienie przebiegnie pomyślnie i już po chwili znajdziemy się na stronie startowej centrum administracyjnego, zwanej panelem kontrolnym (<strong>Control Panel</strong>). W tym momencie warto przypomnieć, że poprawne korzystanie z centrum zarządzania wymaga włączenia w opcjach przeglądarki internetowej obsługi JavaScriptu i popularnych ciasteczek (cookies). Jeśli jednak sami nie dokonywaliśmy zmian w ustawieniach Firefoksa, Opery czy Internet Explorera, ich określone domyślnie zasady funkcjonowania powinny spełniać te dwa warunki.</p>
<h3>Sesja administratora</h3>
<p>Udane logowanie rozpoczyna sesję administratora. Czas trwania sesji, w którym system oczekuje na kolejne nasze działania, ustawiany jest w konfiguracji witryny i domyślnie wynosi 30 minut. Zostaje on jednak skrócony do 10 minut, gdy w ustawieniach globalnych witryny wybierzemy niższy niż trzeci (domyślny i najwyższy) poziom bezpieczeństwa sesji. W rezultacie, jeśli między kolejnymi czynnościami wykonywanymi przez administratora nastąpi przerwa dłuższa niż domyślny czas trwania sesji, będzie on automatycznie wylogowany, a niezapisane dane mogą zostać bezpowrotnie utracone. Oznaką aktywności administratora są wszelkie czynności polegające na wywołaniu dowolnej strony zaplecza, wykonaniu operacji za pomocą jednego z przycisków w pasku narzędzi lub zmianie stanu elementu (na przykład publikacja treści). Joomla! nie rozpoznaje jednak jako opisanej wyżej aktywności czynności redakcyjnych czy korektorskich w edytorach treści, o ile administrator nie skorzysta z przycisku <strong>Zapisz</strong> lub <strong>Zastosuj</strong>. Jeśli więc będziemy przez dłuższy czas redagować artykuł czy materiał statyczny i nie użyjemy któregoś z wymienionych przycisków, narazimy się na utratę naszej pracy. Aby temu zapobiec, możemy w konfiguracji globalnej systemu ustawić parametr opcji <strong>Pamiętaj stronę po wygaśnięciu sesji</strong> (Remember Expired Admin page) na <strong>Tak</strong>. W takim wypadku, po ponownym zalogowaniu do panelu Joomli!, automatycznie przywrócony zostanie stan sprzed zakończenia sesji.</p>
<h2>Użytkownicy</h2>
<h3>Zespół zarządzający</h3>
<p>W Joomli!, oprócz mającego szczególne uprawnienia głównego administratora, możliwe jest także stworzenie dwóch innych grup specjalnie uprawnionych użytkowników. Odzwierciedlają one hierarchiczny układ kompetencji w ramach każdej organizacji, gdzie jedna osoba ponosi odpowiedzialność za funkcjonowanie projektu, a pozostałe zajmują się kolejno organizacją i wykonywaniem zleconych zadań. Tym trzem rolom odpowiada właśnie w Joomli! podział na trzy grupy zarządzających: <strong>głównego administratora</strong> (Super Administrator), <strong>administratorów</strong> (Administrators) i <strong>operatorów</strong> (Managers). Członkowie wszystkich tych grup mają przy tym prawo wstępu na zaplecze, ale różnią się uprawnieniami dotyczącymi wprowadzania i modyfikacji danych.</p>
<h3>Główny administrator</h3>
<p>Główny administrator, niczym dyrektor przedsiębiorstwa, odpowiada za funkcjonowanie całego zespołu. Jest jedynym, który ma dostęp do wszystkich funkcji zaplecza, i jedynym, który uprawniony jest do przeprowadzania konfiguracji witryny, instalowania szablonów oraz plików językowych. Tylko główny administrator może także stworzyć dodatkowe konta administratorów lub operatorów. Konto głównego administratora zakładane jest ? jak mieliśmy już okazję zauważyć ? podczas instalacji Joomli!.</p>
<h3>Administratorzy</h3>
<p>Administratorzy, podobnie jak na przykład zastępcy dyrektora, mają bardzo szerokie uprawnienia, nieobejmujące jednak spraw pozostających w wyłącznej kompetencji ich zwierzchnika. Nie mogą oni więc dokonywać zmian w konfiguracji czy też instalować szablonów lub pakietów językowych. Dla tej grupy wyłączona jest ponadto możliwość rozsyłania korespondencji seryjnej z serwisu do użytkowników.</p>
<h3>Operatorzy</h3>
<p>Uprawnienia operatorów porównać można do kompetencji asystentów dyrektora. W grupie osób zarządzających są oni najniżsi rangą, mają bowiem jedynie możliwość zarządzania artykułami i pozycjami menu witryny. Operatorzy nie mogą dodawać użytkowników ani modyfikować ich kont, nie mogą instalować składników systemu, a także nie mają w panelu administracyjnym dostępu do komponentów, modułów i botów.</p>
<h3>Utworzenie nowego konta</h3>
<p>Jak już wspomnieliśmy, tylko główny administrator może, korzystając z opcji zaplecza administracyjnego, założyć konta innym administratorom i operatorom. Jeśli przed instalacją systemu zdążyliśmy już zaplanować hierarchię stanowisk i podział pracy w ramach naszego serwisu, to od razu po pierwszym zalogowaniu powinniśmy utworzyć odpowiednie konta dostępu dla uprawnionych użytkowników. Aby to zrobić, w panelu administracyjnym kliknijmy ikonę skrótu <strong>Użytkownicy</strong> (Users) lub wybierzmy w menu pozycję <strong>Witryna | Użytkownicy | Konta użytkowników</strong> (Site | Users | Users). W efekcie otworzy się okno menedżera użytkowników zawierające właśnie listę zarejestrowanych użytkowników witryny. Na razie w wykazie jest oczywiście wymieniona tylko jedna pozycja ? konto głównego administratora. Kliknijmy zatem przycisk <strong>Utwórz</strong> (New) na pasku narzędzi. W panelu edytora konta użytkownika wpiszmy nazwę, login, adres <a title="e-mail" href="http://home.pl/poczta" target="_blank">e-mail</a> oraz hasło dla naszego nowego współpracownika. Pamiętajmy o tym, że ze względów bezpieczeństwa utworzone hasło powinno mieć długość co najmniej ośmiu znaków i składać się z liter oraz cyfr. W polu <strong>Grupa</strong> (Group) przypiszemy użytkownika do jednej z dwóch grup uprawnionych, wybierając z listy <strong>Administrator </strong>lub<strong> Manager</strong>. Możemy także wybrać opcję powiadamiania użytkownika za pomocą wiadomości e-mailowych (<strong>Powiadamiaj e-mailem</strong>) oraz zdefiniować domyślny typ edytora, który będzie przez niego używany ? <strong>Edytor zwykły </strong>lub <strong>Edytor TinyMCE </strong>(zgodny z regułami WYSIWYG). Wszystkie wprowadzone zmiany zatwierdzamy, klikając przycisk <strong>Zapisz </strong>(Save), umieszczony na pasku narzędzi.</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut3.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut3.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Tworzymy konto użytkownika.</h5>
<h3>Zarząd a redakcja witryny</h3>
<p>Narzędzia administratorów pozwalają wpływać na wszystkie aspekty funkcjonowania witryny. Przyznanie tak szerokich uprawnień współtwórcom treści umieszczanej na stronach serwisu, a więc autorom, redaktorom i wydawcom, nie byłoby bezpieczne. W Joomli! nie trzeba jednak rozszerzać grona osób z uprawnieniami administracyjnymi. Wszystkie czynności związane z dodawaniem treści, redagowaniem i publikacją można wykonywać za pomocą interfejsu redakcyjnego, dostępnego ze strony głównej, bez konieczności dostępu do zaplecza.</p>
<h3>Autorzy, redaktorzy, wydawcy&#8230;</h3>
<p>Osoby redagujące treść serwisu, podobnie jak kadra zarządzająca, podzielone są na trzy grupy różniące się zakresem przyznanych uprawnień. <strong>Autorzy</strong> (Authors) mogą edytować swoje materiały oraz przesyłać je do wyznaczonych sekcji i kategorii artykułów. <strong>Redaktorzy</strong> (Editors) mają prawo dodawać i redagować artykuły w odpowiednich sekcjach i kategoriach oraz dodatkowo edytować artykuły stworzone przez innych autorów. <strong>Wydawcy</strong> (Publishers) są grupą o najszerszych kompetencjach. Nie tylko mogą dodawać artykuły do każdej sekcji witryny, edytować materiały innych autorów, ale dodatkowo decydują oni o publikacji treści. Jak widać, każda z trzech wymienionych grup użytkowników ma zaledwie o jedno uprawnienie więcej. To jedno dodatkowe prawo powoduje jednak w każdym wypadku znaczne poszerzenie możliwości wpływania na treść witryny. Zatem pomimo tego, że żadna z grup autorów nie ma dostępu do zaplecza administracyjnego, ich uprawnieniami nie powinniśmy szafować zbyt lekkomyślnie. Pamiętajmy też, że konta użytkowników mających kompetencje autorów możemy dodać sami lub wymagane uprawnienia nadać tym osobom, które już zarejestrowały się w witrynie.</p>
<h3>Użytkownicy Joomli!</h3>
<p>To, kim będą użytkownicy naszej, opartej na Joomli!, witryny, zależy głównie od jej przeznaczenia. Mogą to być internauci z całego świata albo po prostu pracownicy firmy komunikujący się w intranecie czy ekstranecie. Tak czy inaczej nie wszystkim osobom odwiedzającym nasz serwis musimy przyznać równe prawa dostępu do treści lub jej modyfikowania. Wspomnieliśmy już o grupie administratorów, którzy w odróżnieniu od ?zwykłych? użytkowników mają dostęp do panelu zarządzającego witryną. Z grupy tych ostatnich wyodrębniliśmy z kolei autorów, odpowiedzialnych za tworzenie i publikację treści. Najszerszą grupą, której prawa można kontrolować, są wreszcie <strong>wszyscy zarejestrowani użytkownicy</strong>. Zakres ich uprawnień obejmuje domyślnie <strong>prawa zwykłe, powszechne</strong>. Należą do nich: prawo dostępu do strony głównej, przeglądania zasobów, przesyłania informacji i materiałów, wglądu do swojego konta i wprowadzania zmian w profilu oraz prawo pobierania udostępnionych dokumentów. Jak więc można zauważyć, struktura grup użytkowników i administratorów w Joomli! ma charakter ściśle hierarchiczny ? obrazowo przedstawia to poniższa ilustracja:</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut4.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut4.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Struktura grup użytkowników Joomli!.</h5>
<h2>Szata graficzna witryny</h2>
<p>Niepowtarzalna i przejrzysta szata graficzna to jeden z podstawowych warunków, których spełnienie pozwoli nam przyciągnąć do serwisu rzesze użytkowników. W Joomli! o wyglądzie strony i strukturze treści decydują szablony ? wzorce formatowania. Dzięki nim nie będziemy musieli projektować osobno każdej strony czy jej elementu.</p>
<h3>Układ treści ? struktura portalu</h3>
<p>Typowym wzorcem rozmieszczenia treści na stronach Joomli! jest <strong>struktura portalu</strong>, najczęściej w układzie trójkolumnowym, zaprezentowanym na poniższej ilustracji:</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut5.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut5.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Domyślny układ treści na stronie Joomli!.</h5>
<p>W podstawowym pliku szablonu zdefiniowane są więc następujące obszary, które następnie wypełniane będą elementami treści: <strong>lewa kolumna</strong> zawierająca zwykle menu nawigacyjne i inne moduły, <strong>centralna kolumna </strong>z treścią główną oraz <strong>prawa kolumna</strong>, w której umieszczane są moduły. Oprócz tego funkcjonują, nie mniej ważne, <strong>nagłówek</strong> i <strong>stopka</strong>. W nagłówku strony umieszczamy zazwyczaj logo, nazwę, menu główne, menu narzędziowe i wyszukiwarkę, stopka zawiera natomiast dane o wydawcy, odnośniki do not prawnych lub dodatkowe menu.</p>
<h3>Jak działa szablon?</h3>
<p>W pliku szablonu, w miejscach przeznaczonych na umieszczenie treści, znajdują się wywołujące ją instrukcje. Gdy użytkownik kliknie jakikolwiek odnośnik na stronie, Joomla! sprawdza, jakie treści są z nim skojarzone, by następnie wczytać je do wyznaczonych obszarów. Decyzję o tym, które moduły zostaną umieszczone w przeznaczonych na nie miejscach i z którymi pozycjami treści głównych zostaną skojarzone, podejmuje projektant witryny. Jeśli jednak w ustalonych obszarach nie znajdą się finalnie żadne treści, zostaną one ukryte. W efekcie, choć strona teoretycznie będzie podzielona na trzy kolumny, w oknie przeglądarki może się pojawić tylko jedna lub dwie z nich.</p>
<h3>Modyfikujemy domyślny szablon</h3>
<p>Zanim zaprojektujemy własny szablon lub zlecimy jego wykonanie profesjonalnej firmie, możemy zmodyfikować jeden z dostępnych, standardowych wzorców. Najprostszą drogą modyfikacji szablonu jest oczywiście wymiana elementów graficznych. Do każdego wydania Joomli! dołączono kilka wzorów, między innymi <strong>rhuk_solarflare_ii</strong>. Aby osiągnąć atrakcyjny wizualnie efekt i wyróżnić się spośród innych witryn Joomli! używających tego samego układu treści, wystarczy zmodyfikować zaledwie dwa obrazki: <strong>header_short.jpg</strong>, wyświetlany w nagłówku strony, oraz <strong>menu_bg.png</strong>, wykorzystywany jako tło w bocznym menu. Będziemy do tego potrzebowali programu do obróbki grafiki, takiego jak <a href="http://www.adobe.com/pl/products/photoshopelwin/">Adobe Photoshop Elements</a> czy darmowy <a href="http://www.gimp.org/">GIMP</a> oraz odpowiedniego materiału graficznego, który wykorzystamy jako podstawę dla naszych działań. Przeglądając zasoby Sieci, znajdziemy niewątpliwie niejedno <a href="http://webhosting.pl/kategorie/internet/2008_07/darmowe_zdjecia_z_si%20eci_jak_je_znalezc_i_jak_z_nich_korzystac">udostępniane nieodpłatnie zdjęcie</a>, które po obróbce będzie się nadawało na wizytówkę witryny.</p>
<p>Zacznijmy więc od najprostszych czynności. Modyfikując obrazek <strong>menu_bg.png</strong>, dokonamy jedynie zmiany barw, dostosowując je do kolorystyki, którą planujemy zastosować w witrynie. W programie Photoshop wczytamy więc najpierw kopię oryginalnego pliku, a następnie wybierzemy z menu pozycję <strong>Image | Adjust | Color Balance</strong>. W dalszej kolejności, korzystając z suwaków, dobierzemy odpowiednie barwy:</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut6.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut6.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Zmiana kolorów tła w Adobe Photoshopie.</h5>
<p>Otrzymany w wyniku tego prostego zabiegu obraz powinniśmy zapisać, wybrawszy z menu <strong>File</strong> opcję <strong>Save for Web</strong> wraz z odpowiednimi parametrami pliku wyjściowego ? formatem PNG, opcją <strong>Adaptive</strong> i paletą 256 kolorów. Przykładowe ustawienia pokazuje poniższa ilustracja:</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut7.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut7.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Zapisujemy plik z obrazem tła.</h5>
<p>Trochę więcej wysiłku wymagać będzie od nas zmiana wizytówki w nagłówku strony. Jeśli w naszych zbiorach nie mamy ciekawego zdjęcia czy grafiki, będziemy musieli poszukać odpowiedniego materiału w internetowych portalach fotografii. Temat ten szerzej analizujemy w <a href="http://webhosting.pl/kategorie/internet/2008_07/darmowe_zdjecia_z_sieci_jak_je_znalezc_i_jak_z_nich_korzystac">artykule poświęconym darmowym zdjęciom</a> dla projektantów stron. Gdy już przygotujemy potrzebny obraz, powinniśmy poddać go obróbce w naszym programie graficznym. Przede wszystkim konieczne będzie przycięcie go do rozmiarów nagłówka. Wybierzmy więc z menu <strong>Image </strong>pozycję <strong>Crop </strong>i podajmy wartości szerokości (635 pikseli), wysokości (150 pikseli) oraz rozdzielczości (72 piksele na cal). Następnie, podobnie jak w poprzednim wypadku, kliknijmy <strong>File | Save for Web </strong>i wskażmy format JPG oraz pożądaną jakość kompresji (najlepiej o wartości powyżej 60). Zachowując obrazek, pamiętajmy o nadaniu mu nazwy <strong>header_short.jpg</strong>. Po dokonaniu wszystkich zmian gotowe obrazy powinniśmy przesłać do katalogu <strong>templates/twoj_szablon/images</strong>, korzystając ze standardowego klienta FTP. I na tym koniec ? po wpisaniu w przeglądarce adresu naszej witryny będziemy mogli podziwiać efekt końcowy.</p>
<h3>Zmieniamy szablon strony</h3>
<p>W Internecie znaleźć można dużą liczbę bezpłatnych szablonów ? wystarczy tylko poszukać. Dokonując wyboru, pamiętajmy jednak, że dobry szablon powinien zapewnić administratorom i projektantom witryn przede wszystkim możliwość zmiany parametrów wyświetlania prawej i lewej kolumny, a także swobodną modyfikację elementów identyfikacyjnych, takich jak logo czy treść stopki. Byłoby idealnym rozwiązaniem, gdyby wzór, na który się zdecydujemy, umożliwiał ponadto wybór jednego z wariantów kolorystycznych. Wiele projektów, oferowanych nieodpłatnie w Sieci, spełnia te kryteria. W poniższej tabeli umieściliśmy zaledwie kilka adresów stron, które mogą nam pomóc w wyborze odpowiedniego szablonu dla naszej witryny.</p>
<table border="1">
<tbody>
<tr>
<th>Szablony do wyboru</th>
</tr>
<tr>
<td>W poszukiwaniach idealnego szablonu warto odwiedzić kilka sprawdzonych adresów, pod którymi znajdziemy duże zbiory wzorów, pogrupowanych tematycznie i prezentowanych w większości w formie miniatur:</p>
<ul>
<li><a href="http://www.templatki.com/">Szablony dla Joomla!</a> ? polski serwis, oferujący ponad 500 atrakcyjnych szablonów,</li>
<li><a href="http://www.osskins.com/main/">Osskins</a> ? duży zbiór szablonów, także darmowych ? nie tylko dla Joomli!,</li>
<li><a href="http://www.joomlaos.de/">Joomlaos.de</a>: ? tutaj znajdziemy około 600 szablonów dla Joomli! 1.0, wyświetlanych w formie galerii,</li>
<li><a href="http://designforjoomla.com/">Design for Joomla!</a> ? kilkadziesiąt wzorów łatwych do przeglądania,</li>
<li><a href="http://www.ty2u.com/">Free Joomla Templates</a> ? niewielki, ale ciekawy zestaw,</li>
<li><a href="http://showcase.mambosolutions.com/free/">Mambosolutions.com</a> ? około 30 szablonów łatwych do przeglądania w pełnym podglądzie,</li>
<li><a href="http://www.joomla-templates.com/index.php?option=com_content&amp;task=category&amp;sectionid=4&amp;id=13&amp;Itemid=27">Joomla-templates.com</a> ? kilkanaście wzorów prezentowanych w pełnym podglądzie,</li>
<li><a href="http://www.joomla.pl/index.php/index.php/component/option,com_docman/task,cat_view/gid,51/Itemid,58/">Polskie Centrum Joomla</a> ? kilkadziesiąt szablonów.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>Przed przystąpieniem do pobierania pakietu instalacyjnego szablonu najlepiej stworzyć na dysku lokalnym, w swoim katalogu plików Joomli!, folder <strong>templates</strong>, gdzie będziemy zapisywali wybrane wzory. Ułatwi nam to ich późniejszą instalację.</p>
<p>Są dwie główne metody umieszczenia szablonu w witrynie ? przesłanie plików szablonu na serwer za pomocą klienta FTP oraz automatyczna instalacja z poziomu panelu administracyjnego systemu. Pierwsza metoda jest paradoksalnie nieco prostsza. Wystarczy bowiem rozpakować pakiet źródłowy szablonu na swoim komputerze i przesłać rozpakowany zestaw plików do katalogu <strong>twoja_joomla/templates/nazwa_szablonu</strong>, znajdującego się na serwerze. Przy użyciu tej metody możemy więc w krótkim czasie wzbogacić naszą dystrybucję Joomli! o kilka szablonów. Metoda druga nie jest dużo trudniejsza, ale może sprawiać kłopoty, gdy serwer pracuje w tak zwanym bezpiecznym trybie (<strong>SafeMode=On</strong>) albo gdy nie jest obsługiwana biblioteka zlib ? o obu tych kwestiach pisaliśmy w <a href="http://webhosting.pl/Kurs.systemu.zarzadzania.trescia.Joomla..Czesc.pierwsza%3A.instalacja">pierwszym odcinku kursu</a>. Jeśli jednak konfiguracja naszego serwera spełnia wymienione kryteria, możemy skorzystać z instalatora Joomli!. W panelu administracyjnym wybierzmy z menu pozycję <strong>Instalatory | Szaty ? witryna </strong>(Installers | Templates ? Site) i sprawdźmy, czy możliwe jest zapisywanie danych w katalogu <strong>templates</strong>. W oknie instalatora przejdźmy następnie do pozycji <strong>Instaluj z pakietu | Pakiet instalacyjny</strong> (Upload Package File | Package File). Klikając przycisk <strong>Przeglądaj</strong>, wybierzemy spośród plików znajdujących się na naszym dysku lokalnym odpowiedni pakiet, by następnie zatwierdzić zmiany i kliknąć <strong>Wczytaj plik i zainstaluj </strong>(Upload File &amp; Install). Jeśli wszystko pójdzie dobrze, otrzymamy komunikat, że instalacja nowego szablonu zakończyła się pomyślnie. Pamiętajmy o tym, że dysponujemy jeszcze opcją <strong>Instaluj z katalogu </strong><strong>(Install from directory)</strong>. W wypadku szablonów nie jest ona jednak zbyt przydatna. Trzeba bowiem wysłać wcześniej pliki na serwer, a skoro tak, to można je od razu umieścić w katalogu <strong>templates</strong>.</p>
<p>Po instalacji szablon należy opublikować. W tym celu powinniśmy wybrać odnośnik <strong>Przejdź do wykazu szablonów</strong> (Back to Templates) i przy szablonie, który chcemy opublikować, zaznaczyć pole wyboru:</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut8.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut8.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Publikujemy wybrany szablon.</h5>
<p>Następnie klikamy ikonę <strong>Domyślny</strong> (Default) i już możemy się cieszyć nowym wyglądem naszej strony.</p>
<h2>Struktura treści w Joomli!</h2>
<h3>Hierarchia danych</h3>
<p>Skoro wiemy już, jak możemy dostosować do naszych potrzeb sposób wyświetlania treści w serwisie, czas zapoznać się z jej strukturą. W Joomli! jest ona zwykle trójpoziomowa. Podstawowym ?składnikiem? treści są <strong>pozycje</strong>, a więc pojedyncze elementy, takie jak: tekst artykułu, dokument w archiwum plików, odnośnik do strony WWW, adres e-mailowy czy obraz w galerii. Pozycje pogrupowane są w <strong>kategorie</strong> ? kolekcje różnicowane ze względu na pewne kryterium, na przykład temat, rodzaj lub typ. Na ostatnim poziomie tej piramidy organizacji treści znajdują się sekcje i komponenty. Sekcje są kolekcjami artykułów a pozostałe materiały gromadzą właśnie komponenty ? mamy tu więc do czynienia ze swoistymi kontenerami, w których zawierają się kategorie. W tej hierarchicznej strukturze danych każda pozycja należy do pewnej kategorii, a każda kategoria do sekcji lub komponentu. Kategoria nie może istnieć bez sekcji lub poza komponentem, natomiast w sekcji artykułów, a często także w komponencie, musi być przynajmniej jedna kategoria. Jedynie w wypadku materiałów statycznych oraz komponentów udostępniających określone procedury (np. zakupów) nie obowiązuje podział na sekcje i kategorie.</p>
<p>W trakcie projektowania witryny pamiętajmy jednak, że sekcje i kategorie spełniają w Joomli! jedynie <strong>pomocniczą</strong> rolę. Architektami treści są bowiem przede wszystkim pozycje menu. Artykuły, kategorie i sekcje to budulec, tworzywo witryny. Szerzej tematem generowania struktur nawigacyjnych zajmiemy się w kolejnych odcinkach kursu.</p>
<p>Podział na sekcje i kategorie pozwala utrzymać ład na zapleczu, pomaga administratorom i operatorom umieszczać treści w odpowiednim miejscu i orientować się, gdzie i co się znajduje. Treści strony głównej mogą bowiem pochodzić z jednej, z wielu i ze wszystkich kategorii należących do jednej sekcji czy też z wyznaczonych kategorii w jednej lub wielu sekcjach. O strukturze treści warto myśleć jak o zbiorach bibliotecznych. Przemyślany porządek, <strong>podział na sekcje i kategorie wedle rodzaju treści</strong>, skorygowany po rozważeniu potrzeb i zainteresowań adresatów witryny i uwzględnieniu ograniczeń wynikających ze źródeł pochodzenia materiałów, pozwoli na pewno efektywnie zarządzać gromadzeniem i udostępnianiem zasobów. Pamiętajmy też o tym, że ustalony na początku podział na sekcje i kategorie nie jest niezmienny. W każdej chwili można go swobodnie skorygować, przenieść kategorie ze wszystkimi pozycjami do innych kategorii i sekcji czy też skopiować wszystkie kategorie z jednej sekcji do innej.</p>
<h3>Tworzenie sekcji w Joomli!</h3>
<p>Po tych rozważaniach teoretycznych, czas na odrobinę praktyki. Aby utworzyć naszą pierwszą sekcję, zalogujmy się na zaplecze i w menu administratora wybierzmy pozycję <strong>Teksty | Sekcje artykułów </strong>(Content | Section Manager). Znajdziemy się na stronie menedżera sekcji. Kliknijmy przycisk <strong>Nowy</strong> (New) w pasku narzędzi w prawym górnym rogu ekranu. Zostaniemy wtedy przeniesieni do edytora sekcji:</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut9.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut9.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Edytor sekcji Joomli!.</h5>
<p>Teraz możemy wpisać w odpowiednie pola tytuł i nazwę sekcji. Ten pierwszy powinien być krótki, ponieważ zostanie użyty w menu. Nazwa natomiast może być dłuższa, będzie ona bowiem wyświetlana w tytule strony zawierającej sekcję artykułów. Pamiętajmy jednak, żeby w nazwie użyć słowa z tytułu. Jest to ważne z dwóch względów. Przede wszystkim z uwagi na percepcję użytkowników ? gdy zobaczą oni nagłówek strony, nie powinni się zastanawiać, czy trafili we właściwe miejsce. Po drugie, takie podejście odgrywa niebagatelną rolę w pozycjonowaniu strony w indeksach wyszukiwarek internetowych. W dalszej kolejności, z listy <strong>Grafika </strong>(Image)<strong> </strong>możemy wybrać obrazek ilustrujący opis sekcji, wyświetlany na stronie głównej, a w polu <strong>Opis</strong> (Description) zamieścić dowolny tekst promujący treści sekcji. Jeszcze tylko kliknijmy <strong>Zapisz </strong>(Save) i gotowe ? stworzyliśmy nową sekcję Joomli!. Na zakończenie możemy dodatkowo wyznaczyć katalog Biblioteki mediów, w którym będą gromadzone materiały ilustracyjne. Jedno kliknięcie zaoszczędzi nam oczekiwania, aż Joomla! odczyta zawartość wszystkich katalogów w Bibliotece mediów i umieści dane w dokumencie przesyłanym do naszej przeglądarki.</p>
<h3>Budujemy kategorie</h3>
<p>Gdy tylko utworzymy wszystkie konieczne sekcje, zabierzmy się do generowania kategorii, które zostaną w nich umieszczone. Będzie to tym łatwiejsze, że kategorie artykułów tworzymy podobnie jak sekcje. Jedyną zauważalną różnicą będzie konieczność przypisania kategorii do sekcji.</p>
<p>W panelu administratora wybierzmy więc z menu pozycję <strong>Teksty | Kategorie artykułów</strong> (Content | Category Manager) i kliknijmy przycisk <strong>Nowy</strong> (New) w pasku narzędzi, w prawym górnym rogu ekranu. W efekcie zostaniemy przeniesieni do edytora kategorii:</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut10.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut10.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Edytor kategorii Joomli!.</h5>
<p>Tutaj wpiszmy krótki tytuł i dłuższą, pełniejszą nazwę dla nowej kategorii. Tytuł, podobnie jak w wypadku sekcji, wykorzystywany jest w menu, nazwa ? w nagłówku strony. Możemy także wypełnić pole <strong>Opis </strong>(Description)<strong> </strong>lub pozostawić je puste. Na liście <strong>Uprawnienia</strong> (Access Level) powinniśmy zaznaczyć, która z grup użytkowników będzie miała dostęp do treści w tej kategorii. Mamy do wyboru trzy opcje: <strong>public</strong>, <strong>registered</strong> i <strong>special</strong>. <strong>Public </strong>oznacza, że dostęp do kategorii i umieszczonych w niej artykułów będą mieli wszyscy użytkownicy. Opcja <strong>registered</strong> zawęża natomiast listę uprawnionych do użytkowników zalogowanych. Najbardziej restrykcyjne zasady dostępu określa pozycja <strong>special</strong>. W takim wypadku kategoria i umieszczone w niej artykuły będą dostępne tylko dla zalogowanych użytkowników z uprawnieniami specjalnymi ? autorów, redaktorów, wydawców, operatorów i administratorów. Wypełniając resztę pól edytora, opcję <strong>Tak</strong> (Yes) właściwości <strong>Publikacja</strong> (Published) pozostawmy bez zmian. Opcja <strong>Nie</strong> (No) wstrzymuje udostępnienie na stronie głównej kategorii i zawartych w niej artykułów. Ustalmy też nazwę katalogu, z którego będą pobierane obrazki i inne dokumenty ilustracyjne (np. załączniki), i na końcu kliknijmy przycisk <strong>Zapisz</strong> (Save) w pasku narzędzi. Pamiętajmy, aby już na starcie założyć wszystkie potrzebne nam kategorie. Okaże się to bowiem niezbędne na etapie tworzenia pozycji menu.</p>
<h3>Łącza w menu</h3>
<p>Edytor kategorii wyposażony jest także w narzędzia służące do umieszczania kategorii w menu. Nie trzeba więc nawet go opuszczać ? wystarczy po wpisaniu nazwy i tytułu kliknąć przycisk <strong>Zastosuj</strong> (Apply) w pasku narzędzi, by można było określić szczegóły pozycji menu:</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut11.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc2/zrzut11.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Tworzenie łącza w menu z poziomu edytora kategorii.</h5>
<p>Z tej metody, dostępnej także podczas tworzenia sekcji, warto korzystać, gdy już nabierzemy pewnego doświadczenia i nakreślimy przemyślaną koncepcję struktury treści w witrynie.</p>
<h3>Komponenty</h3>
<p>Klasyczne artykuły dobrze sprawdzają się w prezentowaniu treści dla nich przeznaczonych. Jeśli jednak chcemy zapewnić użytkownikom w witrynie możliwość ? na przykład ? dyskusji czy dokonywania zakupów, artykuły do niczego nam się nie przydadzą. Złożone zadania wymagają bowiem bardziej precyzyjnych i wygodnych w użyciu narzędzi Tę rolę spełniają w Joomli! komponenty. To właśnie one czynią Joomlę! niezwykle elastycznym programem, który dostosować można do przeróżnych potrzeb ? wspomagania organizacji pracy i obiegu dokumentów w firmie czy urzędzie, reklamy, obsługi sklepów internetowych, serwisów ogłoszeniowych lub zarządzania edukacją na odległość. Co tylko nam się zamarzy!</p>
<h3>Komponenty zainstalowane w Joomli!</h3>
<p>Komponentów przeznaczonych dla Joomli! jest? bardzo dużo. Prawdę powiedziawszy, trudno je nawet policzyć. Kilkanaście z nich to elementy niezbędne do działania Joomli!, obsługujące typowe zadania: wyświetlania stron, generowania menu, publikacji artykułów, rejestracji i logowania użytkowników czy przeszukiwania witryny. Kilka kolejnych znajdziemy na zapleczu w menu <strong>Komponenty</strong> (Components). Wzbogacają one Joomlę! o często wykorzystywane, choć niekonieczne niezbędne do działania programu usługi. W poniższej tabeli zaprezentowano kilka przykładów.</p>
<table border="1">
<tbody>
<tr>
<th>Przykładowe komponenty Joomli!</th>
</tr>
<tr>
<td>Wśród najczęściej używanych, preinstalowanych komponentów Joomli! znaleźć możemy:</p>
<ul>
<li><strong>Banery </strong>(Banners) ? umożliwia włączenie naszej witryny w sieć reklamy internetowej,</li>
<li><strong>Kontakty</strong> (Contacts) ? zajmuje się obsługą książki adresowej i poczty elektronicznej,</li>
<li><strong>Katalog WWW</strong> (Weblinks) ? implementuje obsługę katalogu adresów internetowych,</li>
<li><strong>Sondy </strong>(Polls) ? umożliwia przeprowadzanie sondaży i późniejsze prezentowanie wyników,</li>
<li><strong>Spinacz RSS</strong> (NewsFeed) ? pozwala zamieszczać informacje pochodzące z kanałów informacyjnych RSS,</li>
<li><strong>Syndykator</strong> (Syndicate) ? umożliwia udostępnianie własnego kanału informacyjnego.</li>
<li><strong>Pocztylion</strong> (Mass Mail) ? automatyzuje proces masowego wysyłania poczty do użytkowników serwisu.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>Projektując treści witryny, trzeba oczywiście rozważyć, które z domyślnie instalowanych komponentów wykorzystamy. Jeśli nie znajdziemy wśród nich takiego, który spełniałby nasze potrzeby, możemy skorzystać z serwisów oferujących odpowiednie dodatki. Warto najpierw przejrzeć polskie składy pakietów dla Joomli!: <a href="http://www.joomla.pl/">www.joomla.pl</a> oraz <a href="http://www.joomlapl.com/">www.joomlapl.com</a>, a później składnice obcojęzyczne, na przykład <a href="http://joomlaos.de/">bogaty zbiór niemiecki</a> i oczywiście witryny centrum projektu: <a href="http://extensions.joomla.org/">centralny katalog rozszerzeń</a> oraz <a href="http://joomlacode.org/">składnicę projektów</a>.</p>
<h3>Tworzenie kategorii w komponentach</h3>
<p>Grupowanie komponentów w kategorie nie różni się prawie od procesu tworzenia kategorii artykułów. Nie przypisujemy jednak kategorii do sekcji i nie ustalamy katalogu, z którego można pobierać ilustracje oraz inne załączniki. Trzy z podstawowych komponentów zainstalowanych w Joomli! wymagają utworzenia kategorii ? są to <strong>Kontakty</strong> (Contacts), <strong>Katalog WWW</strong> (Weblinks) oraz <strong>Spinacz RSS</strong> (NewsFeed). Jeśli więc zamierzamy z nich korzystać, w menu administratora wybierzmy na przykład pozycję <strong>Komponenty | Spinacz RSS | Kategorie </strong>(Components | RSS Feed | Categories). Znajdziemy się na stronie menedżera kategorii. Kliknijmy przycisk <strong>Nowy</strong> (New) na pasku narzędzi, by przejść do edytora kategorii. Tutaj powinniśmy ustalić przede wszystkim nazwę i tytuł kategorii, wybrać ilustrację do opisu oraz ustalić prawa dostępu. W dalszej kolejności zdecydujemy, czy opublikować zakładaną kategorię, i w końcu, klikając przycisk <strong>Zapisz</strong> (Save), umieszczony na pasku narzędzi, zatwierdzimy wprowadzone zmiany. Zwróćmy uwagę na to, że w wypadku komponentów zawartych w oficjalnym wydaniu Joomli! możliwe jest również utworzenie, podczas zakładania kategorii prowadzącego do niej łącza w menu. Dla komponentów instalowanych dodatkowo taka możliwość udostępniana jest raczej rzadko.</p>
<p>Po utworzeniu i zachowaniu nowej kategorii będziemy zawsze powracali do wykazu kategorii. To miejsce, w którym możemy opublikować zdefiniowane właśnie elementy, zmienić ich kolejność na liście lub usunąć ze struktury treści witryny.</p>
<h2>Podsumowanie</h2>
<p>Aby wydajnie zarządzać witryną opartą na CMS-ie Joomla!, konieczne jest wcześniejsze zapoznanie się z podstawami jej funkcjonowania. Struktura użytkowników i treści, sposób wyboru dostępnych komponentów ? to zagadnienia, które administratorowi serwisu nie mogą być obce. Po ich opanowaniu przyjdzie czas na dostosowanie do naszych potrzeb szczegółowych opcji konfiguracyjnych Joomli! ? tą kwestią zajmiemy się w kolejnym odcinku kursu. Gdy zaś zakończymy już prace przygotowawcze, będziemy mogli wreszcie przystąpić do meritum ? tworzenia zawartości własnej witryny.</p>
<p><em>źródło: webhosting.pl</em></p>
<p>ps: wkrótce kolejne części poradnika joomli</p>
<p><a title="czesc pierwsza joomla instalacja" href="http://www.blog.servicetek.media.pl/index.php/2009/11/27/kurs-systemu-zarzadzania-trescia-joomla-czesc-pierwsza-instalacja/"><span style="text-decoration: underline;"><em><strong>wróć do pierwszej lekcji</strong></em></span></a> cz1 instalacja Joomla</p>
<p><em><strong>Jeśli masz problemy z instalacją Joomli lub jest to po za twoim zasięgiem. Możemy wykonać wszelkie instalacje za ciebie</strong></em></p>
<p><em><strong>wejdź na nasza stronę <a title="servicetek group projektowanie stron www Joomla Polska" href="http://www.servicetek.media.pl " target="_blank">www.servicetek.media.pl </a>i skontaktuj się z nami.</strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://elearning.media.pl/index.php/2009/11/30/kurs-systemu-zarzadzania-trescia-joomla-czesc-druga-podstawy-administracji/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kurs PHP cz. 14 Sesje</title>
		<link>http://elearning.media.pl/index.php/2009/11/30/kurs-php-cz-14-sesje/</link>
		<comments>http://elearning.media.pl/index.php/2009/11/30/kurs-php-cz-14-sesje/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 07:15:43 +0000</pubDate>
		<dc:creator>Bogdan Markowicz</dc:creator>
				<category><![CDATA[Kursy php cms java html flash itp]]></category>
		<category><![CDATA[darmowe kursy]]></category>
		<category><![CDATA[kurs PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projektowanie www]]></category>

		<guid isPermaLink="false">http://www.blog.servicetek.media.pl/?p=379</guid>
		<description><![CDATA[14. Sesje
14.1. Wstęp do sesji
Dzięki sesjom możemy przechowywać pewne dane (takie jak identyfikator użytkownika czy jego login) podczas następujących po sobie wywołań strony. Działa to podobnie jak ciasteczka bez ustawionego czasu wygaśnięcia (expire) ? przy czym dostęp do danych znika przy wylogowaniu się (dzięki specjalnemu przyciskowi na stronie) lub zamknięciu ...]]></description>
			<content:encoded><![CDATA[<h3>14. Sesje</h3>
<h4>14.1. Wstęp do sesji</h4>
<p>Dzięki sesjom możemy przechowywać pewne dane (takie jak identyfikator użytkownika czy jego login) podczas następujących po sobie wywołań strony. Działa to podobnie jak ciasteczka bez ustawionego czasu wygaśnięcia (expire) ? przy czym dostęp do danych znika przy wylogowaniu się (dzięki specjalnemu przyciskowi na stronie) lub zamknięciu wszystkich okien przeglądarki. Sesje od ciastek odróżnia również to, że wszystkie dane są przechowywane nie u klienta, ale na serwerze. Na komputerze gościa trzymany jest jedynie identyfikator sesji, który znajduje się w ciasteczku lub przekazywany jest przez adres strony metodą GET.</p>
<p>Sesje rozpoczynamy, uruchamiając na stronie funkcję session_start(). Sprawdza ona, czy nie istnieje już rozpoczęta sesja. Jeśli tak, to pobiera identyfikator sesji z URL lub z ciastka i odtwarza wszystkie zmienne przechowywane w sesji, a jeżeli nie, to tworzy nową sesję i nadaje unikatowy identyfikator. Dostęp do zmiennych sesyjnych odbywa się poprzez obecną w PHP w wersji od 4.0.6 tablicę superglobalną $_SESSION. Dla przykładu:</p>
<table class="mceItemTable" style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
session_start();<br />
if (isset($_SESSION['licznik']))<br />
$_SESSION['licznik']++;<br />
else<br />
$_SESSION['licznik']=1;<br />
echo &#8220;Oglądasz tą stronę już &#8220;.$_SESSION['licznik'].&#8221; raz&#8221;;<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>Jeśli nie potrzebujemy już danej zmiennej zapisanej w sesji, używamy funkcji unset(), a zostanie ona ?wymazana? z sesji. Dla przykładu:</p>
<table class="mceItemTable" style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
session_start();<br />
unset($_SESSION['licznik']);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>Jak już wspomnieliśmy, ID sesji może być przekazane na dwa sposoby: za pomocą ciastka lub URL-u. Jako że niektóre przeglądarki mogą nie zaakceptować ciasteczek, nie należy na nich polegać w 100%. Trzeba wówczas wstawić też ID sesji do adresu strony. PHP może to zrobić sam ? jeśli był kompilowany z opcją&#8211;enable-trans-sid ? ale jeżeli tak się nie stało, należy ręcznie umieścić ID w adresie. Dla przykładu:</p>
<table class="mceItemTable" style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;a href=&#8221;jakasstronka.php?&lt;?=SID?&gt;&#8221;&gt;Idź dalej&lt;/a&gt;<br />
&lt;a href=&#8221;jakasstronka.php?&lt;?echo SID?&gt;&#8221;&gt;Idź dalej&lt;/a&gt;</td>
</tr>
</tbody>
</table>
<p>Te dwie metody mają podobne działanie, chociaż pierwsza wydaje się łatwiejsza w zapisie. Tej pierwszej można jednak użyć tylko wtedy, gdy została włączona możliwość używania krótkich tagów. Dlatego pisząc skrypty pod kątem serwera, którego konfiguracji nie znamy, używajmy tej drugiej metody.</p>
]]></content:encoded>
			<wfw:commentRss>http://elearning.media.pl/index.php/2009/11/30/kurs-php-cz-14-sesje/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kurs PHP cz 13 Upload plików</title>
		<link>http://elearning.media.pl/index.php/2009/11/28/kurs-php-cz-13-upload-plikow/</link>
		<comments>http://elearning.media.pl/index.php/2009/11/28/kurs-php-cz-13-upload-plikow/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 07:13:55 +0000</pubDate>
		<dc:creator>Bogdan Markowicz</dc:creator>
				<category><![CDATA[Kursy php cms java html flash itp]]></category>
		<category><![CDATA[kurs PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projektowanie www]]></category>

		<guid isPermaLink="false">http://www.blog.servicetek.media.pl/?p=377</guid>
		<description><![CDATA[13. Upload plików
13.1. Kilka słów o uploadzie
Jeśli dysponujemy kontem WWW np. w Interii lub Lycos, na pewno spotkaliśmy się z klientem FTP dostępnym z poziomu przeglądarki WWW. Nie jest to jednak zbyt praktyczne rozwiązanie, szczególnie gdy chcemy umieszczać na stronie pliki o dużym rozmiarze, ale świetnie się ono sprawdza w ...]]></description>
			<content:encoded><![CDATA[<h3>13. Upload plików</h3>
<h4>13.1. Kilka słów o uploadzie</h4>
<p>Jeśli dysponujemy kontem WWW np. w Interii lub Lycos, na pewno spotkaliśmy się z klientem FTP dostępnym z poziomu przeglądarki WWW. Nie jest to jednak zbyt praktyczne rozwiązanie, szczególnie gdy chcemy umieszczać na stronie pliki o dużym rozmiarze, ale świetnie się ono sprawdza w wypadku małych zbiorów, takich jak pliki HTML. Spróbujmy coś takiego napisać.</p>
<h4>13.2. Najpierw formularz</h4>
<p>Należy zacząć od przygotowania formularza, w którym odwiedzający wskaże pliki do wysłania. W znaczniku form należy umieścić informację, że wysyłane będą dane (enctype=?multipart/form-data?); ważne jest również to, by wartość metody ustawić na post. Na końcu należy dodać komponent typu file, dzięki któremu gość wskaże plik do wysłania.</p>
<p>Plik formularz.html:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;form enctype=&#8221;multipart/form-data&#8221; action=&#8221;up.php&#8221; method=&#8221;post&#8221;&gt;<br />
&lt;input type=&#8221;file&#8221; name=&#8221;plik&#8221;&gt;<br />
&lt;input type=&#8221;submit&#8221; value=&#8221;Wyślij na serwer&#8221;&gt;<br />
&lt;/form&gt;</td>
</tr>
</tbody>
</table>
<h4>13.3. Odbiór pliku w teorii</h4>
<p>Po wysłaniu danych w pliku up.php dostępna będzie wielowymiarowa tablica $_FILES ? pierwszym wymiarem będą nazwy pól file z formularza, a drugim następujące dane o wysłanym pliku:</p>
<ul>
<li>name ? oryginalna nazwa pliku (taka jaka u użytkownika),</li>
<li>tmp_name ? tymczasowa nazwa pliku (użyta zostanie do skopiowania do folderu docelowego),</li>
<li>size ? wielkość w bajtach,</li>
<li>type ? typ MIME pliku (np. text/html),</li>
<li>error ? (dodane w PHP 4.2) zwraca kod błędu, o ile taki wystąpił.</li>
</ul>
<h4>13.4. Kody błędów</h4>
<ul>
<li>nie wystąpił błąd ? plik wysłany poprawnie,</li>
<li>wielkość pliku przekracza wartość maksymalną określoną w dyrektywie upload_max_filesize,</li>
<li>wielkość pliku przekracza wartość maksymalną określoną w polu MAX_FILE_SIZE formularza,</li>
<li>plik został wysłany częściowo,</li>
<li>żaden plik nie został wysłany.</li>
</ul>
<p>Wyjaśnić należy chyba tylko błąd numer 2. W formularzu, z którego wysyłane będą pliki, można umieścić pole typu hidden o nazwie MAX_FILE_SIZE, gdzie należy podać maksymalną wielkość pliku do wysłania. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;input type=&#8221;hidden&#8221; name=&#8221;MAX_FILE_SIZE&#8221; value=&#8221;30000&#8243; /&gt;</td>
</tr>
</tbody>
</table>
<p>MAX_FILE_SIZE zależne jest od przeglądarki i nie można na nim polegać w stu procentach. Na przykład wczesne wersje Firefoksa nic sobie nie robiły z obecności takiego pola i pozwalały wysłać plik. PHP sprawdza jednak wielkość pliku i wyświetla błąd nr 2.</p>
<p>Przyszedł czas na zbiór up.php ? dzięki niemu plik jest odbierany i zapisywany na serwerze.</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
$uploaded = &#8220;var/www/uploady/&#8221;. $_FILES['plik']['name'];<br />
if (is_uploaded_file($_FILES['plik']['tmp_name'])) {<br />
if ($_FILES['plik']['size'] &gt; 1024*1024*1024) {<br />
echo &#8216;Plik jest za duży&#8217;;<br />
} else {<br />
move_uploaded_file($_FILES['plik']['tmp_name'],$uploaded);<br />
echo &#8220;Operacja przebiegła pomyślnie&#8221;;<br />
}<br />
} else {<br />
echo &#8216;Błąd przy przesyłaniu danych!&#8217;;<br />
}<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>Najpierw należy sprawdzić, czy plik został na pewno wysłany przez formularz. W przeciwnym wypadku istnieje możliwość ominięcia zabezpieczeń i uruchomienia np. dowolnego skryptu PHP. Jeśli plik nie został wysłany, pokazywany jest błąd. Następnie sprawdzana jest wielkość pliku, która na poniższym przykładzie nie może przekroczyć 1 MB ? 1073741824 bajtów. Jeśli jego wielkość jest większa, pokazywany jest błąd. Jeżeli nie, to plik zostaje przeniesiony na właściwe miejsce i wypisywane jest potwierdzenie, że operacja przebiegła pomyślnie.<br />
Skrypt, który odbiera plik, powinien zawierać kod określający, co stanie się z wysłanym plikiem. Możemy więc usunąć pliki za duże lub za małe. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>if ($_FILES['plik']['size'] &gt; 1073741824</td>
</tr>
</tbody>
</table>
<p>lub odebrać tylko pliki graficzne:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>if ($_FILES['plik']['type']==&#8221;image/jpeg&#8221;<br />
|| $_FILES['plik']['type']==&#8221;image/gif&#8221;))</td>
</tr>
</tbody>
</table>
<p>Pamiętajmy, że od PHP 4.2.0 możemy używać funkcji $_FILES['plik']['error'], aby sprawdzić, co poszło nie tak.<br />
Jeśli podczas uploadu plików odkryjemy, że tablica $_FILES jest pusta, to oznacza, iż wielkość przesyłanego pliku przekracza wielkość ustawioną w dyrektywie post_max_size pliku php.ini.</p>
<h4>13.5. Upload wielu plików</h4>
<p>Jeśli potrzebujemy wysłać więcej niż jeden plik z formularza, możemy się posłużyć jedną z dwóch metod: nadać każdemu komponentowi file inną nazwę lub wykorzystać tablicę. Oto zmodyfikowany plik formularz.html:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;form enctype=&#8221;multipart/form-data&#8221; action=&#8221;up.php&#8221; method=&#8221;post&#8221;&gt;<br />
&lt;input type=&#8221;file&#8221; name=&#8221;plik[]&#8220;&gt;<br />
&lt;input type=&#8221;file&#8221; name=&#8221;plik[]&#8220;&gt;<br />
&lt;input type=&#8221;file&#8221; name=&#8221;plik[]&#8220;&gt;<br />
&lt;input type=&#8221;submit&#8221; value=&#8221;Wyślij na serwer&#8221;&gt;<br />
&lt;/form&gt;</td>
</tr>
</tbody>
</table>
<p>A oto up.php po drobnych przeróbkach:</p>
<p>&lt;?<br />
for ($i=0; $i&lt;sizeof($_FILES['plik']['size']); $i++) {<br />
if ($_FILES['plik']['size'][$i] !=0) {<br />
$uploaded = &#8220;var/www/uploady/&#8221;. $_FILES['plik']['name'][$i];<br />
if (is_uploaded_file($_FILES['plik']['tmp_name'][$i])) {<br />
if ($_FILES['plik']['size'][$i] &gt; 1024*1024*1024) {<br />
echo &#8220;Plik numer $i jest za duży&lt;br /&gt;&#8221;;<br />
} else {<br />
move_uploaded_file($_FILES['plik']['tmp_name'][$i],<br />
$uploaded);<br />
echo &#8220;Operacja wysyłania pliku $i<br />
przebiegła pomyślnie&lt;br /&gt;&#8221;;<br />
}<br />
} else {<br />
echo &#8220;Błąd przy przesyłaniu danych w pliku $i!&lt;br /&gt;&#8221;;<br />
}<br />
}<br />
}<br />
?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://elearning.media.pl/index.php/2009/11/28/kurs-php-cz-13-upload-plikow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kurs systemu zarządzania treścią Joomla!. Część pierwsza: instalacja</title>
		<link>http://elearning.media.pl/index.php/2009/11/27/kurs-systemu-zarzadzania-trescia-joomla-czesc-pierwsza-instalacja/</link>
		<comments>http://elearning.media.pl/index.php/2009/11/27/kurs-systemu-zarzadzania-trescia-joomla-czesc-pierwsza-instalacja/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 13:08:47 +0000</pubDate>
		<dc:creator>Bogdan Markowicz</dc:creator>
				<category><![CDATA[Kursy php cms java html flash itp]]></category>
		<category><![CDATA[Nowości]]></category>
		<category><![CDATA[Projektowanie www]]></category>
		<category><![CDATA[Video tutorial - Jak to sie robi]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[elearning]]></category>
		<category><![CDATA[instrukcja]]></category>
		<category><![CDATA[jak zainstalowac joomla]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[joomla instalacja]]></category>
		<category><![CDATA[joomla polska wersja]]></category>
		<category><![CDATA[kurs]]></category>
		<category><![CDATA[poradnik]]></category>
		<category><![CDATA[projektowanie stron www poradnik]]></category>
		<category><![CDATA[sg]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.blog.servicetek.media.pl/?p=797</guid>
		<description><![CDATA[Joomla! jest obecnie jednym z najpopularniejszych i najbardziej wszechstronnych systemów obsługi treści. Wsparcie licznej i prężnie działającej społeczności zapewniło tej aplikacji wysokie noty użytkowników i uczyniło z niej podstawę funkcjonowania wielu prestiżowych witryn internetowych. Tych, którzy chcą rozpocząć z nią przygodę, Joomla! może jednak onieśmielić liczbą dostępnych opcji konfiguracyjnych. Właśnie ...]]></description>
			<content:encoded><![CDATA[<p><strong><span><span style="text-decoration: underline;">Joomla!</span> jest obecnie jednym z najpopularniejszych i najbardziej wszechstronnych systemów obsługi treści. Wsparcie licznej i prężnie działającej społeczności zapewniło tej aplikacji wysokie noty użytkowników i uczyniło z niej podstawę funkcjonowania wielu prestiżowych witryn internetowych. Tych, którzy chcą rozpocząć z nią przygodę, <span style="text-decoration: underline;">Joomla!</span> może jednak onieśmielić liczbą dostępnych opcji konfiguracyjnych. Właśnie dla wszystkich takich osób powstała pierwsza część kursu obsługi systemu, w której wyczerpująco omówiono zagadnienia związane z jego instalacją i konfiguracją.</span></strong></p>
<p><strong><span><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/opener-300x150.png" alt="" width="300" height="165" /></span></strong></p>
<h2>Wprowadzenie</h2>
<h3>
Trochę historii</h3>
<p>Zanim narodził się projekt Joomla!, było Mambo ? program udostępniony w 2002 roku w ramach projektu SourceForge na warunkach licencji GNU GPL przez australijską firmę Miro. Wkrótce wokół projektu skupiła się ogromna rzesza pasjonatów z całego świata ? zarówno programistów, jak i zwykłych użytkowników. Każdy na swój sposób starał się włączyć w prace nad rozwojem programu. W ciągu dwóch lat w wyniku zbiorowego wysiłku ze stosunkowo prymitywnego rozwiązania Mambo przeobraził się w jeden z najlepszych programów Open Source, zyskując najwyższe uznanie ? wyrażające się także wieloma przyznanymi nagrodami.</p>
<p>Powoli narastał jednak konflikt pomiędzy tworzącymi Mambo programistami a firmą Miro, która miała nadzieję na komercyjne wykorzystanie aplikacji. W efekcie 17 sierpnia 2005 roku zespół tworzący program opublikował w specjalnie utworzonej witrynie OpenSourceMatters krótkie oświadczenie, w którym poinformował, że praca nad systemem obsługi treści będzie kontynuowana, ale w ramach nowego projektu, hołdującego zasadom Wolnego Oprogramowania. Decyzja ta spotkała się z powszechnym poparciem projektantów i społeczności użytkowników z całego świata. Swoje zaangażowanie wyrazili oni tysiącami e-maili oraz wypowiedziami na założonym błyskawicznie forum dyskusyjnym OpenSourceMatters. W ciągu niespełna trzech tygodni większość projektantów związanych dotychczas z Mambo skupiła się wokół zespołu liderów ? 1 września 2005 roku ogłoszono narodziny Joomli!.</p>
<p>Jednak powstanie nowego systemu obsługi treści nie oznaczało końca Mambo. Obecnie na rynku funkcjonują więc dwa programy ? Mambo i Joomla! ? wyrosłe ze wspólnego korzenia. Oba bazują na tych samych, pierwotnych założeniach, obecnie rozwijane są już jednak niezależnie od siebie. Każdy z nich ma swoje centrum rozwoju, swoje cele i swoje plany. Co prawda możliwa jest wciąż migracja zarówno z Mambo w wersji 4.5.2.x do Jooml1! 1.0.x, jak i z Joomli! do Mambo, niemniej niektóre dodatkowe moduły i komponenty mogą już działać tylko w jednym z tych programów.</p>
<h3>
Joomla! dzisiaj</h3>
<p>W styczniu tego roku pojawiła się długo oczekiwana wersja 1.5 programu Joomla!. Ze względu na daleko idące zmiany w kodzie przestał on być kompatybilny ze swymi poprzednikami. Duża popularność wcześniejszych wersji i wiele opracowanych dla nich dodatków skłoniły jednak autorów do udostępnienia również w pakiecie Joomla! 1.5 opcji uruchamiania aplikacji w trybie zgodności. Ponieważ system Joomla! w wersji 1.0 jest bardziej rozpowszechniony, lepiej udokumentowany, a także ma rozwijaną od dłuższego czasu polską wersję, to właśnie on będzie przedmiotem naszego zainteresowania w prezentowanym kursie.</p>
<h3>
Polska edycja</h3>
<p>Oficjalne wydania narodowe są wiernymi, ale zlokalizowanymi kopiami wydań oficjalnych. Lokalizacja, czyli dostosowanie do potrzeb użytkowników posługujących się na przykład językiem polskim, polega na dołączeniu polskiego pakietu etykiet i komunikatów ekranowych strony frontowej, skryptu instalacyjnego i obsługującego bazę danych oraz zastąpieniu oryginalnych plików pomocy. Takie oficjalne wydanie zlokalizowane oznaczone jest nazwą oryginalną pakietu z dołączonym przyrostkiem pl ? na przykład <strong>Joomla 1.0.15-pl</strong>. Trzeba jednak pamiętać, że nie jest w tym wypadku możliwa modyfikacja języka panelu administracyjnego. Jeśli nasza znajomość angielskiego kuleje, powinniśmy zainstalować jedno z wydań całkowicie spolonizowanych ? przygotowane z myślą o naszym podwórku <strong>Joomla plus Admin Language (JAL)</strong> lub międzynarodowe, charakteryzujące się obsługą wielu języków <strong>Joomla International Edition (JIE)</strong>. Wszystkie pakiety instalacyjne dostępne są na <a href="http://www.joomla.pl/index.php/index.php/component/option,com_docman/task,cat_view/gid,49/Itemid,58/">polskich stronach Joomli!</a>.</p>
<h3>
Wydania rozszerzone</h3>
<p>Zalety programu Joomla! są dostrzegane i wykorzystywane w praktyce przez wiele grup programistów-wolontariuszy. Dzięki temu powstają projekty różniące się w znacznym stopniu pod względem funkcjonalności i dostępnych funkcji, pozwalające użytkownikowi na optymalne dostosowanie aplikacji do jego potrzeb. Przedstawienie wszystkich tych dodatków wykraczałoby poza ramy niniejszego kursu. W poniższej tabeli można zatem znaleźć jedynie najważniejsze spośród rozwijanych obecnie projektów.</p>
<table style="height: 420px;" border="1" width="525">
<tbody>
<tr>
<th>
<h3>Rozszerzone wydania Joomli!</h3>
</th>
</tr>
<tr>
<td><strong>A8e Joomla!</strong></p>
<p>A8e Joomla! (wcześniej: Accesible Joomla!) jest wydaniem dostosowanym do wymagań dostępności określonych w standardach <a href="http://www.w3.org/TR/WAI-WEBCONTENT/">WCAG</a> i <a href="http://www.section508.gov/">Section508</a>. Projekt dostępny jest w witrynie <a href="http://www.a8ejoomla.com/">a8e Joomla!</a>.</p>
<p><strong>Joomla! International Edition</strong></p>
<p>Mongolski projekt autorstwa Adriana Mummeya. Wersja ta obecnie rozrosła się do postaci w pełni funkcjonalnego systemu obsługi treści, umożliwiającego płynne przełączanie się pomiędzy używanymi językami. J!IE dostępny jest na <a href="http://www.joomla-international.org/">oficjalnej stronie projektu</a>.</p>
<p><strong>Joomla! eCommerce Edition</strong></p>
<p>Projekt Joomla! eCommerce Edition jest wydaniem rozszerzonym o <a title="sklep internetowy" href="http://home.pl/e-commerce" target="_blank">sklep internetowy</a> VirtueMart oraz inne dodatkowe składniki, np. menedżera plików JoomlaXplorer czy biuletyn informacyjny Letterman. Projekt dostępny jest pod adresem <a href="http://virtuemart.net/">http://virtuemart.net/</a>.</p>
<p><strong>Joomla! Power Edition</strong></p>
<p>Projekt Joomla! Power Edition to zmodyfikowany preinstalator, przeznaczony na platformę Windows, wzbogacony o zestaw często wykorzystywanych rozszerzeń ? komponentów, modułów i botów. Umożliwia on wybór dodatkowych składników, co upraszcza proces przygotowania witryny. J!PE dostępny jest w witrynie <a href="http://www.pe.joomlapl.com/">http://www.pe.joomlapl.com/</a>.</td>
</tr>
</tbody>
</table>
<h2>
Instalacja</h2>
<h3>
Wymagania instalacyjne</h3>
<p>CMS Joomla! może być zainstalowany niemal na wszystkich platformach systemowych, w tym: Linuksie, FreeBSD, Mac OS-ie X, Solarisie oraz Windows. Do jego instalacji niezbędne są trzy programy:</p>
<ul>
<li>serwer stron internetowych z obsługą PHP ? <a href="http://www.apache.org/" target="_blank">Apache</a>, IIS lub inny,</li>
<li>język <a href="http://www.php.net/" target="_blank">PHP</a> w wersji 4.2.x lub nowszej,</li>
<li>serwer bazy danych <a href="http://www.mysql.com/" target="_blank">MySQL</a> w wersji 3.23.x lub nowszej.</li>
</ul>
<p>Jeśli zamierzamy korzystać z serwera Apache, upewnijmy się, że zawiera on skonfigurowane moduły <strong>mod_rewrite</strong> oraz <strong>security</strong>. Ich obecność pozwoli nam na skorzystanie z dobrodziejstwa tzw. przyjaznych adresów (postaci na przykład <strong>http://www.twojastrona.com/content/view/2/5/</strong>) oraz podniesie poziomu bezpieczeństwa.</p>
<p>Naturalnym przeznaczeniem pakietu Joomla! jest oczywiście instalacja na serwerze internetowym. Możemy jednak również umieścić program na specjalnie przygotowanym komputerze w sieci lokalnej lub maszynie stacjonarnej. Ten ostatni sposób można polecić szczególnie osobom rozpoczynającym dopiero swoją przygodę z systemem. Lokalna instalacja Joomli! nie wymaga zaawansowanych umiejętności, a w efekcie zyskamy przydatną platformę do nauki i przeprowadzania testów.</p>
<h3>
Instalacja lokalna</h3>
<p>Aby rozpocząć pracę z Joomlą! na własnym komputerze, musimy zainstalować wszystkie konieczne, wymienione wcześniej składniki. Najlepiej skorzystać w tym celu z dostępnych zintegrowanych pakietów, w których skład wchodzą oprogramowanie Apache, PHP i serwer bazodanowy MySQL.</p>
<h3>
Pakiety zintegrowane</h3>
<p>Samodzielna instalacja i konfiguracja serwera Apache, PHP oraz MySQL-a może sprawiać kłopoty niedoświadczonym użytkownikom. Istnieją jednak specjalne pakiety, które instalację i konfigurację serwera WWW czynią łatwą i przyjemną. Spośród wielu projektów warto rozważyć skorzystanie z następujących:</p>
<ul>
<li><a href="http://www.en.wampserver.com/">WAMP</a> ? pakiet zawierający serwer Apache, PHP i MySQL-a, przeznaczony dla systemu Windows. W jego skład wchodzi również phpMyAdmin ? program ułatwiający administrowanie bazą danych. Całość charakteryzuje się szybkością działania i prostotą konfiguracji.</li>
<li><a href="http://www.apachefriends.org/en/xampp.html">XAMPP</a> jest projektem uniwersalnym. Oferuje on bowiem wersje dla wszystkich platform systemowych: Linuksa, Windows, Mac OS-u X czy Solarisa. Do wyboru mamy dwa wydania: kompletne i nazwany XAMPPlite pakiet o okrojonych możliwościach, wystarczający jednak w zupełności jako środowisko działania CMS Joomla!. XAMPP jest łatwy w obsłudze, a jego instalacja sprowadza się do uruchomienia pliku setup i udzielenia kilku niezbędnych informacji.</li>
<li><a href="http://webserv.pl/">WebServ</a> ? przeznaczony dla Windows projekt autorstwa polskiego duetu ? Bartosza Malickiego i Radosława Skrzypczyńskiego. Zawiera serwer Apache z obsługą PHP, bazę danych MySQL i kilka innych narzędzi niezwykle przydatnych w trakcie pracy z lokalnie zainstalowaną aplikacją.</li>
<li><a href="http://vertrigo.sourceforge.net/">VertrigoServ</a> ? instaluje w środowisku Windows serwer Apache, PHP, MySQL-a, SQLite&#8217;a, SQLiteManagera, phpMyAdmina oraz Zend Optimizera. Wygodny program instalacyjny umieszcza wszystkie potrzebne pliki w wybranym katalogu. Można z niego korzystać tuż po zainstalowaniu ? nie wymaga on żadnej dodatkowej konfiguracji. Jest idealnym rozwiązaniem zarówno dla początkujących, jak i doświadczonych użytkowników.</li>
</ul>
<h3>
Pakiety źródłowe</h3>
<p>Gdy się już upewnimy, że nasze środowisko lokalne lub pakiet hostingowy (wykupiony u odpowiedniego dostawcy) spełniają wspomniane wcześniej wymogi techniczne, możemy pobrać <a href="http://www.joomla.pl/index.php/index.php/component/option,com_docman/task,cat_view/gid,49/Itemid,58/">pliki instalacyjne Joomli!</a>. Pakiety źródłowe to archiwa spakowane standardowo w formacie ZIP lub TAR.GZ. Każde archiwum zawiera wszystkie skrypty rdzenia Joomla! umieszczone we właściwych katalogach oraz skrypty instalatora w katalogu <strong>installation</strong>.</p>
<p>Rozpakowując pakiet, należy pamiętać o zachowaniu istniejącej struktury folderów. Jeśli chcemy zainstalować system Joomla! lokalnie, pakiet źródłowy powinniśmy rozpakować do katalogu <strong>C:\\Apache\htdocs\_nazwa_katalogu_dla_joomla</strong> (dla Windows) lub też <strong>/var/www/_nazwa_katalogu_dla_joomla</strong> (dla Linuksa). Przy przesyłaniu plików na zdalny serwer należy oczywiście zawartość archiwum umieścić za pomocą klienta FTP w katalogu głównym. W tym wypadku zalecane jest też sprawdzenie, czy program nie zmienił wielkości znaków w nazwach plików.</p>
<h3>
Program instalacyjny</h3>
<p>Aby rozpocząć instalację Joomli! na serwerze WWW, należy jedynie w Pasku adresu przeglądarki internetowej wpisać adres internetowy swojej domeny, ewentualnie rozszerzony o nazwę podkatalogu, jeśli pliki z pakietu instalacyjnego zostały w nim umieszczone. W wypadku instalacji na komputerze domowym lub w sieci lokalnej postępujemy podobnie, używając jednak adresu postaci <strong>http://localhost/twoj_katalog_Joomla</strong>.</p>
<p>Jeżeli po wykonaniu tych czynności nie pojawi się strona testowa instalatora Joomli!, powinniśmy sprawdzić dokładnie, czy wszystkie pliki zostały przesłane na serwer i czy podczas ich transferu klient FTP nie zmienił nazw. Przyczyną problemu może być również obecność w katalogu głównym pliku <strong>configuration.php</strong>. W ostateczności możemy się bezpośrednio odwołać do skryptu instalacyjnego, umieszczonego w folderze <strong>installation </strong>(<strong>http://twojastrona.com/installation/index.php</strong>). Jeśli i to nie pomoże, najbardziej prawdopodobną przyczyną niepowodzenia będzie niepoprawnie skonfigurowany serwer Apache i/lub PHP. Pozostanie nam więc skontaktowanie się z naszym usługodawcą internetowym albo bliższe zapoznanie się z dokumentacją zainstalowanego lokalnie serwera. Doświadczeni użytkownicy Sieci mogą także skorzystać z kursu instalacji ?ręcznej?, umieszczonego w dalszej części tego artykułu.</p>
<h2>Test przedinstalacyjny</h2>
<p>Po uruchomieniu instalatora, na stronie testowej programu, po prawej stronie ekranu, pojawią się wyniki testu przedinstalacyjnego. Poniższa ilustracja przedstawia przykładowy rezultat kontrolny:</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut1.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut1.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Test przedinstalacyjny Joomli!</h5>
<p style="text-align: center;">
<p>Jeżeli któreś z rozpoznanych ustawień wyświetlane są w kolorze czerwonym, należy je w miarę możliwości poprawić. Niektóre trzeba zmodyfikować przed rozpoczęciem instalacji. Ustawienia poprawne bądź zalecane i pożądane są oznaczone zielonym czcionką. Jeśli korzystamy z pakietu instalacyjnego <strong>Joomla plus Admin Language</strong>, będziemy mieli dodatkowo możliwość zdefiniowania ustawień językowych przed rozpoczęciem instalacji. Należy w tym celu wybrać z listy rozwijalnej język etykiet i komunikatów zaplecza oraz strony frontowej, ewentualnie zmienić język instalacji i zatwierdzić całość, by kontynuować uruchamianie systemu.</p>
<p>W teście przedinstalacyjnym możemy zignorować jedynie komunikat ostrzegający nas, że plik konfiguracyjny jest niezapisywalny (<strong>unwritable</strong>). Pod koniec instalacji program wyświetli bowiem wszystkie zmienne konfiguracyjne, które będziemy mogli skopiować, wkleić do pliku <strong>configuration.php</strong>, a następnie wysłać na serwer. Jeśli zabezpieczony przed zapisem okaże się katalog tymczasowy, będziemy musieli założyć katalog <strong>tmp</strong> w folderze głównym Joomli! i ustawić mu prawa dostępu na <strong>707</strong> (o prawach dostępu czytaj dalej). To powinno wystarczyć. Jeżeli jednak będzie inaczej, pozostanie nam już tylko zwrócenie się o pomoc do administratora serwera.</p>
<h3>
Ustawienia zalecane</h3>
<p>W tabeli umieszczonej poniżej pierwszego zestawienia instalator przedstawi wynik przeglądu ustawień zalecanych. Poniższa ilustracja pokazuje przykładowe dane:</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut2.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut2.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Instalator Joomli! ? ustawienia zalecane.</h5>
<p style="text-align: center;">
<p>To, że niektóre ustawienia nie odpowiadają wymaganiom Joomli!, nie przesądza jeszcze o braku możliwości zainstalowania i poprawnego korzystania z programu. Zgodność z ustawieniami zalecanymi zapewnia jedynie optymalne środowisko pracy dla Joomli!. Ewentualnych zmian możemy dokonać już po zainstalowaniu systemu obsługi treści. Przydatna będzie w takim wypadku znajomość zasad edycji pliku <strong>.htaccess</strong>. Podstawowe informacje przedstawione zostały w poniższej tabeli:</p>
<table border="1">
<tbody>
<tr>
<th>
<h3>Co to jest plik .htaccess?</h3>
</th>
</tr>
<tr>
<td>Plik .htaccess umożliwia samodzielne skonfigurowanie niektórych ustawień serwera. Działa on w obrębie katalogu, w którym został umieszczony, oraz w jego podkatalogach. Innymi słowy, ustawienia zdefiniowane w pliku .htaccess są dziedziczone przez wszystkie podkatalogi, dopóki nie pojawi się w nich kolejny plik .htaccess. W takim wypadku decydujące znaczenie mają ustawienia określone w tym nowym pliku.</p>
<p>W pakiecie dystrybucyjnym Joomli! umieszczony jest plik <strong>htacces.txt</strong>. Zawiera on dyrektywy (<strong>RewriteEngine On</strong>) umożliwiające skorzystanie z tak zwanych przyjaznych adresów URL. Aby uaktywnić plik, trzeba zmienić jego nazwę na .htaccess. Jako że jest to plik tekstowy, można go edytować w dowolnym, zachowującym format pliku edytorze, na przykład w Notatniku.</p>
<p>Umieszczając w treści pliku .htaccess odpowiednie dyrektywy, możemy na przykład określić uprawnienia dostępu do danego folderu dla grupy użytkowników czy wybranego adresu IP. Oczywiście nie wszystkie parametry funkcjonowania serwera można w ten sposób skonfigurować. Pamiętajmy, że użycie niedozwolonych wyrażeń spowoduje wystąpienie mniej lub bardziej uciążliwych błędów. Dla administratorów Joomli! najważniejsze jest jednak to, że w pliku .htaccess można poprawnie zdefiniować większość z zalecanych w procesie instalacji ustawień serwera. Przykłady takiego zastosowania zamieszczone zostały poniżej, w części artykułu dotyczącej ?ręcznej? instalacji systemu Joomla!. Więcej informacji na temat właściwości pliku .htaccess znaleźć można także <a href="http://webhosting.pl/kategorie/webhosting/2007_08/jak_uzywac_plikow_htaccess">na stronach Webhostingu</a>.</td>
</tr>
</tbody>
</table>
<h3>
Uprawnienia dostępu do plików i katalogów</h3>
<p>W kolejnej, czwartej już części strony testowej instalator przedstawi wynik testu praw dostępu do plików i katalogów, w których Joomla! przechowuje swoje pliki:</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut3.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut3.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Tabela ustawień dostępu</h5>
<p style="text-align: center;">
<p>W trakcie instalacji systemu do żadnego z tych katalogów nie są zapisywane dane. Nawet w wypadku wystąpienia błędów w ustawieniach instalacja przebiegnie więc pomyślnie. Niemniej po instalacji prawa dostępu do tych katalogów muszą być skorygowane.</p>
<table style="height: 1083px;" border="1" width="520">
<tbody>
<tr>
<th>
<h3>Prawa dostępu do katalogów na serwerze</h3>
</th>
</tr>
<tr>
<td>Katalogom i plikom stanowiącym zasoby serwisu Joomla! nadawane są atrybuty ustalające, kto i w jakim zakresie może z nich korzystać. Z problemem praw dostępu będziemy się spotykać w Joomli! bardzo często. Dlatego powinniśmy mieć choćby minimum wiedzy na ten temat, by uniknąć popełnienia niepotrzebnych błędów.</p>
<p>Prawa dostępu to prawa użytkowników plików i katalogów. Użytkownikami mogą być: właściciel (owner), grupa (group) ? wszyscy użytkownicy z grup, którym administrator nadał uprawnienia związane z plikiem lub katalogiem, oraz świat ? inni (world ? other), czyli wszyscy inni użytkownicy. W tej ostatniej grupie mieszczą się także goście odwiedzający serwis.</p>
<p>Możliwe do ustawienia prawa dostępu to:</p>
<ul>
<li><strong>czytaj (read)</strong>: prawo do odczytu pliku lub przeglądania katalogu,</li>
<li><strong>zapisz (write)</strong>: prawo do zapisu w pliku lub zmieniania zawartości katalogu,</li>
<li><strong>wykonaj (execute)</strong>: prawo wykonywania skryptów lub otwarcia katalogu.</li>
</ul>
<p>W wypadku katalogów prawo do wykonywania pozwala tylko na wejście do katalogu. Aby zobaczyć, co znajduje się w środku, potrzebne jest prawo do odczytu. W wypadku plików prawo wykonywania oznacza, że można dany plik uruchomić jako program.</p>
<p>W systemach uniksowych prawa dostępu do plików i katalogów prezentowane są jako trzy sekwencje znaków r (read), w (write), x (execute) oraz myślnika (-) wskazującego na brak danego uprawnienia. Innym spotykanym zapisem jest także grupa trzech cyfr, z których pierwsza oznacza prawa właściciela pliku lub katalogu, druga prawa grupy, a trzecia prawa wszystkich innych użytkowników. Całkowita wartość jest więc sumą liczb odpowiadających poszczególnym prawom dostępu (r=4, w=2, x=1), wymienionym w kolejności grup. I tak na przykład wartość 754 oznacza, że właściciel ma prawo odczytu, zapisu i wykonywania, grupa ma prawo odczytu i wykonywania, nie ma jednak praw zapisu, a z kolei inni użytkownicy mają tylko prawa odczytu.</p>
<p>Jeśli chcemy, aby nasza witryna była dobrze chroniona, następujące katalogi powinny mieć ustawione prawa dostępu na 755:</p>
<ul>
<li>/administrator,</li>
<li>/cache,</li>
<li>/components,</li>
<li>/editor,</li>
<li>/help,</li>
<li>/images,</li>
<li>/includes,</li>
<li>/language,</li>
<li>/mambots,</li>
<li>/media,</li>
<li>/modules,</li>
<li>/templates.</li>
</ul>
<p>Następujące pliki w katalogu głównym powinny mieć także prawa dostępu ustawione na 644:</p>
<ul>
<li>configuration.php,</li>
<li>globals.php,</li>
<li>htaccess.txt,</li>
<li>index.php,</li>
<li>index2.php,</li>
<li>mainbody.php,</li>
<li>offline.php,</li>
<li>offlinebar.php,</li>
<li>pathway.php,</li>
<li>robots.txt.</li>
</ul>
<p>Szczególnie ważny jest w tym wykazie plik <strong>configuration.php</strong>, zawierający globalne ustawienia serwisu. Plik ten tworzony jest podczas instalacji. Ponieważ niekiedy konieczne jest dokonanie zmian w ustawieniach globalnych, w oknie konfiguracyjnym panelu administracyjnego dostępna jest opcja umożliwiająca chwilową zmianę praw dostępu do tego pliku. Pamiętajmy jednak, aby zawsze, gdy dokonujemy zmian bezpośrednio w pliku <strong>configuration.php</strong>, po jego zapisaniu zmienić prawa dostępu.</p>
<p>Twoje zasoby będą bezpieczniejsze, jeśli i pozostałym plikom w katalogu głównym ustalisz prawa dostępu na 644 ? właściciel prawa odczytu i zapisu, grupa i inni ? tylko prawo odczytu:</p>
<ul>
<li>CHANGELOG.php,</li>
<li>CHANGELOG_PL.php,</li>
<li>configuration.php-dist,</li>
<li>COPYRIGHT.php,</li>
<li>INSTALL.php,</li>
<li>LICENSE.php.</li>
</ul>
<p>Prawa dostępu zmieniamy przy użyciu klienta FTP, po zalogowaniu się na serwer, wybierając z menu opcję <strong>Zmień atrybuty </strong>lub <strong>Właściwości</strong>. Jeśli jesteśmy bardziej zaawansowanymi użytkownikami, możemy także wykorzystać w tym celu linię komend powłoki serwera. W tym celu powinniśmy się z nim połączyć, używając na przykład programu <a href="http://www.chiark.greenend.org.uk/%7Esgtatham/putty/">Putty</a> i wydając polecenie <strong>chmod -R uprawnienia nazwa_katalogu</strong> lub <strong>chmod uprawnienia nazwa_pliku</strong>, zmienić odpowiednie atrybuty. Przykładowe polecenie może więc mieć postać <strong>chmod -R 755 administrator/components</strong>.</td>
</tr>
</tbody>
</table>
<h3>
Dodatkowe informacje</h3>
<p>Instalator zmodyfikowanego polskiego wydania przedstawia ponadto dodatkowe informacje o środowisku serwera. Jeśli któreś z ustawień będzie sygnalizowane kolorem czerwonym, zwróć na nie uwagę administratorowi systemu lub samodzielnie dokonaj zmian. Dla przebiegu instalacji wymienione w tej sekcji błędy nie będą miały znaczenia. Mogą one jednak powodować pewne problemy podczas użytkowania Joomli!.</p>
<p>Po wyświetleniu i zaakceptowaniu licencji będziemy mogli przejść do zasadniczej części procesu instalacyjnego.</p>
<h3>Konfiguracja MySQL-a</h3>
<p>Rozpocznie go konfiguracja przygotowanej wcześniej bazy danych. W oknie <strong>Nazwa hosta</strong> (Host Name) powinniśmy wpisać nazwę komputera, na którym instalujemy Joomlę!. Zwykle wystarczy podać <strong>localhost</strong>. Jeśli konieczne będzie użycie innej nazwy, dowiemy się tego najprawdopodobniej od administratora serwera. W dalszej kolejności pole <strong>Użytkownik MySQL</strong> (MySQL User Name) będzie wymagało podania nazwy użytkownika bazy danych, <strong>Hasło użytkownika MySQL</strong> (MySQL Password) zaś hasła udostępnionego przez administratora serwera.</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut4.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut4.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Panel konfiguracji opcji bazy danych</h5>
<p style="text-align: center;">
<p>Oznaczenie bazy danych podamy w oknie <strong>Nazwa bazy danych MySQL</strong> (MySQL Database Name). Niektórzy dostawcy udostępniają tylko jedną bazę dla wszystkich witryn. W takim wypadku powinniśmy odróżnić nazwy tabel dla kolejnych instalacji Joomli! przyrostkiem nazw tabel, podając go w polu o tej właśnie nazwie (Prefix MySQL table). Domyślną wartością jest <strong>_jos</strong>. Jeśli po raz pierwszy instalujemy Joomlę!, nie powinniśmy niczego zmieniać. Jednak w wypadku, gdy w tej samej bazie znajdują się już tabele pochodzące z wcześniejszej instalacji, możemy zmienić przyrostek na inny. Unikajmy jedynie wartości <strong>old_ </strong>?<strong> </strong>w ten sposób instalator oznacza zarchiwizowane tabele, generując je, jeżeli w trakcie instalacji wybierzemy opcję <strong>Zarchiwizować tabele </strong>(Backup Old Tables). Istniejące tabele można też usunąć, zaznaczając pole <strong>Usunąć istniejące tabele?</strong> (Drop existing tables?) ? pamiętajmy jednak, że raz usuniętych tabel nie da się odzyskać. Jeśli nasze doświadczenie w pracy z Joomlą! jest znikome, powinniśmy jeszcze wybrać opcję <strong>Instaluj przykładowe dane</strong> (Install Sample Data). Na zakończenie instalator poprosi nas o potwierdzenie, że wprowadziliśmy poprawne informacje:</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut5.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut5.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Zakończenie procesu konfiguracji bazy danych</h5>
<p>Następnie program podejmie próbę założenia bazy danych i wypełnienia jej danymi lub tylko przesłania danych, jeśli baza już istnieje. W tym momencie mogą wystąpić błędy. Jeżeli tak się stanie, zostaniemy o tym fakcie poinformowani odpowiednim komunikatem. Powinniśmy przeczytać dokładnie jego treść, a następnie usunąć przyczynę i spróbować wznowić instalację.</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut6.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut6.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Komunikat błędu w trakcie konfiguracji bazy danych</h5>
<p style="text-align: center;">
<h3>Nazwa witryny</h3>
<p>Po pomyślnym utworzeniu bazy danych ukaże się strona, na której wystarczy tylko wprowadzić nazwę witryny:</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut7.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut7.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Definiujemy nazwę witryny</h5>
<p style="text-align: center;">
<p>Pamiętajmy o tym, że podana przez nas nazwa nie powinna być zbyt długa. Optymalnym rozwiązaniem będzie od jednego do trzech wyrazów. Im krótszy i bardziej niepowtarzalny tytuł witryny, tym lepiej. Będzie on bowiem wykorzystywany jako oznaczenie adresata w poczcie elektronicznej rozsyłanej z serwisu, wyświetlany w nagłówku przeglądarki internetowej, a także w innych miejscach.</p>
<h3>
Ważne dane konfiguracyjne</h3>
<p>Na kolejnym etapie instalacji pojawi się panel, w którym będziemy mogli zatwierdzić adres URL i ścieżkę absolutną do katalogu na serwerze zawierającego pliki naszej witryny. W tym miejscu wprowadzimy ponadto dane administratora.</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut8.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut8.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Ustawienia ścieżki i praw do katalogów</h5>
<p style="text-align: center;">
<p>Pierwsze i drugie pole ? <strong>Adres URL</strong> (Site URL) oraz <strong>Ścieżka absolutna</strong> (Path) ? zostanie automatycznie wypełnione treścią przez program instalacyjny. Wygenerowanej zawartości nie należy pod żadnym pozorem zmieniać. Dopiero w polu <strong>Twój email</strong> (Your e-mail) umieszczamy nasz adres poczty elektronicznej. Na podane konto będzie przekazywana <a title="poczta" href="http://home.pl/poczta" target="_blank">poczta</a> przychodząca do witryny. Jeszcze ważniejsze z punktu widzenia przyszłego funkcjonowania serwisu jest zdefiniowanie <strong>Hasła administratora</strong> (Admin password). Powinno być ono złożone z co najmniej sześciu znaków ? zarówno liter, jak i cyfr. Pamiętajmy jednak, że względy bezpieczeństwa sugerują użycie minimum ośmiu znaków. Trudne do rozszyfrowania hasło uchroni nas od przykrych niespodzianek na etapie funkcjonowania serwisu.</p>
<p>Na tym etapie instalacji możemy również zmodyfikować prawa dostępu do plików i katalogów. Zgodnie jednak z treścią komunikatu ekranowego, jeśli nie mamy w tej mierze doświadczenia, powinniśmy pozostawić ustawienia domyślne. Prawa dostępu do plików i katalogów zawsze możemy zmienić, korzystając z funkcji panelu administracyjnego.</p>
<h3>Na finiszu ? nie tylko gratulacje</h3>
<p>Po pomyślnym zakończeniu procesu instalacji zostaniemy nagrodzeni pojawieniem się ekranu z gratulacjami. Zanim jednak zaczniemy świętować, zapoznajmy się jeszcze z umieszczonymi w tym samym panelu szczegółowymi informacjami, dotyczącymi logowania administratora. Jeśli nie ufamy pamięci, zanotujmy je. Skorzystajmy też z dobrej rady i usuńmy katalog instalacyjny lub przynajmniej zmieńmy jego nazwę ? jeżeli tego nie zrobimy, próba uruchomienia strony zakończy się wyświetleniem komunikatu błędu. Kończąc pracę, możemy skorzystać z umieszczonych na stronie przycisków, które przeniosą nas wprost do witryny albo jej zaplecza administracyjnego.</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut9.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut9.jpg" border="0" alt="" width="430" /></a></p>
<h5 style="text-align: center;">Podsumowanie procesu instalacyjnego</h5>
<h2>Tylko dla orłów ? instalacja niestandardowa</h2>
<p>W sprzyjających okolicznościach instalacja Joomli! przebiega bezproblemowo. Jeśli jednak wystąpią nieprzewidziane i trudne do usunięcia problemy ? jak chociażby serwer WWW pracujący w trybie bezpiecznym ? możemy spróbować instalacji ?ręcznej?. Jest to wszakże kręta i niebezpieczna ścieżka, warto więc dobrze się zastanowić, zanim na nią wejdziemy.</p>
<p>Instalacja ?ręczna? polega w skrócie na: utworzeniu wszystkich tabel bazy danych MySQL, założeniu konta głównego administratora serwisu oraz stworzeniu pliku konfiguracyjnego i umieszczeniu go w katalogu instalacyjnym serwisu. Przejście wszystkich tych etapów zajmie nam trochę czasu i będzie od nas wymagało wiedzy nieco większej niż ta, w którą wyposażony jest przeciętny użytkownik Internetu. Zanim jednak przystąpimy do właściwej instalacji, upewnijmy się, że na naszym serwerze funkcjonuje prawidłowo skonfigurowany moduł PHP.</p>
<h3>
Konfiguracja PHP</h3>
<p>Spełnienie trzech warunków jest dla funkcjonowania Joomli! niezbędne: aktywna obsługa <a href="http://pl.wikipedia.org/wiki/XML">XML-a</a>, biblioteki <a href="http://pl.wikipedia.org/wiki/Zlib">zlib</a> oraz biblioteki <a href="http://pl.wikipedia.org/wiki/GD">GD</a> lub GD2. Bez włączonej obsługi <a href="http://pl.wikipedia.org/wiki/XML">XML-a</a> Joomla! nie będzie działała. Skrypty XML zawierają między innymi instrukcje konfigurujące pozycje menu, komponenty, moduły, boty i szablony. Biblioteka <a href="http://pl.wikipedia.org/wiki/Zlib">zlib</a> umożliwia kompresję i dekompresję spakowanych plików. Można się wprawdzie bez tej funkcji obyć, ale jej brak stanowi poważne utrudnienie, wszystkie rozszerzenia trzeba bowiem instalować z rozpakowanych i przesłanych na serwer pakietów źródłowych. Niemożliwe jest również korzystanie z funkcji komponentów obsługujących serwisy plików czy galerie grafik. <a href="http://pl.wikipedia.org/wiki/GD">GD</a> jest z kolei biblioteką graficzną, umożliwiającą manipulację obrazami ? między innymi dynamiczne tworzenie miniatur ? co również okaże się niezbędne, jeśli w pełni będziemy chcieli wykorzystać możliwości systemu. Pozostałe ustawienia PHP, wpływające na funkcjonowanie systemu Joomla!, można podzielić na istotne i pożądane. W takiej też kolejności są one opisane poniżej.</p>
<h3>
Istotne ustawienia PHP</h3>
<h3>
Wyłączony tryb bezpieczny</h3>
<p>Obsługa Joomli! wymaga PHP z wyłączonym trybem bezpiecznym (<strong>safe_mode=OFF</strong>). Tryb bezpieczny ogranicza bowiem wykonywanie skryptów PHP, co jest niezwykle uciążliwe dla administratorów Joomli!, szczególnie w okresie tworzenia zrębów witryny. Niemożliwe okazuje się instalowanie rozszerzeń: komponentów, modułów, botów, szablonów, a dokładniej ? utworzenie katalogów niezbędnych do zainstalowania nowego składnika. W skonfigurowanej Joomli! włączony tryb bezpieczny również stwarza kłopoty przy wczytywaniu plików, na przykład do biblioteki mediów czy serwisu plików. W związku z tym na serwerach z włączonym trybem bezpiecznym najlepiej nie instalować Joomli!, bo szanse na przekonanie administratora, by tę opcję wyłączył, są raczej niewielkie. Jeśli jednak musimy korzystać z takiego serwera, warto poszukać w zasobach Joomli! <a href="http://www.joomla.pl/index.php/index.php/component/option,com_remository/Itemid,15/func,select/id,8/">specjalnej łatki</a> eliminującej problem włączonego <strong>safe_mode</strong>.</p>
<h3>
Wyłączenie rejestracji zmiennych globalnych</h3>
<p>Bezpieczeństwo witryny Joomli! wymaga wyłączenia rejestracji zmiennych globalnych przez ustawienie opcji <strong>register_globals=0</strong>. Dyrektywa ta wyłącza rejestrowanie zmiennych, takich jak Environment, GET, POST, COOKIE i Server. Ustawienie parametru <strong>register_globals=ON</strong> stwarza zagrożenie w wypadku źle napisanych skryptów, zawierających na przykład niewłaściwe konstrukcje pętli i warunków. Powoduje to, że wszystkie zmienne wysyłane do skryptu tworzone są jako globalne i nadpisują wcześniej ustalone wartości tych zmiennych lub generują zmienne jeszcze nieistniejące, ale wykorzystywane później w skrypcie. Tę sytuację mogą wykorzystać początkujący pseudohakerzy, aby na przykład oszukać procedurę autoryzacji. W Joomli! dostęp do zmiennych globalnych realizowany jest za pomocą składni typu <strong>$HTTP_GET_VARS['zmienna']</strong>, toteż włączanie opcji <strong>register_globals</strong> jest zbędne. Jej wyłączenie spowoduje natomiast, że PHP nie utworzy żadnych zmiennych globalnych niezdefiniowanych wprost w skrypcie. Jeśli opcja <strong>register_globals</strong> jest włączona, a nie jest konieczna z jakichkolwiek innych powodów, można ją lokalnie wyłączyć na serwerze, dla katalogu witryny. Wystarczy w pliku .htaccess wpisać wiersz postaci: <strong>php_flag register_globals 0</strong>.</p>
<h3>
Włączone wyświetlanie błędów</h3>
<p>Możliwość poznania przyczyn błędów w działaniu skryptów jest administratorom Joomli! niezbędna. Wyświetlanie komunikatów o błędach zapewnia opcja <strong>display_errors=ON</strong>. Włączenie tej opcji stwarza jednak pewne zagrożenia. Wszak komunikaty o błędach zawierają między innymi pełne ścieżki do plików, wersje oprogramowania czy fragmenty zapytań SQL, które przy odrobinie złych chęci można złośliwie wykorzystać. Na szczęście Joomla! umożliwia wyłączenie wyświetlania komunikatów o błędach w opcjach konfiguracji globalnej. Warto o tym pamiętać po wstępnym przetestowaniu działania systemu.</p>
<h3>
Możliwe wczytywanie plików</h3>
<p>Joomla! wymaga instalacji PHP z włączoną możliwością wczytywania plików binarnych, wysyłanych metodą POST. Konieczne jest więc zdefiniowanie dyrektywy <strong>file_uploads</strong>. Bez takiego ustawienia nie będzie możliwe ani instalowanie rozszerzeń, ani przesyłanie plików do biblioteki mediów czy komponentu obsługującego udostępnianie dokumentów.</p>
<h3>
Cytowanie znaków niebezpiecznych</h3>
<p>Trzy ustawienia PHP odpowiadają za istotne dla funkcjonowania systemu Joomla! cytowanie znaków niebezpiecznych. Są to: <strong>magic_quotes=ON</strong>, <strong>magic_quotes_gpc=ON </strong>oraz <strong>magic_quotes_runtime=ON</strong>. Przy stanie <strong>magic_quotes=ON</strong> wszystkie znaki apostrofu (&#8217;), cudzysłowu (&#8221;), lewe ukośniki (\) oraz znaki NULL poprzedzane są znakami lewego ukośnika (\). Włączenie ?magicznych ukośników? chroni Joomlę! przed atakami typu SQL Injection, w wypadku gdy programista zapomni przefiltrować dane przesyłane przez użytkowników w formularzach. Z kolei przy włączonej opcji <strong>magic_quotes_gpc</strong> interpreter PHP automatycznie dodaje lewy ukośnik do wszystkich operacji posługujących się zmiennymi z tablic superglobalnych (POST, GET, COOKIE), wykonując wcześniej funkcję <strong>addslashes()</strong>. Dyrektywa <strong>magic_quotes_runtime</strong> ma natomiast wpływ tylko na niektóre funkcje wykonujące i niewykonujące operacji <strong>addslashes()</strong>, takie jak: <strong>file()</strong>, <strong>file_get_contents()</strong>, <strong>fread()</strong>, <strong>fgets() </strong>oraz <strong>readfile()</strong>, <strong>parse_ini_file()</strong>, <strong>fgetss()</strong>, <strong>fgetc()</strong>, <strong>fgetcsv()</strong> i <strong>fscanf()</strong>. Po jej włączeniu większość funkcji, które zwracają dane z dowolnych zewnętrznych źródeł, włącznie z danymi z baz danych i plików tekstowych, będzie dostarczała te informacje zaopatrzone w apostrofy i cudzysłowy, poprzedzone znakiem lewego ukośnika (\).</p>
<h3>
Buforowanie danych wyjściowych</h3>
<p>Opcja <strong>output_buffering</strong> jest domyślnie, zgodnie z zaleceniami dla Joomli!, wyłączona. Włączenie jej spowoduje, że żadna informacja z serwera nie zostanie wysłana do przeglądarki do momentu zakończenia skryptu. Zapobiegnie to na przykład przesłaniu nagłówka dokumentu wynikowego, zanim zostaną dostarczone ciasteczka (cookies).</p>
<h3>
Automatyczny start sesji</h3>
<p>Ustawieniem istotnym z punktu widzenia działania systemu Joomla! jest dyrektywa postaci <strong>session_auto_start=0</strong>. HTTP to, jak wiadomo, protokół bezstanowy. Dopóki mamy do czynienia z anonimowymi użytkownikami witryny, nie ma to znaczenia. Ale w wypadku użytkowników zalogowanych, a zwłaszcza administratorów, niezbędny jest mechanizm śledzenia ich zachowań. Rolę taką spełnia kontrola sesji.</p>
<p>Identyfikator sesji może być przechowywany w plikach cookies lub przekazywany przez URL. Jeśli aktywna jest opcja <strong>session_auto_start=ON</strong> lub <strong>session.use_cookies setting=OFF</strong>, nie będzie możliwe zalogowanie się do witryny ani do panelu administracyjnego. Należy więc te parametry skorygować.</p>
<h3>
Pożądane ustawienia PHP</h3>
<h3>
Włączone otwieranie plików na serwerze</h3>
<p>Wyrażenie postaci <strong>allow_url_fopen</strong> umożliwia wykorzystanie funkcji <strong>fopen() </strong>dla uzyskania dostępu do plików na dysku lokalnym serwera z serwera zdalnego, przez podanie adresu URL i z użyciem protokołów HTTP i FTP. Jeśli <strong>allow_url_fopen</strong> zostanie wyłączone, niemożliwa będzie między innymi automatyczna aktualizacja rozszerzeń zawierających taką opcję. Niestety, ustawienie to może być wykorzystane także w celu ataku na serwer. Powoduje ono bowiem, że w takich funkcjach, jak <strong>fopen()</strong>, <strong>include()</strong> czy <strong>require()</strong>, dozwolone staje się używanie adresów URL podobnie jak nazw plików. A to może nas narazić na wiele problemów: włamanie do serwisu, blokadę serwera WWW czy choćby znaczne spowolnienie procesu generowania strony. Chociaż więc ustawienie <strong>allow_url_fopen=ON</strong> ułatwia pracę administratorowi, specjaliści od bezpieczeństwa Joomli! przekonują do rezygnacji z niego. Dokonując wyboru, pamiętajmy także, że ze względów bezpieczeństwa włączenie i wyłączenie tej funkcji jest możliwe jedynie przez edycję treści pliku <strong>php.ini</strong>.</p>
<h3>
Maksymalny rozmiar przesyłanych plików</h3>
<p>Dwa istotne ustawienia decydują o dopuszczalnych rozmiarach plików przesyłanych na serwer. Są to <strong>upload_max_file_size</strong>, definiujące maksymalny dopuszczalny rozmiar wczytywanych plików, oraz <strong>post_max_size</strong>, określające maksymalny rozmiar danych przesyłanych metodą POST. Odpowiednie ustawienie tych parametrów zależy bezpośrednio od potrzeb naszej witryny. Standardowo administratorzy zezwalają na wczytywanie plików o rozmiarach do 8 MB. Jeśli nasze potrzeby są większe, musimy zwrócić się do administratora z prośbą o zmianę tej wartości. Rozmiar określony dla <strong>post_max_size</strong> powinien być przy tym większy, na przykład o jeden, od odpowiedniego atrybutu opcji <strong>upload_max_file_size</strong>.</p>
<h3>
Czas wykonywania skryptów</h3>
<p>Maksymalny czas wykonywania skryptów określany jest standardowo dyrektywą <strong>max_execution_time=30</strong>. Jeśli po upływie tego czasu skrypt nie zostanie wykonany, jego działanie jest przerywane. Te standardowe 30 sekund jest powinno nam w zupełności wystarczyć ? pamiętajmy bowiem, że ustawienie to chroni przed blokowaniem serwera przez źle napisane skrypty. Jeżeli więc staje się ono powodem błędu, należy przede wszystkim odszukać wadliwy skrypt i albo go poprawić, albo zrezygnować z niego, zastępując innym rozwiązaniem.</p>
<h3>
Czas oczekiwania na przesłanie danych</h3>
<p>Maksymalny czas oczekiwania na przesłanie strumienia danych ze źródła zależy od dyrektywy <strong>default_socket_timeout</strong>. Najczęściej spotykanym jest ustawienie <strong>default_socket_timeout=0</strong>. Jeśli stwarza ono problemy w funkcjonowaniu witryny, można się zwrócić do administratora o jego modyfikację do postaci <strong>default_socket_timeout=30</strong>.</p>
<h3>
Krótkie znaczniki</h3>
<p>Ustawienie <strong>short_open_tag</strong> decyduje o możliwości stosowania w skryptach skróconej formy znaczników otwierających ? postaci <strong>&lt;? </strong>zamiast <strong>&lt;?php</strong>. Ponieważ Joomla! używa PHP w połączeniu z XML-em, opcja ta winna być wyłączona (<strong>short_open_tag=0</strong>). Zdarza się jednak, że jest ona aktywna. W efekcie mogą pojawiać się różnego typu błędy, gdy interpreter PHP napotka skrócone znaczniki otwierające. W takich wypadkach najczęściej zatrzymywane jest wykonywanie skryptu, niekiedy także wyświetlany jest jego kod. Jeśli prośba do administratora o zmianę tego ustawienia nie przyniesie rezultatu, nie wpadajmy w panikę. Wystarczy przejrzeć skrypty rozszerzenia, które sprawia kłopoty, wyszukać w nich sekwencje <strong>&lt;?</strong> i zastąpić je tekstem postaci <strong>&lt;?php</strong>.</p>
<h3><strong><br />
Uwaga końcowa</strong></h3>
<p>Podsumowując zestawienie opcji PHP istotnych dla funkcjonowania Joomli!, warto przypomnieć, że niektóre ustawienia możemy zmodyfikować we własnym zakresie, także przy użyciu dyrektyw zawartych w pliku .htaccess, umieszczonym w katalogu głównym. Przykładową treść tego pliku, która pozwoli nam uporać się z możliwymi problemami, prezentuje poniższy listing:</p>
<table border="1">
<tbody>
<tr>
<td># Wyświetlaj błędy</p>
<p>php_flag display_errors on</p>
<p># Wyłącz rejestrowanie zmiennych globalnych</p>
<p>php_flag register_globals off</p>
<p># Wyłącz interpretowanie</p>
<p># krótkich znaczników</p>
<p>php_flag short_open_tag off</p>
<p>#Przełącz na obsługę przez PHP4</p>
<p>SetEnv PHP_VER 4</td>
</tr>
<tr>
<td>Listing 1 ? Przykładowa treść pliku .htaccess.</td>
</tr>
</tbody>
</table>
<p>Jeśli nie jesteśmy pewni, czy możemy zmienić konkretne ustawienie globalne serwera dyrektywą w pliku .htaccess, zapytajmy o to jego administratora. Możemy go również poprosić o radę w kwestii sformułowania odpowiedniej dyrektywy.</p>
<h3>Zakładamy bazę danych</h3>
<p>Jeżeli jesteśmy już pewni, że na naszym serwerze funkcjonuje odpowiednio skonfigurowany moduł PHP, możemy przejść do właściwej instalacji. Dla prawidłowego funkcjonowania Joomli! niezbędna jest baza danych. PHP, w którym napisana jest Joomla!, umożliwia integrację z wieloma systemami baz danych. Ale Joomla! w wersji 1.0.x może współpracować tylko z bazą danych MySQL w wersji co najmniej 3.23.x. Upewnijmy się, że nasz dostawca usług hostingowych zapewnia możliwość skorzystania z tego typu bazy. Powinniśmy od niego uzyskać jej nazwę oraz nazwę i hasło konta użytkownika ? te dane będą niezbędne do prawidłowego przeprowadzenia procesu instalacji.</p>
<p>Na komputerze lokalnym ? w domu lub sieci firmowej ? instalator automatycznie zakłada bazę danych. Może się jednak zdarzyć, że bez uprzedniego założenia bazy instalacja się nie powiedzie. W takim wypadku pozostanie nam samodzielne działanie z wykorzystaniem dowolnego programu obsługi bazy, na przykład phpMyAdmina albo poleceń linii komend systemu operacyjnego.</p>
<h3>
Zakładanie bazy danych za pomocą programu phpMyAdmin</h3>
<p>Na początku powinniśmy uruchomić program, wpisując w Pasku adresu przeglądarki na przykład <strong>http://localhost/phMyAdmin</strong>. W polu Utworzenie nowej bazy danych (Create New DataBase) definiujemy następnie własną nazwę bazy i klikamy Utworzenie (Create).</p>
<p style="text-align: center;"><a href="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut10.jpg"><img src="http://webhosting.pl/files/groups/editors/kursy/Joomla/Czesc1/zrzut10.jpg" border="0" alt="" width="430" /></a></p>
<p style="text-align: center;">Tworzenie konta użytkownika bazy danych.</p>
<p>W dalszej kolejności tworzymy konto użytkownika, klikając odnośnik Dodanie nowego użytkownika i określając jego nazwę, nazwę hosta (localhost), hasło oraz przywileje. Na dostępnej liście uprawnień powinniśmy zaznaczyć wartości SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE oraz DROP. Po zatwierdzeniu wprowadzonych zmian będziemy już mogli korzystać z utworzonej bazy danych.</p>
<h3>
Zakładanie bazy danych przy użyciu linii komend</h3>
<p>Aby utworzyć nową bazę danych MySQL, korzystając z linii komend systemu operacyjnego, powinniśmy po pierwsze zalogować się do serwera bazodanowego, wydając polecenie postaci <strong>mysql -h nazwa_komputera -u identyfikator_uzytkownika -p</strong>. Zostaniemy poproszeni o podanie hasła, a po jego wprowadzeniu i zatwierdzeniu powinniśmy ujrzeć komunikat zbliżony do podanego w poniższym listingu:</p>
<table border="1">
<tbody>
<tr>
<td>Welcome to the MySQL monitor.</p>
<p>Commands end with ; or g.</p>
<p>Your MySQL connection id is 1 to server version: 3.23.49-shareware-debug</p>
<p>Type &#8216;help;&#8217; or &#8216;\h&#8217; for help.</p>
<p>Type &#8216;\c&#8217; to clear the buffer.mysql</td>
</tr>
<tr>
<td>Listing 2 ? Komunikat powitalny MySQL-a.</td>
</tr>
</tbody>
</table>
<p>Skoro wszystko poszło dobrze, wydajmy teraz komendę postaci <strong>mysql&gt; create database nazwa_bazy</strong>,<strong> </strong>aby utworzyć nową bazę danych. Następnie, wpisując polecenie <strong>mysql&gt; show databases</strong>,<strong> </strong>sprawdzimy, czy operacja się powiodła. Jeśli tak, komunikat wyjściowy powinien przypominać przedstawiony w poniższym listingu:</p>
<table border="1">
<tbody>
<tr>
<td>+&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+</p>
<p>| Database        |</p>
<p>+&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+</p>
<p>| nazwa_bazy     |</p>
<p>| mysql             |</p>
<p>| test                |</p>
<p>+&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+</p>
<p>5 rows in set (0.00 sec)</td>
</tr>
<tr>
<td>Listing 3 ? Komunikat potwierdzający istnienie bazy danych.</td>
</tr>
</tbody>
</table>
<p>Teraz musimy jeszcze tylko utworzyć konto użytkownika bazy danych i nadać mu odpowiednie uprawnienia. Wpisujemy więc w jednej linii:</p>
<table style="height: 44px;" border="1" width="520">
<tbody>
<tr>
<td>mysql&gt; GRANT ALL PRIVILEGES ON nazwa_bazy.* TO nazwa_uzytkownika@localhost IDENTIFIED BY &#8216;haslo_uzytkownika&#8217;;</td>
</tr>
<tr>
<td>Listing 4 ? Tworzymy konto użytkownika bazy danych.</td>
</tr>
</tbody>
</table>
<p>Jeśli otrzymamy odpowiedź postaci <strong>Query OK</strong>, będzie to oznaczało, że cały proces tworzenia bazy danych został pomyślnie zakończony.</p>
<h3>
Przygotowanie plików z kwerendami</h3>
<p>Po zainstalowaniu bazy danych musimy jeszcze utworzyć pliki z kwerendami, które odpowiadają za generowanie tabel, gdzie będą zgrupowane informacje. Pliki kwerend znajdują się w pakiecie instalacyjnym, w katalogu <strong>installation/sql</strong>. Ich właściwości ilustruje poniższa tabela:</p>
<table style="height: 125px;" border="1" width="528">
<tbody>
<tr>
<td>Pliki kwerend w pakiecie instalacyjnym Joomli!</td>
</tr>
<tr>
<td>
<ul>
<li>joomla.sql ? zawiera wszystkie niezbędne do działania Joomli! tabele z danymi w języku angielskim,</li>
<li>joomla_polish.sql ? zawiera wszystkie niezbędne do działania Joomli! tabele z danymi w języku polskim,</li>
<li>sample_data.sql ? zawiera przykładowe dane w języku angielskim,</li>
<li>sample_polish_data.sql ? zawiera przykładowe dane w języku polskim,</li>
<li>drop_table.sql ? zawiera kwerendę usuwającą tabele po poprzedniej instalacji, na przykład zakończonej niepowodzeniem.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>Gdy proces instalacji przeprowadzany jest automatycznie, program zakłada tabele bazy danych ze standardowym dla Joomli! przedrostkiem <strong>jos_</strong>. W plikach kwerend w miejscu przedrostka są znaki <strong>#__</strong>. Musimy więc zmienić ten przedrostek na <strong>jos_</strong> we wszystkich plikach, których będziemy używali. W tym celu wystarczy, jeśli przed przesłaniem plików z kwerendami na serwer skorzystamy z funkcji Znajdź/Zamień w dowolnym edytorze tekstu, zachowującym pierwotne kodowanie znaków. W pierwszej kolejności powinniśmy przygotować do umieszczenia na serwerze plik <strong>joomla.sql</strong>, aby móc od razu założyć konto administratora. Musimy w nim umieścić dodatkowe linie tekstu, przedstawione w poniższym listingu:</p>
<table style="height: 122px;" border="1" width="526">
<tbody>
<tr>
<td>INSERT INTO mos_users VALUES (62, &#8216;Administrator&#8217;, &#8216;admin&#8217;, &#8216;twojadres@twojastrona.com&#8217;, &#8216;21232f297a57a5a743894a0e4a801fc3&#8242;, &#8216;Super Administrator&#8217;, 0, 1, 25, &#8216;2005-01-01 00:00:00&#8242;, &#8216;0000-00-00 00:00:00&#8242;, &#8221;, &#8221;);</p>
<p>INSERT INTO `mos_core_acl_aro` VALUES (62,&#8217;users&#8217;,'62&#8242;,0,&#8217;Administrator&#8217;,0);</p>
<p>INSERT INTO `mos_core_acl_groups_aro_map` VALUES (25,&#8221;,62);</td>
</tr>
<tr>
<td>Listing 5 ? Edycja pliku joomla.sql.</td>
</tr>
</tbody>
</table>
<h3>
Wykonanie kwerend</h3>
<p>Jeżeli przygotowaliśmy zgodnie z powyższymi wskazówkami pliki kwerend, możemy przystąpić do umieszczenia w bazie tabel z danymi. Najpierw jednak zdecydujmy, czy chcemy usunąć z bazy tabele pozostałe po poprzedniej instalacji pakietu oraz czy nowe tabele zamierzamy wypełnić przykładowymi danymi czy też nie. W pierwszym wypadku powinniśmy w linii komend wydać komendę postaci <strong>mysql -unazwa_uzytkownika -phaslo nazwa_twojej_bazy_joomla &lt; drop_table.sql</strong>. Aby utworzyć nowe tabele, zaimportujemy z kolei plik <strong>joomla.sql</strong>, wpisując polecenie <strong>mysql -unazwa_uzytkownika -phaslo nazwa_twojej_bazy_joomla &lt; joomla.sql</strong>. I w końcu, gdy zdecydowaliśmy się na opcję wczytania przykładowych danych, użyjemy komendy <strong>mysql -unazwa_uzytkownika -phaslo nazwa_twojej_bazy_joomla &lt; sample_data.sql</strong>. Oczywiście wszystkie podane przykłady poleceń powinniśmy dostosować do naszych warunków, podając nazwę bazy danych, użytkownika i hasło.</p>
<h3>Ustawienia konfiguracyjne</h3>
<p>?Manualną? instalację Joomli! zakończymy, kopiując treść pliku konfiguracyjnego <strong>configuration.php-dist</strong> do pliku <strong>configuration.php</strong> w głównym katalogu systemu. Powinniśmy również zmienić zawartość tego ostatniego, tak aby dostosować ją do naszych warunków. Podajemy więc nazwę hosta ? zwykle <strong>localhost</strong>, nazwę użytkownika bazy danych, hasło dostępu, adres ścieżki absolutnej oraz URL witryny. Treść przykładowego pliku <strong>configuration.php</strong> wraz ze szczegółowym opisem zaprezentowana jest w poniższym listingu:</p>
<table style="height: 2169px;" border="1" width="525">
<tbody>
<tr>
<td>&lt;?php</p>
<p>/**</p>
<p>* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>* Sekcja konfiguracji bazy danych</p>
<p>* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>*/</p>
<p>$mosConfig_host=&#8217;localhost&#8217;; // Adres serwera bazy danych MySQL,</p>
<p>// np. &#8216;localhost&#8217; lub &#8217;sql.nazwafirmy.pl&#8217;</p>
<p>$mosConfig_user=&#8217;twojaNazwa&#8217;; // Login do bazy danych MySQL</p>
<p>$mosConfig_password=&#8217;twojeHaslo&#8217;; // Hasło do bazy danych MySQL</p>
<p>$mosConfig_db=&#8217;nazwaBD&#8217;; // Nazwa bazy danych MySQL</p>
<p>$mosConfig_dbprefix=&#8217;jos_&#8217;; // Przedrostek nazw tabel</p>
<p>/**</p>
<p>* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>* Sekcja konfiguracji serwisu</p>
<p>* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>*/</p>
<p>$mosConfig_absolute_path=&#8217;/sciezka/joomla&#8217;; // Ścieżka absolutna</p>
<p>$mosConfig_admin_expired=&#8217;3&#8242;; // Poziom autoryzacji sesji</p>
<p>$mosConfig_alang=&#8217;polish&#8217;; // Język zaplecza administracyjnego</p>
<p>$mosConfig_allowUserRegistration=&#8217;1&#8242;; // 1: Rejestracja użytkowników</p>
<p>$mosConfig_back_button=&#8217;1&#8242;; // 1: Pokaż przycisk &#8220;Wstecz&#8221;; 0: Ukryj</p>
<p>$mosConfig_cachepath=&#8217;/sciezka/joomla/cache&#8217;; // Folder pamięci tymczasowej</p>
<p>$mosConfig_cachetime=&#8217;900&#8242;; // Czas przechowywania danych w pamięci podręcznej</p>
<p>$mosConfig_caching=&#8217;1&#8242;; // 1: Włącz tymczasową pamięć podręczną</p>
<p>$mosConfig_debug=&#8217;0&#8242;; // &#8216;1&#8242;: Tryb diagnostyczny</p>
<p>$mosConfig_dirperms=&#8217;0755&#8242;; // Prawa do katalogów</p>
<p>$mosConfig_editor=&#8217;tinymce&#8217;; // Domyślny edytor tekstu</p>
<p>$mosConfig_enable_log_items=&#8217;0&#8242;; // 1: Prowadź dziennik ? statystykę odsłon</p>
<p>$mosConfig_enable_log_searches=&#8217;0&#8242;; // 1: Prowadź dziennik ? statystykę wyszukiwania</p>
<p>$mosConfig_enable_stats=&#8217;0&#8242;; // 1: Prowadź dziennik ? statystykę wizyt</p>
<p>$mosConfig_error_message=&#8217;Błąd połączenia&#8217;; // Komunikat błędu systemowego</p>
<p>$mosConfig_error_reporting=-1; // Poziom raportowania uwag i błędów</p>
<p>$mosConfig_favicon=&#8217;favicon.ico&#8217;; // Nazwa pliku ikony serwisu</p>
<p>$mosConfig_fileperms=&#8217;0644&#8242;; // Prawa do plików</p>
<p>$mosConfig_fromname=&#8217;Joomla PL&#8217;; // Nazwa nadawcy poczty</p>
<p>$mosConfig_frontend_login=&#8217;1&#8242;; // Logowanie na stronie frontowej</p>
<p>$mosConfig_frontend_userparams=&#8217;1&#8242;; // Parametry interfejsu redakcyjnego</p>
<p>// strony frontowej (włączenie edytora)</p>
<p>$mosConfig_gzip=&#8217;0&#8242;; // 1: Włącz kompresję GZIP; &#8216;0&#8242;: Wyłącz</p>
<p>$mosConfig_helpurl=&#8217;http://www.joomla.pl/pomoc&#8217;; // Adres serwera Pomocy</p>
<p>$mosConfig_hideAuthor=&#8217;0&#8242;; // 1: Pokaż autora; 0 Ukryj</p>
<p>$mosConfig_hideCreateDate=&#8217;0&#8242;; // 1: Pokaż datę utworzenia artykułu; 0: Ukryj</p>
<p>$mosConfig_hidee-mail=&#8217;0&#8242;; // 1: Pokaż przycisk Poleć znajomemu; 0: Ukryj</p>
<p>$mosConfig_hideModifyDate=&#8217;0&#8242;; // 1: Pokaż datę modyfikacji artykułu; 0: Ukryj</p>
<p>$mosConfig_hidePdf=&#8217;0&#8242;; // 1: Pokaż przycisk PDF; 0: Ukryj</p>
<p>$mosConfig_hidePrint=&#8217;0&#8242;; // 1: Pokaż przycisk Drukuj; 0: Ukryj</p>
<p>$mosConfig_hits=&#8217;1&#8242;; // 1: Pokaż liczbę odsłon; 0: Ukryj</p>
<p>$mosConfig_icons=&#8217;1&#8242;; // 1: ikony PDF, Drukuj, e-mail; 0: tekst</p>
<p>$mosConfig_item_navigation=&#8217;1&#8242;; // 1: Pokaż pasek nawigacji; 0: Ukryj</p>
<p>$mosConfig_lang=&#8217;polish&#8217;; // Jezyk witryny ? strona frontowa</p>
<p>$mosConfig_lifetime=&#8217;900&#8242;; // Maks. czas bezczynności użytkownika</p>
<p>// podczas sesji ? w sekundach</p>
<p>$mosConfig_link_titles=&#8217;0&#8242;; // 1: Tytuły łączami</p>
<p>$mosConfig_list_limit=&#8217;30&#8242;; // Liczba pozycji w listach</p>
<p>$mosConfig_live_site=&#8217;http://domena.com&#8217;; // Adres witryny</p>
<p>$mosConfig_locale=&#8217;pl_PL&#8217;; // Lokalizacja ? kod kraju</p>
<p>$mosConfig_mailer=&#8217;mail&#8217;; // Sposób obsługi poczty</p>
<p>$mosConfig_mailfrom=&#8217;admin@ domena.com&#8217;; // Adres nadawcy poczty</p>
<p>$mosConfig_MetaAuthor=&#8217;1&#8242;; // 1: Nazwę autora do metadanych; 0: Nie wpisuj</p>
<p>$mosConfig_MetaDesc=&#8217;Joomla &#8211; portal&#8217;; // 1: Opis witryny w metadanych; 0: Nie wpisuj</p>
<p>$mosConfig_MetaKeys=&#8217;joomla,Joomla,CMS&#8217;; // 1: Słowa kluczowe w metadanych; 0: //Nie wpisuj</p>
<p>$mosConfig_MetaTitle=&#8217;1&#8242;; // 1: Tytuł strony do metadanych; 0: Nie wpisuj</p>
<p>$mosConfig_ml_content=&#8217;0&#8242;; // 1: Włącz wielojęzyczność ? nieużywane w 1.0</p>
<p>$mosConfig_multipage_toc=&#8217;0&#8242;; // 1: Spisy treści artykułów wielostronicowych</p>
<p>$mosConfig_offline=&#8217;0&#8242;; // 0: serwis włączony, 1: serwis wyłączony</p>
<p>$mosConfig_offline_message=&#8217;Witryna&#8230;&#8217;; // Komunikat administracyjny</p>
<p>$mosConfig_offset=&#8217;0&#8242;; // Przesunięcie czasowe serwera</p>
<p>$mosConfig_offset_user=&#8217;0&#8242;; // Przesunięcie czasowe użytkowników</p>
<p>$mosConfig_pagetitles=&#8217;1&#8242;; // Włącz/Nie dynamiczną zmianę tytułów stron</p>
<p>$mosConfig_readmore=&#8217;1&#8242;; // 1: Pokaż przycisk &#8220;Czytaj całość&#8221;; 0: Ukryj</p>
<p>$mosConfig_secret=&#8217;FBVtggIk5lAzEU9H&#8217;; // Słowo ? szyfr, unikatowy identyfikator</p>
<p>$mosConfig_sef=&#8217;0&#8242;; // 1: Włącz optymalizację SEF; 0: Wyłącz</p>
<p>$mosConfig_sendmail=&#8217;/usr/sbin/sendmail&#8217;; // Katalog programu sendmail</p>
<p>$mosConfig_session_life_admin=&#8217;1800&#8242;; // Maks. czas bezczynności administratora</p>
<p>// podczas sesji ? w sekundach</p>
<p>$mosConfig_shownoauth=&#8217;0&#8242;; // 1: Pokaż niezalogowanym linki; 0: Ukryj</p>
<p>$mosConfig_sitename=&#8217;Joomla&#8217;; // Nazwa witryny</p>
<p>$mosConfig_smtpauth=&#8217;0&#8242;; // 1: Serwer SMTP wymaga autoryzacji; 0: Nie</p>
<p>$mosConfig_smtphost=&#8217;localhost&#8217;; // Adres serwera SMTP</p>
<p>$mosConfig_smtppass=&#8217;haslo&#8217;; // Hasło serwera SMTP</p>
<p>$mosConfig_smtpuser=&#8217;jakas_nazwa&#8217;; // Nazwa użytkownika serwera SMTP</p>
<p>$mosConfig_unique-mail=&#8217;1&#8242;; // 1: Tylko unikatowe adresy e-mailowe użytkowników</p>
<p>$mosConfig_useractivation=&#8217;1&#8242;; // 1: Aktywu konta użytkowników; 0: bez aktywacji</p>
<p>$mosConfig_vote=&#8217;0&#8242;; // 1: Włącz ocenianie artykułów; 0: Wyłącz</p>
<p>setlocale (LC_ALL, $mosConfig_locale); // Kod regionalny</td>
</tr>
<tr>
<td>Listing 6 ? Przykładowa zawartość pliku configuration.php wraz z opisem.</p>
<p>Nie musimy oczywiście edytować wszystkich ustawień. Wystarczy, że zajmiemy się wymienionymi powyżej opcjami podstawowymi. Resztę będziemy mogli dostosować do naszych potrzeb po uruchomieniu systemu, z poziomu panelu administracyjnego.</p>
<p>W tym miejscu warto przypomnieć, że blisko 80% problemów z instalacją Joomli! ma swoje źródło w niepoprawnie zdefiniowanej ścieżce absolutnej. Najogólniej mówiąc, ścieżka absolutna rozpoczyna się od katalogu nadrzędnego, gdzie znajduje się katalog <strong>www</strong> (w dystrybucjach Linuksa najczęściej jest to katalog <strong>var</strong>), a kończy na nazwie katalogu, w którym znajdują się wszystkie pliki systemu. Przykładowa ścieżka może więc mieć postać: <strong>/var/www/mojawitryna</strong>. Zwróćmy uwagę, że nie kończy się ona znakiem prawego ukośnika (slash).</p>
<h3>
Logowanie do panelu administracyjnego</h3>
<p>Jeśli wszystkie czynności wykonaliśmy poprawnie i ustawiliśmy, stosując się przedstawionych wcześniej wskazówek, prawa dostępu do plików na serwerze, możemy teraz zalogować się do systemu Joomla!. W tym celu w Pasku adresu przeglądarki wpisujemy: <strong>http://www.twojawitryna.com/administrator/ </strong>i podajemy ustalone wcześniej login oraz hasło. Jeżeli mimo wszystko logowanie się nie powiedzie, powinniśmy poprawić całą linię zawierającą zmienną <strong>$mosConfig_secret</strong> w pliku <strong>configuration.php</strong> na następujący wpis: <strong>$mosConfig_secret = &#8216;C5pzpdF5klKJvUBN&#8217;;</strong>.<strong> </strong>Jeśli i to nie poskutkuje, zarejestrujmy się w swoim serwisie, a następnie, korzystając z phpMyAdmina, zamieńmy hasło administratora na to, które podaliśmy podczas rejestracji. Po finalnym uruchomieniu panelu administracyjnego pamiętajmy jeszcze o tym, by zmienić adres e-mailowy administratora na poprawny. Dzięki temu będziemy otrzymywali automatycznie wszystkie e-maile generowane przez system. Dla pewności zdefiniujmy też nową nazwę użytkownika oraz hasło.</p>
<h2>
Zakończenie</h2>
<p>Proces ręcznej instalacji może odstraszyć początkujących użytkowników, pamiętajmy jednak, że w ogromnej większości wypadków rozpoczęcie pracy z systemem będzie wymagało jedynie użycia automatycznego instalatora. Z jego pomocą uruchomienie własnego serwisu opartego na Joomli! okaże się niezwykle łatwe. Oczywiście instalacja ? automatyczna czy ?ręczna? ? to dopiero pierwszy krok na drodze do sukcesu. Dlatego w kolejnej części kursu zajmiemy się omówieniem podstawowych funkcji administracyjnych systemu Joomla!.</p>
<p><em>źródło: webhosting.pl</em></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://elearning.media.pl/index.php/2009/11/27/kurs-systemu-zarzadzania-trescia-joomla-czesc-pierwsza-instalacja/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Daj nam 3 tygodnie a nauczymy Cię jak robić profesjonalne strony www Warszawa 11-29.01.2010</title>
		<link>http://elearning.media.pl/index.php/2009/11/23/daj-nam-3-tygodnie-a-nauczymy-cie-jak-robic-profesjonalne-strony-www-warszawa-11-29-01-2010-2/</link>
		<comments>http://elearning.media.pl/index.php/2009/11/23/daj-nam-3-tygodnie-a-nauczymy-cie-jak-robic-profesjonalne-strony-www-warszawa-11-29-01-2010-2/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 11:51:41 +0000</pubDate>
		<dc:creator>Bogdan Markowicz</dc:creator>
				<category><![CDATA[Kursy i szkolnia]]></category>
		<category><![CDATA[Kursy php cms java html flash itp]]></category>
		<category><![CDATA[Nowości]]></category>
		<category><![CDATA[Projektowanie www]]></category>
		<category><![CDATA[SEO Pozycjonowanie]]></category>
		<category><![CDATA[Web Design szablony www]]></category>
		<category><![CDATA[e-biznes]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[narzedzia dla biznesu]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Kursy i szkolenia]]></category>
		<category><![CDATA[mySQL]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[Profesjonalny kurs projektowania stron www]]></category>
		<category><![CDATA[warszawa]]></category>
		<category><![CDATA[webdesign]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.blog.servicetek.media.pl/?p=778</guid>
		<description><![CDATA[


Daj nam 3 tygodnie a nauczymy Cię jak robić profesjonalne strony www?

ze szkolenia wyjdziesz z 6 stronami www &#8220;własnoręcznej roboty&#8221;. Nawet jeśli jeszcze nie umiesz, nie masz najmniejszego pojęcia o programowaniu, nie wierzysz w Twoje siły, nie chce Ci się, czy uważasz, że nie masz zdolności albo nie możesz się ...]]></description>
			<content:encoded><![CDATA[<div>
<div id="content">
<div id="post-2">
<h2>Daj nam 3 tygodnie a nauczymy Cię jak robić profesjonalne strony www?</h2>
<div>
<p><strong>ze szkolenia wyjdziesz z 6 stronami www &#8220;własnoręcznej roboty&#8221;. Nawet jeśli jeszcze nie umiesz, nie masz najmniejszego pojęcia o programowaniu, nie wierzysz w Twoje siły, nie chce Ci się, czy uważasz, że nie masz zdolności albo nie możesz się już niczego nowego nauczyć!</strong></p>
<p>Chciałbyś tworzyć strony www i zarabiać godne pieniądze nawet w okresie kryzysu?</p>
<p>Powstrzymuje Cię brak praktycznej wiedzy, brak wiary i zapału, brak doświadczenia, brak pokory?</p>
<p>Nie wiesz jak zacząć? Brakuje Ci kontaktu z doświadczonym programistą?</p>
<p>Jeśli odpowiedziałeś sobie ?TAK? czytając poprzedni akapit to ten kurs jest dla Ciebie</p>
<blockquote><p><strong>Daj nam tylko 15 dni, a nauczymy Cię jak robić nowoczesne strony www, usystematyzujesz wiedzę, umiejętności i stworzysz własnoręcznie 6 stron www. Wystarczy że umiesz odpalić komputer, pisać na klawiaturze i potrafisz korzystać z Internetu.</strong></p></blockquote>
<h2>Kurs ?Zawodowy programista? jest dla Ciebie, jeśli</h2>
<ul>
<li>chcesz nauczyć się robić nowoczesne strony www oparte na nowych technologiach (XHTML, CSS, jQuery, PHP5, MySQL)</li>
<li>chcesz zarabiać dobre pieniądze</li>
<li>zależy Ci na wolności i niezależności</li>
<li>umiesz już programować i chcesz więcej</li>
<li>chcesz zdobyć dobrze płatny zawód, w którym cały czas są poszukiwani pracownicy</li>
<li>mieć gwarancję zatrudnienia (nawet w czasach kryzysu dobry programista znajduje pracę w ciągu tygodnia)</li>
<li>chcesz znaleźć nową pasję</li>
<li>zależy Ci na tym by uczyć się od najlepszych</li>
<li>zależy Ci na tym by nauczyć się praktycznych rozwiązań problemów, które na 100% napotkasz w trakcie programowania</li>
<li>musisz mieć źródło dodatkowego dochodu</li>
<li>zależy Ci na pracy wykonywaj w domu</li>
<li>chcesz mieć nowe możliwości rozwoju zawodowego</li>
<li>jesteś znudzony, zmęczony Twoją aktualną sytuacją zawodową</li>
<li>jesteś otwarty na odkrycie nowych, nieujawnionych dotychczas Twoich TALENTÓW i MOŻLIWOŚCI</li>
<li>chcesz uniknąć kryzysu</li>
<li>masz dość zależności od pracodawcy</li>
<li>masz w planach otwarcie własnej firmy</li>
<li>zależy Ci na trenerze, który jest aktywnym zawodowo programistą z doświadczeniem, żeby móc nauczyć się wszystkiego od strony praktycznej</li>
<li>chcesz pracować u kogoś i te umiejętności są potrzebne żaby mieć tę pracę</li>
<li>chcesz wykorzystać pieniądze na szkolenie które ma dla Ciebie Urząd Pracy</li>
<li>chcesz dla innych robić strony i zarabiać w ten sposób na życie</li>
<li>chcesz się usamodzielnić w trakcie studiów</li>
<li>chcesz zarobić na własne, solidne kieszonkowe</li>
</ul>
<p>jeśli chociaż na jedno z tych pytań odpowiedziałeś ? TAK? to oznacza, że ten kurs jest dla Ciebie.</p>
<p><img src="http://www.serwan.pl/wp-content/uploads/2009/05/kurs.jpg" alt="Zawodowy programista" width="459" height="373" /></p>
<p><strong>W kursie ?Zawodowy programista? </strong>mogą wziąć udział zarówno osoby, które nie posiadają żadnego doświadczenia w programowaniu, oraz programiści, którzy chcą wiedzę i umiejętności usystematyzować, utrwalić oraz poszerzyć.<br />
Każdy uczestnik kursu musi umieć obsługiwać komputer!</p>
<p>Nauczymy Cię pisać nowoczesne strony internetowe.</p>
<p>WARUNEK:</p>
<p>gdy SUMIENNIE wykonasz wszystkie zaplanowanie przez nas ćwiczenia, to wyjedziesz z warsztatu nie tylko z nowymi, praktycznymi umiejętnościami, ale również z własnoręcznie napisanymi 6 stronami www.</p>
<p>Jakie <strong>umiejętności rozwiniesz</strong> podczas 3 tygodniowego kursu?<br />
Zobacz naszą szokującą propozycję, takiego programu nie znajdziesz na rynku. Tylko my udostępniamy takie SEKRETY PROGRAMOWANIA:</p>
<h2>Kurs ?Zawodowy programista? podzieliliśmy na 6 atrakcyjnych modułów</h2>
<p><em>Moduł 1 ? Dlaczego każdy szanujący się profesjonalista (internauta) musi ją mieć, czyli wizytówka internetowa w budowaniu wizerunku oraz w biznesie</em></p>
<p>W trakcie tego modułu dowiesz się i nauczysz:</p>
<ul>
<li>jak wygląda strona internetowa od środka, co musi zawierać i<br />
jaka jest jej struktura</li>
<li>jak zapisywać polskie znaki na stronie</li>
<li>jak umieszczać i formatować tekst na stronie</li>
<li>jak zapisać dowolny odcień koloru i przypisać go do dowolnego<br />
elementu strony</li>
<li>jak umieścić na stronie odnośniki do innych stron w Internecie</li>
<li>jak umieścić na stronie grafikę z pliku</li>
<li>jak napisać stronę, która dobrze prezentuje się w<br />
wyszukiwarkach i dobrze się pozycjonuje</li>
</ul>
<p><em>Moduł 2 ? Dlaczego każdy komu zależy na intensywnej sprzedaży oraz budowaniu własnej listy mailingowej musi mieć Squeeze page.<br />
</em><br />
W trakcie tego modułu dowiesz się i nauczysz:<br />
co to jest sqeeze page</p>
<ul>
<li>jak zapewnić poprawne funkcjonowanie strony w Internecie<br />
zgodnie ze swoimi intencjami</li>
<li>jak zorganizować elastyczną i przejrzystą strukturę strony</li>
<li>jak skonstruować i umieścić na stronie formularz listy<br />
mailingowej</li>
<li>jak przygotować w bazie danych tabelę do przechowywania danych</li>
<li>jak zapisywać w bazie danych dane z formularza</li>
<li>jak wyświetlać komunikaty w atrakcyjnej formie bez<br />
przeładowania strony</li>
</ul>
<p><em>Moduł 3 ? Dlaczego każda firma, której zależy na zyskach powinna mieć taką stronę z ofertą handlową?<br />
</em><br />
W trakcie tego modułu dowiesz się i nauczysz:</p>
<ul>
<li>jak zapanować nad dużym, ciągle rozwijającym się serwisem<br />
oddzielając wygląd od treści</li>
<li>jak budować szablony z kilku plików</li>
<li>jak budować adresy przyjazne wyszukiwarkom i łatwe do<br />
zapamiętania</li>
<li>jak dodawać kolejne podstrony do serwisu</li>
<li>jak automatycznie przewijać długie strony do określonego<br />
miejsca</li>
<li>jak budować złożone tabele i nadawać im dowolny wygląd</li>
<li>jak nadać stronie nowoczesny wygląd nie tracąc jej wydajności i elastyczności modyfikacji</li>
<li>jak uniezależnić serwis od systemu bazy danych</li>
<li>jak zabezpieczyć serwis przed atakami hakerów poprzez walidację po stronie serwera wszelkich danych wejściowych</li>
<li>jak zrobić atrakcyjne graficzne menu</li>
<li>jak wysłać wiadomość email ze strony</li>
<li>jak przygotować stronę do druku</li>
</ul>
<p><em>Moduł 4 ? Dlaczego profesjonalnie wykonana galeria grafiki przyciąga internautów?</em><br />
W trakcie tego modułu dowiesz się i nauczysz:</p>
<ul>
<li>jak wyświetlić tabele w szablonach</li>
<li>jak dynamicznie tworzyć podgląd rzeczywistych rozmiarów grafiki po najechaniu myszą na miniaturę</li>
<li>jak zaprezentować losowe grafiki na stronie głównej</li>
<li>jak spersonalizować stronę i zapamiętać ustawienia dla każdego użytkownika</li>
</ul>
<p><em>Moduł 5 ? Dlaczego warto zadbać o przejrzysty i intuicyjny katalog produktów w nowoczesnej stronie internetowej?</em></p>
<p>W trakcie tego modułu dowiesz się i nauczysz:</p>
<ul>
<li>jak stworzyć elastyczny układ z wieloma kolumnami</li>
<li>jak dynamicznie tworzyć złożoną strukturę katalogu na podstawie uporządkowanych danych w plikach tekstowych</li>
<li>jak stworzyć mechanizm zaawansowanego wyszukiwania w katalogach</li>
<li>jak zaprogramować promocje na określony czas</li>
<li>jak uczynić serwis bardziej przyjaznym dla użytkownika poprzez walidację danych po stronie przeglądarki</li>
</ul>
<p><em>Moduł 6 ? Dlaczego portal społecznościowy jest cieszy się taką popularnością</em></p>
<p>W trakcie tego modułu dowiesz się i nauczysz jak:</p>
<ul>
<li>jak stworzyć profesjonalny i bezpieczny system logowania i rejestracji użytkownika</li>
<li>jak wygenerować nowe hasło, gdy użytkownik zapomniał starego</li>
<li>jak sprawdzić, czy użytkownik jest zalogowany</li>
<li>jak rozpoznać użytkownika</li>
<li>jak stworzyć panel użytkownika</li>
<li>jak modyfikować dane użytkownika</li>
<li>jak pozwolić użytkownikom komunikować się między sobą</li>
<li>jak zrobić listę znajomych</li>
</ul>
<p>Sam wiesz najlepiej jak bardzo te umiejętności są Ci potrzebne. Już w bliskim czasie możesz cieszyć się wolnością i satysfakcją płynącą Jesteś zdecydowany &#8211; zapisz się.</p>
<h2>Dlaczego warto wziąć udział w kursie ?Zawodowy programista?, czyli jakie jeszcze korzyści odniesiesz biorąc w nim udział:</h2>
<ul>
<li>nabędziesz nowych umiejętności</li>
<li>stworzysz własnoręcznie 6 stron www (jeśli w trakcie zajęć sumiennie się przyłożysz do pracy)</li>
<li>usystematyzujesz swoją wiedzę i umiejętności</li>
<li>staniesz się atrakcyjnym kąskiem na rynku pracy</li>
<li>znajdziesz pracę</li>
<li>albo stworzysz sobie miejsce pracy</li>
<li>zadbasz o siebie realizując swoją pasję i marzenie</li>
<li>zaczniesz więcej zarabiać</li>
</ul>
<h2>Gdzie i kiedy?</h2>
<p><span style="color: #ff0000;"><span style="text-decoration: underline;"><strong>Warszawa, 11-29 stycznia 2010 r.</strong></span></span></p>
<p>Harmonogram szkolenia</p>
<p>* poniedziałek ? piątek godz. 9.00 ? 17.00</p>
<p>Każdego dnia jest przewidziana 1 godzinna przerwa na lunch</p>
<p><strong>Kontakt</strong></p>
<blockquote><p>tel.0501-442-995 Edyta Grabowska-Sewastianowicz<br />
email: biuro@sewastianowicz.pl</p>
<p>Jesteśmy instytucją szkoleniową wpisaną do rejestru instytucji szkoleniowych pod nr ewidencyjnym: 2.14/00143/2009<br />
Co oznacza, że <strong>Urząd Pracy może sfinansować ten kurs dla Ciebie, jeśli jesteś osobą bezrobotną zarejestrowaną w Urzędzie Pracy.</strong></p></blockquote>
<p><strong>Za ile?</strong></p>
<ul>
<li><span style="font-weight: bold;">wczesna wpłata do dnia 30 listopada 2009r &#8211; inwestycja 3770 zł + BONUS o wartości 970 zł</span>: szkolenie wideo &#8220;Zawodowy Programista&#8221;</li>
<li>wczesna wpłata do dnia 17 grudnia 2009r &#8211; inwestycja 3770 zł</li>
<li>po dniu 17 grudnia 2010r. &#8211; inwestycja 4370 zł</li>
</ul>
<p><strong><br />
</strong></p>
<p><strong>Uczestnicy szkolenia otrzymują:</strong></p>
<ul>
<li>certyfikat</li>
<li>komplet materiałów szkoleniowych</li>
<li>przerwy kawowe (kawa, herbata, soki, słodycze)</li>
</ul>
<h2>Unikalne BONUSY:</h2>
<ol>
<li>Raport: ?7 najczęstszych błędów popełnianych przez webmasterów czyli jak wiele czasu, nerwów i pieniędzy możesz zaoszczędzić? o wartości 176 zł</li>
<li>5 darmowych konsultacji email z trenerem o wartości 1000 zł do wykorzystania w ciągu sześciu miesięcy od zakończenia kursu</li>
<li>Raport: ?15 pytań, które zada Ci pracodawca w trakcie rozmowy kwalifikacyjnej na stanowiska webmaster i programista php? o wartości 290 zł</li>
</ol>
<h2>Co jeszcze warto wiedzieć na temat kursu ?Zawodowy programista?</h2>
<ul>
<li>kurs ma charakter warsztatowy, czyli 95% czasu ćwiczymy przy komputerach</li>
<li>w kursie bierze udział maksymalnie 10 osób</li>
<li>każdy uczestnik ma do dyspozycji komputer</li>
<li>sala szkoleniowa jest przystosowana do potrzeb procesu nauki</li>
<li>zajęcia prowadzi doświadczony i aktywny zawodowo programista ? trener IT z przygotowaniem i doświadczeniem pedagogicznym</li>
</ul>
<h2>Warunki udziału w szkoleniu</h2>
<ul>
<li>wypełnij elektroniczny formularza zgłoszenia na kurs ?Zawodowy programista?</li>
<li>dokonaj opłaty w stosownej wysokości</li>
<li>musisz znać podstawową obsługę komputera</li>
</ul>
<p><strong>Etapy rekrutacji:</strong></p>
<p>I etap: prześlij do nas zgłoszenie wypełniając formularz zgłoszenia.</p>
<p>II etap: otrzymasz na swojego emaila potwierdzenie przyjęcia zgłoszenia</p>
<p>III etap: dokonujesz wpłaty za kurs na nasze konto.</p>
<p>IV etap: otrzymujesz ostateczne potwierdzenie rezerwacji miejsca, gdy Twoja wpłata znajdzie się na naszym koncie.</p>
<p><strong>Uwaga!</strong><br />
O kolejności wpisywania uczestników na listę decyduje data wpływu wpłaty na konto firmy.</p>
<p><a href="http://www.ekademia.pl/szkolenie/zawodowyprogramista?t=29276" target="_blank"></p>
<input alt="Składam zamówienie" name="submit" src="http://www.ekademia.pl/theme/ekademia/orderbutton.gif" type="image" /></a></p>
<p><strong>Zawodowy programista &#8211; naucz się robić profesjonalne strony WWW w 15 dni</strong></p>
<p><strong> (Warszawa 11-29.01.2010)</strong></p>
<p><strong>SG Poleca!</strong></p>
<p><strong>Bogdan Markowicz<br />
</strong></div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://elearning.media.pl/index.php/2009/11/23/daj-nam-3-tygodnie-a-nauczymy-cie-jak-robic-profesjonalne-strony-www-warszawa-11-29-01-2010-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Daj nam 3 tygodnie a nauczymy Cię jak robić profesjonalne strony www Warszawa 11-29.01.2010</title>
		<link>http://elearning.media.pl/index.php/2009/11/23/daj-nam-3-tygodnie-a-nauczymy-cie-jak-robic-profesjonalne-strony-www-warszawa-11-29-01-2010/</link>
		<comments>http://elearning.media.pl/index.php/2009/11/23/daj-nam-3-tygodnie-a-nauczymy-cie-jak-robic-profesjonalne-strony-www-warszawa-11-29-01-2010/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 11:51:10 +0000</pubDate>
		<dc:creator>Bogdan Markowicz</dc:creator>
				<category><![CDATA[Kursy i szkolenia]]></category>
		<category><![CDATA[Kursy php cms java html flash itp]]></category>
		<category><![CDATA[Nowości]]></category>
		<category><![CDATA[Projektowanie www]]></category>
		<category><![CDATA[SEO Pozycjonowanie]]></category>
		<category><![CDATA[e-biznes]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[mySQL]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[Profesjonalny kurs projektowania stron www]]></category>
		<category><![CDATA[warszawa]]></category>
		<category><![CDATA[webdesign]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://elearning.media.pl/?p=773</guid>
		<description><![CDATA[


Daj nam 3 tygodnie a nauczymy Cię jak robić profesjonalne strony www?

ze szkolenia wyjdziesz z 6 stronami www &#8220;własnoręcznej roboty&#8221;. Nawet jeśli jeszcze nie umiesz, nie masz najmniejszego pojęcia o programowaniu, nie wierzysz w Twoje siły, nie chce Ci się, czy uważasz, że nie masz zdolności albo nie możesz się ...]]></description>
			<content:encoded><![CDATA[<div>
<div id="content">
<div id="post-2">
<h2>Daj nam 3 tygodnie a nauczymy Cię jak robić profesjonalne strony www?</h2>
<div>
<p><strong>ze szkolenia wyjdziesz z 6 stronami www &#8220;własnoręcznej roboty&#8221;. Nawet jeśli jeszcze nie umiesz, nie masz najmniejszego pojęcia o programowaniu, nie wierzysz w Twoje siły, nie chce Ci się, czy uważasz, że nie masz zdolności albo nie możesz się już niczego nowego nauczyć!</strong></p>
<p>Chciałbyś tworzyć strony www i zarabiać godne pieniądze nawet w okresie kryzysu?</p>
<p>Powstrzymuje Cię brak praktycznej wiedzy, brak wiary i zapału, brak doświadczenia, brak pokory?</p>
<p>Nie wiesz jak zacząć? Brakuje Ci kontaktu z doświadczonym programistą?</p>
<p>Jeśli odpowiedziałeś sobie ?TAK? czytając poprzedni akapit to ten kurs jest dla Ciebie</p>
<blockquote><p><strong>Daj nam tylko 15 dni, a nauczymy Cię jak robić nowoczesne strony www, usystematyzujesz wiedzę, umiejętności i stworzysz własnoręcznie 6 stron www. Wystarczy że umiesz odpalić komputer, pisać na klawiaturze i potrafisz korzystać z Internetu.</strong></p></blockquote>
<h2>Kurs ?Zawodowy programista? jest dla Ciebie, jeśli</h2>
<ul>
<li>chcesz nauczyć się robić nowoczesne strony www oparte na nowych technologiach (XHTML, CSS, jQuery, PHP5, MySQL)</li>
<li>chcesz zarabiać dobre pieniądze</li>
<li>zależy Ci na wolności i niezależności</li>
<li>umiesz już programować i chcesz więcej</li>
<li>chcesz zdobyć dobrze płatny zawód, w którym cały czas są poszukiwani pracownicy</li>
<li>mieć gwarancję zatrudnienia (nawet w czasach kryzysu dobry programista znajduje pracę w ciągu tygodnia)</li>
<li>chcesz znaleźć nową pasję</li>
<li>zależy Ci na tym by uczyć się od najlepszych</li>
<li>zależy Ci na tym by nauczyć się praktycznych rozwiązań problemów, które na 100% napotkasz w trakcie programowania</li>
<li>musisz mieć źródło dodatkowego dochodu</li>
<li>zależy Ci na pracy wykonywaj w domu</li>
<li>chcesz mieć nowe możliwości rozwoju zawodowego</li>
<li>jesteś znudzony, zmęczony Twoją aktualną sytuacją zawodową</li>
<li>jesteś otwarty na odkrycie nowych, nieujawnionych dotychczas Twoich TALENTÓW i MOŻLIWOŚCI</li>
<li>chcesz uniknąć kryzysu</li>
<li>masz dość zależności od pracodawcy</li>
<li>masz w planach otwarcie własnej firmy</li>
<li>zależy Ci na trenerze, który jest aktywnym zawodowo programistą z doświadczeniem, żeby móc nauczyć się wszystkiego od strony praktycznej</li>
<li>chcesz pracować u kogoś i te umiejętności są potrzebne żaby mieć tę pracę</li>
<li>chcesz wykorzystać pieniądze na szkolenie które ma dla Ciebie Urząd Pracy</li>
<li>chcesz dla innych robić strony i zarabiać w ten sposób na życie</li>
<li>chcesz się usamodzielnić w trakcie studiów</li>
<li>chcesz zarobić na własne, solidne kieszonkowe</li>
</ul>
<p>jeśli chociaż na jedno z tych pytań odpowiedziałeś ? TAK? to oznacza, że ten kurs jest dla Ciebie.</p>
<p><img src="http://www.serwan.pl/wp-content/uploads/2009/05/kurs.jpg" alt="Zawodowy programista" width="459" height="373" /></p>
<p><strong>W kursie ?Zawodowy programista? </strong>mogą wziąć udział zarówno osoby, które nie posiadają żadnego doświadczenia w programowaniu, oraz programiści, którzy chcą wiedzę i umiejętności usystematyzować, utrwalić oraz poszerzyć.<br />
Każdy uczestnik kursu musi umieć obsługiwać komputer!</p>
<p>Nauczymy Cię pisać nowoczesne strony internetowe.</p>
<p>WARUNEK:</p>
<p>gdy SUMIENNIE wykonasz wszystkie zaplanowanie przez nas ćwiczenia, to wyjedziesz z warsztatu nie tylko z nowymi, praktycznymi umiejętnościami, ale również z własnoręcznie napisanymi 6 stronami www.</p>
<p>Jakie <strong>umiejętności rozwiniesz</strong> podczas 3 tygodniowego kursu?<br />
Zobacz naszą szokującą propozycję, takiego programu nie znajdziesz na rynku. Tylko my udostępniamy takie SEKRETY PROGRAMOWANIA:</p>
<h2>Kurs ?Zawodowy programista? podzieliliśmy na 6 atrakcyjnych modułów</h2>
<p><em>Moduł 1 ? Dlaczego każdy szanujący się profesjonalista (internauta) musi ją mieć, czyli wizytówka internetowa w budowaniu wizerunku oraz w biznesie</em></p>
<p>W trakcie tego modułu dowiesz się i nauczysz:</p>
<ul>
<li>jak wygląda strona internetowa od środka, co musi zawierać i<br />
jaka jest jej struktura</li>
<li>jak zapisywać polskie znaki na stronie</li>
<li>jak umieszczać i formatować tekst na stronie</li>
<li>jak zapisać dowolny odcień koloru i przypisać go do dowolnego<br />
elementu strony</li>
<li>jak umieścić na stronie odnośniki do innych stron w Internecie</li>
<li>jak umieścić na stronie grafikę z pliku</li>
<li>jak napisać stronę, która dobrze prezentuje się w<br />
wyszukiwarkach i dobrze się pozycjonuje</li>
</ul>
<p><em>Moduł 2 ? Dlaczego każdy komu zależy na intensywnej sprzedaży oraz budowaniu własnej listy mailingowej musi mieć Squeeze page.<br />
</em><br />
W trakcie tego modułu dowiesz się i nauczysz:<br />
co to jest sqeeze page</p>
<ul>
<li>jak zapewnić poprawne funkcjonowanie strony w Internecie<br />
zgodnie ze swoimi intencjami</li>
<li>jak zorganizować elastyczną i przejrzystą strukturę strony</li>
<li>jak skonstruować i umieścić na stronie formularz listy<br />
mailingowej</li>
<li>jak przygotować w bazie danych tabelę do przechowywania danych</li>
<li>jak zapisywać w bazie danych dane z formularza</li>
<li>jak wyświetlać komunikaty w atrakcyjnej formie bez<br />
przeładowania strony</li>
</ul>
<p><em>Moduł 3 ? Dlaczego każda firma, której zależy na zyskach powinna mieć taką stronę z ofertą handlową?<br />
</em><br />
W trakcie tego modułu dowiesz się i nauczysz:</p>
<ul>
<li>jak zapanować nad dużym, ciągle rozwijającym się serwisem<br />
oddzielając wygląd od treści</li>
<li>jak budować szablony z kilku plików</li>
<li>jak budować adresy przyjazne wyszukiwarkom i łatwe do<br />
zapamiętania</li>
<li>jak dodawać kolejne podstrony do serwisu</li>
<li>jak automatycznie przewijać długie strony do określonego<br />
miejsca</li>
<li>jak budować złożone tabele i nadawać im dowolny wygląd</li>
<li>jak nadać stronie nowoczesny wygląd nie tracąc jej wydajności i elastyczności modyfikacji</li>
<li>jak uniezależnić serwis od systemu bazy danych</li>
<li>jak zabezpieczyć serwis przed atakami hakerów poprzez walidację po stronie serwera wszelkich danych wejściowych</li>
<li>jak zrobić atrakcyjne graficzne menu</li>
<li>jak wysłać wiadomość email ze strony</li>
<li>jak przygotować stronę do druku</li>
</ul>
<p><em>Moduł 4 ? Dlaczego profesjonalnie wykonana galeria grafiki przyciąga internautów?</em><br />
W trakcie tego modułu dowiesz się i nauczysz:</p>
<ul>
<li>jak wyświetlić tabele w szablonach</li>
<li>jak dynamicznie tworzyć podgląd rzeczywistych rozmiarów grafiki po najechaniu myszą na miniaturę</li>
<li>jak zaprezentować losowe grafiki na stronie głównej</li>
<li>jak spersonalizować stronę i zapamiętać ustawienia dla każdego użytkownika</li>
</ul>
<p><em>Moduł 5 ? Dlaczego warto zadbać o przejrzysty i intuicyjny katalog produktów w nowoczesnej stronie internetowej?</em></p>
<p>W trakcie tego modułu dowiesz się i nauczysz:</p>
<ul>
<li>jak stworzyć elastyczny układ z wieloma kolumnami</li>
<li>jak dynamicznie tworzyć złożoną strukturę katalogu na podstawie uporządkowanych danych w plikach tekstowych</li>
<li>jak stworzyć mechanizm zaawansowanego wyszukiwania w katalogach</li>
<li>jak zaprogramować promocje na określony czas</li>
<li>jak uczynić serwis bardziej przyjaznym dla użytkownika poprzez walidację danych po stronie przeglądarki</li>
</ul>
<p><em>Moduł 6 ? Dlaczego portal społecznościowy jest cieszy się taką popularnością</em></p>
<p>W trakcie tego modułu dowiesz się i nauczysz jak:</p>
<ul>
<li>jak stworzyć profesjonalny i bezpieczny system logowania i rejestracji użytkownika</li>
<li>jak wygenerować nowe hasło, gdy użytkownik zapomniał starego</li>
<li>jak sprawdzić, czy użytkownik jest zalogowany</li>
<li>jak rozpoznać użytkownika</li>
<li>jak stworzyć panel użytkownika</li>
<li>jak modyfikować dane użytkownika</li>
<li>jak pozwolić użytkownikom komunikować się między sobą</li>
<li>jak zrobić listę znajomych</li>
</ul>
<p>Sam wiesz najlepiej jak bardzo te umiejętności są Ci potrzebne. Już w bliskim czasie możesz cieszyć się wolnością i satysfakcją płynącą Jesteś zdecydowany &#8211; zapisz się.</p>
<h2>Dlaczego warto wziąć udział w kursie ?Zawodowy programista?, czyli jakie jeszcze korzyści odniesiesz biorąc w nim udział:</h2>
<ul>
<li>nabędziesz nowych umiejętności</li>
<li>stworzysz własnoręcznie 6 stron www (jeśli w trakcie zajęć sumiennie się przyłożysz do pracy)</li>
<li>usystematyzujesz swoją wiedzę i umiejętności</li>
<li>staniesz się atrakcyjnym kąskiem na rynku pracy</li>
<li>znajdziesz pracę</li>
<li>albo stworzysz sobie miejsce pracy</li>
<li>zadbasz o siebie realizując swoją pasję i marzenie</li>
<li>zaczniesz więcej zarabiać</li>
</ul>
<h2>Gdzie i kiedy?</h2>
<p><span style="color: #ff0000;"><span style="text-decoration: underline;"><strong>Warszawa, 11-29 stycznia 2010 r.</strong></span></span></p>
<p>Harmonogram szkolenia</p>
<p>* poniedziałek ? piątek godz. 9.00 ? 17.00</p>
<p>Każdego dnia jest przewidziana 1 godzinna przerwa na lunch</p>
<p><strong>Kontakt</strong></p>
<blockquote><p>tel.0501-442-995 Edyta Grabowska-Sewastianowicz<br />
email: biuro@sewastianowicz.pl</p>
<p>Jesteśmy instytucją szkoleniową wpisaną do rejestru instytucji szkoleniowych pod nr ewidencyjnym: 2.14/00143/2009<br />
Co oznacza, że <strong>Urząd Pracy może sfinansować ten kurs dla Ciebie, jeśli jesteś osobą bezrobotną zarejestrowaną w Urzędzie Pracy.</strong></p></blockquote>
<p><strong>Za ile?</strong></p>
<ul>
<li><span style="font-weight: bold;">wczesna wpłata do dnia 30 listopada 2009r &#8211; inwestycja 3770 zł + BONUS o wartości 970 zł</span>: szkolenie wideo &#8220;Zawodowy Programista&#8221;</li>
<li>wczesna wpłata do dnia 17 grudnia 2009r &#8211; inwestycja 3770 zł</li>
<li>po dniu 17 grudnia 2010r. &#8211; inwestycja 4370 zł</li>
</ul>
<p><strong><br />
</strong></p>
<p><strong>Uczestnicy szkolenia otrzymują:</strong></p>
<ul>
<li>certyfikat</li>
<li>komplet materiałów szkoleniowych</li>
<li>przerwy kawowe (kawa, herbata, soki, słodycze)</li>
</ul>
<h2>Unikalne BONUSY:</h2>
<ol>
<li>Raport: ?7 najczęstszych błędów popełnianych przez webmasterów czyli jak wiele czasu, nerwów i pieniędzy możesz zaoszczędzić? o wartości 176 zł</li>
<li>5 darmowych konsultacji email z trenerem o wartości 1000 zł do wykorzystania w ciągu sześciu miesięcy od zakończenia kursu</li>
<li>Raport: ?15 pytań, które zada Ci pracodawca w trakcie rozmowy kwalifikacyjnej na stanowiska webmaster i programista php? o wartości 290 zł</li>
</ol>
<h2>Co jeszcze warto wiedzieć na temat kursu ?Zawodowy programista?</h2>
<ul>
<li>kurs ma charakter warsztatowy, czyli 95% czasu ćwiczymy przy komputerach</li>
<li>w kursie bierze udział maksymalnie 10 osób</li>
<li>każdy uczestnik ma do dyspozycji komputer</li>
<li>sala szkoleniowa jest przystosowana do potrzeb procesu nauki</li>
<li>zajęcia prowadzi doświadczony i aktywny zawodowo programista ? trener IT z przygotowaniem i doświadczeniem pedagogicznym</li>
</ul>
<h2>Warunki udziału w szkoleniu</h2>
<ul>
<li>wypełnij elektroniczny formularza zgłoszenia na kurs ?Zawodowy programista?</li>
<li>dokonaj opłaty w stosownej wysokości</li>
<li>musisz znać podstawową obsługę komputera</li>
</ul>
<p><strong>Etapy rekrutacji:</strong></p>
<p>I etap: prześlij do nas zgłoszenie wypełniając formularz zgłoszenia.</p>
<p>II etap: otrzymasz na swojego emaila potwierdzenie przyjęcia zgłoszenia</p>
<p>III etap: dokonujesz wpłaty za kurs na nasze konto.</p>
<p>IV etap: otrzymujesz ostateczne potwierdzenie rezerwacji miejsca, gdy Twoja wpłata znajdzie się na naszym koncie.</p>
<p><strong>Uwaga!</strong><br />
O kolejności wpisywania uczestników na listę decyduje data wpływu wpłaty na konto firmy.</p>
<p><a href="http://www.ekademia.pl/szkolenie/zawodowyprogramista?t=29276" target="_blank"></p>
<input alt="Składam zamówienie" name="submit" src="http://www.ekademia.pl/theme/ekademia/orderbutton.gif" type="image" /></a></p>
<p><strong>Zawodowy programista &#8211; naucz się robić profesjonalne strony WWW w 15 dni</strong></p>
<p><strong> (Warszawa 11-29.01.2010)</strong></p>
<p><strong>SG Poleca!</strong></p>
<p><strong>Bogdan Markowicz<br />
</strong></div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://elearning.media.pl/index.php/2009/11/23/daj-nam-3-tygodnie-a-nauczymy-cie-jak-robic-profesjonalne-strony-www-warszawa-11-29-01-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kurs PHP cz 12 Data i czas</title>
		<link>http://elearning.media.pl/index.php/2009/11/23/kurs-php-cz-12-data-i-czas/</link>
		<comments>http://elearning.media.pl/index.php/2009/11/23/kurs-php-cz-12-data-i-czas/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 07:12:01 +0000</pubDate>
		<dc:creator>Bogdan Markowicz</dc:creator>
				<category><![CDATA[Kursy php cms java html flash itp]]></category>
		<category><![CDATA[czas]]></category>
		<category><![CDATA[darmowe kursy]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[kurs]]></category>
		<category><![CDATA[kurs PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[projektowanie stron www w praktyce]]></category>
		<category><![CDATA[Projektowanie www]]></category>

		<guid isPermaLink="false">http://www.blog.servicetek.media.pl/?p=375</guid>
		<description><![CDATA[12. Data i czas
12.1. Podstawy
W PHP istnieje bardzo dużo funkcji pozwalających na swobodne operowanie datą i czasem. Podstawowym formatem daty jest timestamp, czyli liczba sekund, która upłynęła od 1 stycznia 1970 roku. Taki zapis daje bardzo dużo możliwości, ponieważ pozwala np. na łatwe porównywanie dwóch dat poprzez ich odjęcie. Łatwo ...]]></description>
			<content:encoded><![CDATA[<h3>12. Data i czas</h3>
<h4>12.1. Podstawy</h4>
<p>W PHP istnieje bardzo dużo funkcji pozwalających na swobodne operowanie datą i czasem. Podstawowym formatem daty jest timestamp, czyli liczba sekund, która upłynęła od 1 stycznia 1970 roku. Taki zapis daje bardzo dużo możliwości, ponieważ pozwala np. na łatwe porównywanie dwóch dat poprzez ich odjęcie. Łatwo też jest przechowywać taki zapis w bazie danych czy w pliku, a dzięki odpowiednim funkcjom PHP można go bardzo prosto zamienić na format czytelny dla użytkownika.</p>
<h4>12.2. Kilka przydatnych funkcji</h4>
<p>Najprostszą akcją jest uzyskanie aktualnej daty i czasu w formacie timestamp. Wystarczy użyć funkcji time(). Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
$teraz = time();<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>Czasem zachodzi potrzeba sprawdzenia szybkości jakiegoś rozwiązania, np. fragmentu kodu PHP, i porównania jego wydajności z innym. W takim wypadku oczywiście nie ma sensu używanie funkcji time(), ponieważ zazwyczaj wykonanie całego skryptu PHP trwa niecałą setną sekundy. Z pomocą przychodzi funkcja microtime(). Zwraca ona jednak dane w nieco dziwny sposób ? część milisekundowa jest oddzielona spacją od części sekundowej. Poniżej zamieszczamy funkcję interpretującą dane z microtime() i zamieniającą je na coś bardziej czytelnego dla użytkownika:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
function getmicrotime(){<br />
list($usec, $sec) = explode(&#8221; &#8220;,microtime());<br />
return ((float)$usec + (float)$sec); //zwróć uwagę<br />
na rzutowanie settype:)<br />
}<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>Powyższą funkcję można użyć do sprawdzenia czasu wykonywania skryptu. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
$start = getmicrotime();<br />
//cały skrypt &#8211; jakieś instrukcje<br />
$koniec = getmicrotime();<br />
echo &#8220;Skrypt wykonał się w &#8221;<br />
.round($koniec-$start, 5).&#8221; sekund.&#8221;;<br />
?&gt;</td>
</tr>
</tbody>
</table>
<h4>12.3. Sprawdzanie daty</h4>
<p>Aby sprawdzić, czy data wprowadzona np. w formularzu jest poprawna, należy posłużyć się funkcją checkdate(). Pobiera ona kolejno miesiąc, dzień i rok (kolejność zapisu daty w USA) i zwraca wartość TRUE, jeśli data jest poprawna, lub FALSE w wypadku błędu. Funkcja uwzględnia takie kwestie, że np. w roku przestępnym w lutym może być 29 dni.</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
if (checkdate($_POST[month], $_POST[day],<br />
$_POST[year])) {<br />
//data jest poprawna &#8211; dalsze instrukcje<br />
}<br />
else {<br />
//data niepoprawna &#8211; wprowadz jeszcze raz<br />
Header(&#8221;Location:podaj_date.php?blad=1&#8243;);<br />
}<br />
?&gt;</td>
</tr>
</tbody>
</table>
<h4>12.4. Data -&gt; timestamp</h4>
<p>Jeśli dysponujemy już zapisem daty np. wprowadzonej przez użytkownika w formularzu (dzień, miesiąc, rok, godziny, minuty i sekundy osobno), można ją łatwo zamienić na timestamp. Należy wtedy użyć funkcji mktime() i podać w jej parametrach kolejno: godzinę, minuty, sekundy, miesiąc, dzień i rok. Jako ostatni (niewymagany) parametr można podać 1 (jeśli jest to czas letni), 0 (jeżeli jest to czas zimowy) lub -1 bądź nie podawać niczego (wtedy interpreter PHP będzie sam zgadywał, jaki to czas). Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
$time = mktime(23, 24, 11, 12, 4, 1999);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>Funkcja mktime() nadaje się także do poprawiania błędów w datach i wyliczania ostatnich dni miesiąca. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
$time = mktime(1, 1, 1, 12, 32, 1998);<br />
$time = mktime(1, 1, 1, 13, 1, 1998);<br />
$time = mktime(1, 1, 1, 1, 1, 1999);<br />
$time = mktime(1, 1, 1, 1, 1, 99);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>Wszystkie powyższe przykłady utworzą datę 1 stycznia 1999, a błędy typu 32 grudnia czy 1 dnia 13. miesiąca roku zostaną automatycznie poprawione. Aby wyliczyć ostatni dzień danego miesiąca, należy podać jako argument dzień 0 (zero), a numer miesiąca o jeden większy. Poniższy przykład wyliczy ostatni dzień dla lutego 2000 roku.</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
$ostatni = mktime (0,0,0,3,0,2000);<br />
?&gt;</td>
</tr>
</tbody>
</table>
<h4>12.5. timestamp -&gt; data</h4>
<p>W poprzednim paragrafie pokazywaliśmy, jak utworzyć datę w formacie timestamp. Jednak normalni ludzie mają niestety taką wadę, że nie potrafią czytać daty w tym formacie. Należy im wówczas zaserwować datę w formacie hh:mm:ss dd-mm-rrrr. Aby uzyskać taki efekt z formatu timestamp, należy użyć funkcji date(). Jako pierwszy argument pobiera ona format, w którym zwrócona ma być data, jako drugi zaś (opcjonalnie) datę w formacie timestamp. Funkcja zwraca datę sformatowaną zgodnie z szablonem w argumencie format. W szablonie podaje się specjalne znaki, które są później zamieniane na odpowiednie elementy daty lub czasu. Na przykład G jest zamieniane na godzinę w formacie 24-godzinnym. Oto lista wszystkich znaków do użycia w szablonie w funkcji date:</p>
<ul>
<li>a ? ?am? lub ?pm?,</li>
<li>A ? ?AM? lub ?PM?,</li>
<li>B ? czas internetowy Swatcha,</li>
<li>d ? dzień miesiąca, dwie cyfry z zerem na początku, tzn. od ?01? do ?31?,</li>
<li>D ? dzień tygodnia, tekst, trzy litery, np. ?Fri?,</li>
<li>F ? miesiąc, tekst, pełna nazwa, np. ?January?,</li>
<li>g ? godzina, format 12-godzinny bez zera na początku, tzn. od ?1? do ?12?,</li>
<li>G ? godzina, format 24-godzinny bez zera na początku, tzn. od ?0? do ?23?,</li>
<li>h ? godzina, format 12-godzinny z zerem na początku, tzn. od ?01? do ?12?,</li>
<li>H ? godzina, format 24-godzinny z zerem na początku, tzn. od ?00? do ?23?,</li>
<li>i ? minuty; tzn. od ?00? do ?59?,</li>
<li>I (duża litera i) ? ?1?, jeśli czas oszczędzania światła słonecznego (w Polsce ? czas letni); ?0?, jeżeli czas standardowy (w Polsce zimowy),</li>
<li>j ? dzień miesiąca bez zera na początku, tzn. od ?1? do ?31?,</li>
<li>l (mała litera L) ? dzień tygodnia, tekst, pełna nazwa, np. ?Friday?,</li>
<li>L ? ?1?, jeśli rok przestępny; ?0? w przeciwnym wypadku,</li>
<li>m ? miesiąc, tzn. od ?01? do ?12?,</li>
<li>M ? miesiąc, tekst, trzy litery, np. ?Jan?,</li>
<li>n ? miesiąc bez zera na początku, tzn. od ?1? do ?12?,</li>
<li>O ? różnica w stosunku do czasu Greenwich, np. ?+0200?,</li>
<li>r ? data sformatowana według RFC 822, np. ?Thu, 21 Dec 2000 16:01:07 +0200? (dodane w PHP 4.0.4),</li>
<li>s ? sekundy, np. od ?00? do ?59?,</li>
<li>S ? standardowy angielski sufiks liczebnika porządkowego, dwie litery, tzn. ?st?, ?nd?, ?rd? lub ?th?,</li>
<li>t ? liczba dni w danym miesiącu, tzn. od ?28? do ?31?,</li>
<li>T ? strefa czasowa ustawiona na tej maszynie, np. ?EST? lub ?MDT?,</li>
<li>U ? liczba sekund od uniksowej Epoki (1 stycznia 1970 00:00:00 GMT),</li>
<li>w ? dzień tygodnia, liczbowy, tzn. od ?0? (Niedziela) do ?6? (Sobota),</li>
<li>W ? numer tygodnia w roku według ISO-8601, tydzień zaczyna się w poniedziałek (dodane w PHP 4.1.0),</li>
<li>Y ? rok, cztery liczby, np. ?1999?,</li>
<li>y ? rok, dwie liczby, np. ?99?,</li>
<li>z ? dzień roku, tzn. od ?0? do ?365?,</li>
<li>Z ? ofset strefy czasowej w sekundach (tzn. pomiędzy ?-43200? a ?43200?). Ofset dla stref czasowych na zachód od UTC (południka zero) jest zawsze ujemny, a dla tych na wschód od UTC jest zawsze dodatni.</li>
</ul>
<p>Jeśli nie chcemy, aby jakiś znak był zamieniony na swój odpowiednik, trzeba przed nim dać znak \. Jeżeli ten znak razem z \ tworzy jakiś znak specjalny, to trzeba go poprzedzić podwójnym \ (np. \t to znak tabulacji, a to znak nowej linii). Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
echo date(?l \\t\h\e jS?);<br />
// wyświetla tekst typu &#8216;Saturday the 8th&#8217;<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>Warto dodać, że choć na razie część znaków nie jest używana przez date(), to powinno się cytować wszystkie znaki, które nie mają być zamienione. Dzieje się tak, ponieważ w nowych wersjach PHP do date() wprowadzane będą coraz to nowe symbole. Dla przykładu:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td>&lt;?<br />
$today = date(&#8217;\i\t \i\s \t\h\e jS \d\a\y.&#8217;);<br />
// It is the 10th day.<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p>Poniżej inny przykład użycia date(), zaczerpnięty ze strony php.net:</p>
<p>&lt;?<br />
$today = date(&#8221;F j, Y, g:i a&#8221;); // March 10, 2001, 5:16 pm<br />
$today = date(&#8221;m.d.y&#8221;); // 03.10.01<br />
$today = date(&#8221;j, n, Y&#8221;); // 10, 3, 2001<br />
$today = date(&#8221;D M j G:i:s T Y&#8221;); // Sat Mar 10 15:16:08 MST 2001<br />
$today = date(&#8221;H:m:s \m \i\s\ \m\o<br />
\t\h&#8221;); // 17:03:17 m is month<br />
$today = date(&#8221;H:i:s&#8221;); // 17:16:17<br />
?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://elearning.media.pl/index.php/2009/11/23/kurs-php-cz-12-data-i-czas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
