<?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>BBProject.net &#187; file_get_contents</title>
	<atom:link href="http://www.bbproject.net/tag/file_get_contents/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bbproject.net</link>
	<description>Programowanie, webmastering, informatyka</description>
	<lastBuildDate>Tue, 01 Mar 2011 20:35:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Klasyka PHP &#8211; licznik odwiedzin</title>
		<link>http://www.bbproject.net/2010/03/klasyka-php-licznik-odwiedzin/</link>
		<comments>http://www.bbproject.net/2010/03/klasyka-php-licznik-odwiedzin/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 08:27:37 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[Webmastering]]></category>
		<category><![CDATA[cookies]]></category>
		<category><![CDATA[file_get_contents]]></category>
		<category><![CDATA[file_put_contents]]></category>
		<category><![CDATA[licznik]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=209</guid>
		<description><![CDATA[Dlaczego klasyka? Gdyż to chyba jeden z najpopularniejszych skryptów o jakich myśli każdy początkujący programista PHP. Fakt faktem, że przy dzisiejszych usługach typu Google Analytics jest to mało komfortowe rozwiązanie i nie dostarcza wielu informacji, nie mniej na pewno dużo satysfakcji . Bez zbędnego przedłużania przechodzimy do sedna sprawy. Nasz licznik będzie maksymalnie uproszczony &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Dlaczego klasyka? Gdyż to chyba jeden z najpopularniejszych skryptów o jakich myśli każdy początkujący programista PHP. Fakt faktem, że przy dzisiejszych usługach typu Google Analytics jest to mało komfortowe rozwiązanie i nie dostarcza wielu informacji, nie mniej na pewno dużo satysfakcji <img src='http://www.bbproject.net/wp-includes/images/smilies/icon_smile.png' alt=':)' class='wp-smiley' /> .</p>
<p>Bez zbędnego przedłużania przechodzimy do sedna sprawy. Nasz licznik będzie maksymalnie uproszczony &#8211; będzie zliczał każde przeładowanie strony. Aby zbytnio się nie napracować skorzystamy z funkcji <a href="http://pl.php.net/manual/en/function.file-get-contents.php"><em>file_get_contents</em></a> oraz <a href="http://pl.php.net/manual/en/function.file-put-contents.php"><em>file_put_content</em></a>s do przechowania aktualnego stanu licznika w pliku.</p>
<p><span id="more-209"></span>Jak działa zatem prosty licznik? Pobiera z pliku ilość odsłon, dodaje 1, zapisuje i wyświetla aktualny stan.</p>
<pre class="brush: php">$fn = 'data.txt';
$counter = (file_exists($fn) ? (int)file_get_contents($fn) : 0) + 1;
file_put_contents($fn, $counter);</pre>
<p>I to już w zasadzie wszystko. Pierwsza linia określa nazwę pliku danych licznika. Druga odczytuje jego aktualny stan, o ile plik istnieje. Ostatnia zapisuje ponownie ilość osłon do pliku. W zmiennej <em>$counter</em> znajduje się ich aktualna ilość którą możemy umiejscowić gdzieś na stronie:</p>
<pre class="brush: php">echo $counter;</pre>
<p>Nasz licznik jest już gotowy. Cały kod możesz pobrać <a href="http://www.bbproject.net/wp-content/uploads/2010/03/counter.zip">tutaj</a>.</p>
<h4>Dla ambitnych</h4>
<p>Jeśli nie chcesz aby licznik zliczał każdą pojedynczą odsłonę, a jedynie użytkowników, to musimy pokusić się o skorzystanie z cookies (ciasteczek) przeglądarki.</p>
<p>Podobnie jak w przykładzie wyżej, nie jest to jakiś skomplikowany mechanizm i łatwo go obejść, ale spełnia swoje zadanie w minimum jakie od niego wymagamy.</p>
<pre class="brush: php">$fn = 'data.txt';
$counter = file_exists($fn) ? (int)file_get_contents($fn) : 0;

$cookiename = 'simple_counter_d3v8';
if ( ! isset($_COOKIE[$cookiename]))
{
  file_put_contents($fn, ++$counter);
  setcookie($cookiename, '1', time()+60*60*24);
}</pre>
<p>Jeśli użytkownik odwiedzi stronę, zapisujemy w jego przeglądarce ciasteczko. Przy kolejnej odsłonie tylko wtedy podwyższamy wartość licznika jeśli owo ciasteczko <strong>nie</strong> istnieje. Po 24h, odsłona tego samego użytkownika jest ponownie zliczana &#8211; można to regulować zmieniając liczbę sekund w trzecim parametrze funkcji <a href="http://pl.php.net/manual/en/function.setcookie.php"><em>setcookie</em></a>.</p>
<p>Kompletny kod można pobrać <a href="http://www.bbproject.net/wp-content/uploads/2010/03/counterext.zip">tutaj</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/03/klasyka-php-licznik-odwiedzin/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

