funkcje które zaraz zacytuję, są przepisane z książki "PHP5 i MySQL Biblia" (cz. 5, rozdział 44)
Mam na myśli plik login_funcs.inc
Jest to zestaw funkcji umożliwiających zbudowanie systemu logowania i wylogowywania opartego na cookie.
Użytkownicy są zapisani w bazie danych, lecz nie będę robił systemu rejestracji, ponieważ dostęp jest potrzebny tylko dla dwóch osób.
Poniżej mój plik login_funcs.inc
<span class="kw3">mysql_close</span><span class="br0">(</span><span class="re0">$dbh</span><span class="br0">)</span><span class="sy0">;</span> </div><li class="li1"><div class="de1"> <span class="br0">}</span></div><li class="li2"><div class="de2"><span class="br0">}</span></div><li class="li1"><div class="de1"> </div><li class="li2"><div class="de2"><span class="kw2">function</span> user_logout<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div><li class="li1"><div class="de1"> <span class="kw3">setcookie</span><span class="br0">(</span><span class="st0">'user_name'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> <span class="br0">(</span><span class="kw3">time</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">+</span><span class="nu0">2592000</span><span class="br0">)</span><span class="sy0">,</span> <span class="st0">'/'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> 0<span class="br0">)</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="kw3">setcookie</span><span class="br0">(</span><span class="st0">'id_hash'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> <span class="br0">(</span><span class="kw3">time</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">+</span><span class="nu0">2592000</span><span class="br0">)</span><span class="sy0">,</span> <span class="st0">'/'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> 0<span class="br0">)</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> </div><li class="li2"><div class="de2"><span class="br0">}</span></div><li class="li1"><div class="de1"> </div><li class="li2"><div class="de2"><span class="kw2">function</span> user_set_tokens<span class="br0">(</span><span class="re0">$user_name_in</span><span class="br0">)</span> <span class="br0">{</span></div><li class="li1"><div class="de1"> <span class="kw3">global</span> <span class="re0">$supersecret_hash_padding</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="kw1">if</span> <span class="br0">(</span><span class="sy0">!</span><span class="re0">$user_name_in</span><span class="br0">)</span> <span class="br0">{</span></div><li class="li1"><div class="de1"> <span class="re0">$feedback</span> <span class="sy0">=</span> <span class="st0">'<div class="error">Błąd - Brak nazwy użytkownika</div>'</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="kw1">return</span> <span class="kw2">false</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="br0">}</span></div><li class="li2"><div class="de2"> <span class="re0">$user_name</span> <span class="sy0">=</span> <span class="kw3">strtolower</span><span class="br0">(</span><span class="re0">$user_name_in</span><span class="br0">)</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="re0">$id_hash</span> <span class="sy0">=</span> <span class="kw3">md5</span><span class="br0">(</span><span class="re0">$user_name</span><span class="sy0">.</span><span class="re0">$supersecret_hash_padding</span><span class="br0">)</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="kw3">setcookie</span><span class="br0">(</span><span class="st0">'user_name'</span><span class="sy0">,</span> <span class="re0">$user_name</span><span class="sy0">,</span> <span class="br0">(</span><span class="kw3">time</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">+</span><span class="nu0">2592000</span><span class="br0">)</span><span class="sy0">,</span> <span class="st0">'/'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> 0<span class="br0">)</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="kw3">setcookie</span><span class="br0">(</span><span class="st0">'id_hash'</span><span class="sy0">,</span> <span class="re0">$id_hash</span><span class="sy0">,</span> <span class="br0">(</span><span class="kw3">time</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">+</span><span class="nu0">2592000</span><span class="br0">)</span><span class="sy0">,</span> <span class="st0">'/'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> 0<span class="br0">)</span><span class="sy0">;</span></div><li class="li2"><div class="de2"><span class="br0">}</span></div><li class="li1"><div class="de1"><span class="sy1">?></span></div> [/list]<div class="foot">[PHP] okens<span class="br0">(</span><span class="re0">$user_name</span><span class="br0">)</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="kw1">return</span> <span class="nu0">1</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span></div><li class="li2"><div class="de2"> <span class="re0">$feedback</span> <span class="sy0">=</span> <span class="st0">'<div class="error">Błąd - Konto nie zostało jeszcze potwierdzone</div>'</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="kw1">return</span> <span class="re0">$feedback</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="br0">}</span></div><li class="li1"><div class="de1"> <span class="br0">}</span></div><li class="li2"><div class="de2"> <span class="kw3">mysql_close</span><span class="br0">(</span><span class="re0">$dbh</span><span class="br0">)</span><span class="sy0">;</span> </div><li class="li1"><div class="de1"> <span class="br0">}</span></div><li class="li2"><div class="de2"><span class="br0">}</span></div><li class="li1"><div class="de1"> </div><li class="li2"><div class="de2"><span class="kw2">function</span> user_logout<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div><li class="li1"><div class="de1"> <span class="kw3">setcookie</span><span class="br0">(</span><span class="st0">'user_name'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> <span class="br0">(</span><span class="kw3">time</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">+</span><span class="nu0">2592000</span><span class="br0">)</span><span class="sy0">,</span> <span class="st0">'/'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> 0<span class="br0">)</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="kw3">setcookie</span><span class="br0">(</span><span class="st0">'id_hash'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> <span class="br0">(</span><span class="kw3">time</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">+</span><span class="nu0">2592000</span><span class="br0">)</span><span class="sy0">,</span> <span class="st0">'/'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> 0<span class="br0">)</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> </div><li class="li2"><div class="de2"><span class="br0">}</span></div><li class="li1"><div class="de1"> </div><li class="li2"><div class="de2"><span class="kw2">function</span> user_set_tokens<span class="br0">(</span><span class="re0">$user_name_in</span><span class="br0">)</span> <span class="br0">{</span></div><li class="li1"><div class="de1"> <span class="kw3">global</span> <span class="re0">$supersecret_hash_padding</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="kw1">if</span> <span class="br0">(</span><span class="sy0">!</span><span class="re0">$user_name_in</span><span class="br0">)</span> <span class="br0">{</span></div><li class="li1"><div class="de1"> <span class="re0">$feedback</span> <span class="sy0">=</span> <span class="st0">'<div class="error">Błąd - Brak nazwy użytkownika</div>'</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="kw1">return</span> <span class="kw2">false</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="br0">}</span></div><li class="li2"><div class="de2"> <span class="re0">$user_name</span> <span class="sy0">=</span> <span class="kw3">strtolower</span><span class="br0">(</span><span class="re0">$user_name_in</span><span class="br0">)</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="re0">$id_hash</span> <span class="sy0">=</span> <span class="kw3">md5</span><span class="br0">(</span><span class="re0">$user_name</span><span class="sy0">.</span><span class="re0">$supersecret_hash_padding</span><span class="br0">)</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="kw3">setcookie</span><span class="br0">(</span><span class="st0">'user_name'</span><span class="sy0">,</span> <span class="re0">$user_name</span><span class="sy0">,</span> <span class="br0">(</span><span class="kw3">time</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">+</span><span class="nu0">2592000</span><span class="br0">)</span><span class="sy0">,</span> <span class="st0">'/'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> 0<span class="br0">)</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="kw3">setcookie</span><span class="br0">(</span><span class="st0">'id_hash'</span><span class="sy0">,</span> <span class="re0">$id_hash</span><span class="sy0">,</span> <span class="br0">(</span><span class="kw3">time</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">+</span><span class="nu0">2592000</span><span class="br0">)</span><span class="sy0">,</span> <span class="st0">'/'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> 0<span class="br0">)</span><span class="sy0">;</span></div><li class="li2"><div class="de2"><span class="br0">}</span></div><li class="li1"><div class="de1"><span class="sy1">?></span></div> [/list]<div class="foot">[PHP] [topic=0]op na funkcję layout_top() gdyż zdefiniowałem w niej taką instrukcję(plik layout.php): <!--Geshi:145955:php--><pre class="php-brief" style="font-family:monospace;"><div class="head">[PHP] <a href='./Pobierz-Plik-145955.html, <span class="kw3">echo</span> </div><li class="li1"><div class="de1"> <span class="sy0"><</span>link rel<span class="sy0">=</span><span class="st0">"stylesheet"</span> type<span class="sy0">=</span><span class="st0">"text/css"</span> href<span class="sy0">=</span><span class="st0">"http://example.com/layout/layout_css.css"</span><span class="sy0">></span></div><li class="li2"><div class="de2"><span class="sy1">?></span></div> [/list]<div class="foot">[PHP] <a href='./Pobierz-Plik-145955.html_t0'>op<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div><li class="li2"><div class="de2"> <span class="kw1">include</span> <span class="br0">(</span><span class="st0">'login_funcs.inc'</span><span class="br0">)</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="kw1">if</span> <span class="br0">(</span><span class="sy0">!</span>user_isloggedin<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span></div><li class="li2"><div class="de2"> <span class="re0">$login_link</span> <span class="sy0">=</span> <span class="st0">'http://example.com/login.php'</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="re0">$login_word</span> <span class="sy0">=</span> <span class="st0">'Zaloguj'</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span></div><li class="li1"><div class="de1"> <span class="re0">$login_link</span> <span class="sy0">=</span> <span class="st0">'http://example.com/logout.php'</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="re0">$login_word</span> <span class="sy0">=</span> <span class="st0">'Wyloguj '</span><span class="sy0">.</span><span class="re0">$_COOKIE</span><span class="br0">[</span><span class="st0">'user_name'</span><span class="br0">]</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="br0">}</span></div><li class="li2"><div class="de2"> <span class="kw3">echo</span> </div><li class="li1"><div class="de1"> <span class="sy0"><</span>link rel<span class="sy0">=</span><span class="st0">"stylesheet"</span> type<span class="sy0">=</span><span class="st0">"text/css"</span> href<span class="sy0">=</span><span class="st0">"http://example.com/layout/layout_css.css"</span><span class="sy0">></span></div><li class="li2"><div class="de2"><span class="sy1">?></span></div> [/list]<div class="foot">[PHP] <a href='./Pobierz-Plik-145955.html, [/list]<div class="foot">[PHP] <a href='./Pobierz-Plik-145956.html_t0'>op<span class="br0">(</span><span class="br0">)</span><span class="sy0">.</span><span class="st0">'<table cellpadding="0" cellspacing="0" border="0" align="center" class="login"></span></div><li class="li2"><div class="de2"><span class="st0"> <form action="'</span><span class="sy0">.</span><span class="re0">$php_self</span><span class="sy0">.</span><span class="st0">'" method="post"> </span></div><li class="li1"><div class="de1"><span class="st0"> <tr></span></div><li class="li2"><div class="de2"><span class="st0"> <td>'</span><span class="sy0">.</span><span class="re0">$feedback_str</span><span class="sy0">.</span><span class="st0">'</td>'</span><span class="sy0">;</span></div><li class="li1"><div class="de1"><span class="sy1">?></span></div> [/list]<div class="foot">[PHP] <a href='./Pobierz-Plik-145956.html, <a href='Plaintext-145956.html_t0'>op na funkcję layout_top() gdyż zdefiniowałem w niej taką instrukcję(plik layout.php): <!--Geshi:145955:php--><pre class="php-brief" style="font-family:monospace;"><div class="head">[PHP] <a href='./Pobierz-Plik-145955.html_t0'>okens<span class="br0">(</span><span class="re0">$user_name</span><span class="br0">)</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="kw1">return</span> <span class="nu0">1</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span></div><li class="li2"><div class="de2"> <span class="re0">$feedback</span> <span class="sy0">=</span> <span class="st0">'<div class="error">Błąd - Konto nie zostało jeszcze potwierdzone</div>'</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="kw1">return</span> <span class="re0">$feedback</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="br0">}</span></div><li class="li1"><div class="de1"> <span class="br0">}</span></div><li class="li2"><div class="de2"> <span class="kw3">mysql_close</span><span class="br0">(</span><span class="re0">$dbh</span><span class="br0">)</span><span class="sy0">;</span> </div><li class="li1"><div class="de1"> <span class="br0">}</span></div><li class="li2"><div class="de2"><span class="br0">}</span></div><li class="li1"><div class="de1"> </div><li class="li2"><div class="de2"><span class="kw2">function</span> user_logout<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div><li class="li1"><div class="de1"> <span class="kw3">setcookie</span><span class="br0">(</span><span class="st0">'user_name'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> <span class="br0">(</span><span class="kw3">time</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">+</span><span class="nu0">2592000</span><span class="br0">)</span><span class="sy0">,</span> <span class="st0">'/'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> 0<span class="br0">)</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="kw3">setcookie</span><span class="br0">(</span><span class="st0">'id_hash'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> <span class="br0">(</span><span class="kw3">time</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">+</span><span class="nu0">2592000</span><span class="br0">)</span><span class="sy0">,</span> <span class="st0">'/'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> 0<span class="br0">)</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> </div><li class="li2"><div class="de2"><span class="br0">}</span></div><li class="li1"><div class="de1"> </div><li class="li2"><div class="de2"><span class="kw2">function</span> user_set_tokens<span class="br0">(</span><span class="re0">$user_name_in</span><span class="br0">)</span> <span class="br0">{</span></div><li class="li1"><div class="de1"> <span class="kw3">global</span> <span class="re0">$supersecret_hash_padding</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="kw1">if</span> <span class="br0">(</span><span class="sy0">!</span><span class="re0">$user_name_in</span><span class="br0">)</span> <span class="br0">{</span></div><li class="li1"><div class="de1"> <span class="re0">$feedback</span> <span class="sy0">=</span> <span class="st0">'<div class="error">Błąd - Brak nazwy użytkownika</div>'</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="kw1">return</span> <span class="kw2">false</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="br0">}</span></div><li class="li2"><div class="de2"> <span class="re0">$user_name</span> <span class="sy0">=</span> <span class="kw3">strtolower</span><span class="br0">(</span><span class="re0">$user_name_in</span><span class="br0">)</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="re0">$id_hash</span> <span class="sy0">=</span> <span class="kw3">md5</span><span class="br0">(</span><span class="re0">$user_name</span><span class="sy0">.</span><span class="re0">$supersecret_hash_padding</span><span class="br0">)</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="kw3">setcookie</span><span class="br0">(</span><span class="st0">'user_name'</span><span class="sy0">,</span> <span class="re0">$user_name</span><span class="sy0">,</span> <span class="br0">(</span><span class="kw3">time</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">+</span><span class="nu0">2592000</span><span class="br0">)</span><span class="sy0">,</span> <span class="st0">'/'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> 0<span class="br0">)</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="kw3">setcookie</span><span class="br0">(</span><span class="st0">'id_hash'</span><span class="sy0">,</span> <span class="re0">$id_hash</span><span class="sy0">,</span> <span class="br0">(</span><span class="kw3">time</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">+</span><span class="nu0">2592000</span><span class="br0">)</span><span class="sy0">,</span> <span class="st0">'/'</span><span class="sy0">,</span> <span class="st0">''</span><span class="sy0">,</span> 0<span class="br0">)</span><span class="sy0">;</span></div><li class="li2"><div class="de2"><span class="br0">}</span></div><li class="li1"><div class="de1"><span class="sy1">?></span></div> [/list]<div class="foot">[PHP] [topic=0]op na funkcję layout_top() gdyż zdefiniowałem w niej taką instrukcję(plik layout.php): <!--Geshi:145955:php--><pre class="php-brief" style="font-family:monospace;"><div class="head">[PHP] <a href='./Pobierz-Plik-145955.html, <span class="kw3">echo</span> </div><li class="li1"><div class="de1"> <span class="sy0"><</span>link rel<span class="sy0">=</span><span class="st0">"stylesheet"</span> type<span class="sy0">=</span><span class="st0">"text/css"</span> href<span class="sy0">=</span><span class="st0">"http://example.com/layout/layout_css.css"</span><span class="sy0">></span></div><li class="li2"><div class="de2"><span class="sy1">?></span></div> [/list]<div class="foot">[PHP] <a href='./Pobierz-Plik-145955.html_t0'>op<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div><li class="li2"><div class="de2"> <span class="kw1">include</span> <span class="br0">(</span><span class="st0">'login_funcs.inc'</span><span class="br0">)</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="kw1">if</span> <span class="br0">(</span><span class="sy0">!</span>user_isloggedin<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span></div><li class="li2"><div class="de2"> <span class="re0">$login_link</span> <span class="sy0">=</span> <span class="st0">'http://example.com/login.php'</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="re0">$login_word</span> <span class="sy0">=</span> <span class="st0">'Zaloguj'</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span></div><li class="li1"><div class="de1"> <span class="re0">$login_link</span> <span class="sy0">=</span> <span class="st0">'http://example.com/logout.php'</span><span class="sy0">;</span></div><li class="li2"><div class="de2"> <span class="re0">$login_word</span> <span class="sy0">=</span> <span class="st0">'Wyloguj '</span><span class="sy0">.</span><span class="re0">$_COOKIE</span><span class="br0">[</span><span class="st0">'user_name'</span><span class="br0">]</span><span class="sy0">;</span></div><li class="li1"><div class="de1"> <span class="br0">}</span></div><li class="li2"><div class="de2"> <span class="kw3">echo</span> </div><li class="li1"><div class="de1"> <span class="sy0"><</span>link rel<span class="sy0">=</span><span class="st0">"stylesheet"</span> type<span class="sy0">=</span><span class="st0">"text/css"</span> href<span class="sy0">=</span><span class="st0">"http://example.com/layout/layout_css.css"</span><span class="sy0">></span></div><li class="li2"><div class="de2"><span class="sy1">?></span></div> Dzięki ciekawe to. Jednakże nie znaleziono dotychczas błędów tych stronach z których pochodzą te funkcje.
Ciągle próbuję, eksperymentuję i czekam na odpowiedzi.
<?php ?>
Tak swoją drogą zabrakło Ci "" czy to błąd przy wklejaniu tutaj (layout.php)?
Jeszcze jedno: skoro dopiero po ponownym wejściu na stronę logowania pojawia Ci się "Wyloguj" to: albo dopiero wtedy zostaje spełniony warunek albo tylko tam masz jego wyświetlenie. Warunek zostaje spełniony po ponownym wejściu bo jesteś już zalogowany.Słuchaj Micky:
Jeżeli nie jesteś pewny działania niektórych funkcji, próbuj dodawaj do nich instrukcje echo mówiące co akurat jest wykonywane np:
<?php function is_userloggedin() { } else { } } ?>
Jeżeli wyświetla się ta druga wartość, sprawdź funkcje nadające wartości odpowiednim zmiennym, może nie działają tak jak powinny.
BTW.: (swoją drogą) rozwiązania stosowane w Twojej książce nie są zbyt elastyczne i wygodne. Osobiście proponuję Ci zainteresowanie się Obiektowo Orientowanym Programowaniem (OOP). Dzięki temu każdy egzemplarz użytkownika będzie miał gotowy zestaw funkcji do wykonania i nie będziesz musiał stosować globalnych zmiennych.
Jeżeli jednak wolisz na razie pozostać przy programowaniu strukturalnym, to jak już mówiłem wrzucaj do funkcji echa sprawdzające nadawanie wartości.To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.