Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: CMS - błędy
Forum PHP.pl > Forum > PHP
jacked
Cześć, kupiłem książkę "jak stworzyć własny CMS" Łukasza Sosny. Z ciekawości, chciałem sprawdzić, jaki system przygotuję, za pomocą książki. Więc zainstalowałem go na lokalnym serwerze. I mam pewien problem. Mianowicie błędy w php, nie wiem co jest nie tak, poprawnie uzupełniłem plik konfiguracyjny do połączenia z bazą danych, zaimportowałem plik z poleceniami mySQL, tworzą one po porostu odpowiednie tabele i rekordy.
Tot lista błędów:


To jest plik silnik.php:
  1. <?php
  2.  
  3.  
  4. session_register('uzy_id');
  5. session_register('uzy_nazwa');
  6. session_register('uzy_email');
  7. session_register('uzy_szablon');
  8. session_register('uzy_jezyk');
  9. session_register('uzy_czy_admin');
  10. session_register('uzy_zalogowany');
  11.  
  12. require('./konfiguracja.php');
  13.  
  14. if($BazaDanych == 'mysql')
  15. {
  16. include('./silnik/sterownik_mysql.php');
  17. }
  18.  
  19. $Polaczenie = PolaczZBaza($HostZBaza,$LoginUzytkownika,$HasloUzytkownika);
  20.  
  21. if($Polaczenie == FALSE)
  22. {
  23. echo 'Połączenie z bazą danych nie powiodło się';
  24. exit();
  25. }
  26.  
  27. $WybieranieBazy = WybierzBazeDanych($NazwaBazyDanych);
  28.  
  29. if($WybieranieBazy == FALSE)
  30. {
  31. echo 'Wybieranie bazy danych nie powiodło się';
  32. exit();
  33. }
  34.  
  35. function PokazBlad($Wiadomosc,$Plik,$Linia,$ZapytanieSQL)
  36. {
  37. echo 'Błąd bazy danych';
  38. echo '<br />';
  39. echo 'W pliku: '.$Plik;
  40. echo '<br />';
  41. echo 'W linii: '.$Linia;
  42. echo '<br />';
  43. echo 'W zapytaniu: '.$ZapytanieSQL;
  44. echo '<br />';
  45. echo 'Informacje od bazy danych:';
  46. echo PokazBladBazyDanych();
  47. }
  48.  
  49. if($BazaDanych == 'mysql')
  50. {
  51. $ZapytanieKonfiguracja = 'SELECT konfig_nazwa,konfig_wartosc FROM '.$PrefixTabelek.'konfig';
  52. }
  53.  
  54. if(!WykonajZapytanie($ZapytanieKonfiguracja))
  55. {
  56. PokazBlad('Błąd w zapytaniu',__FILE__,__LINE__,$ZapytanieKonfiguracja);
  57. }
  58.  
  59. $Wynik = PobierzWynik();
  60. $IleWynikow = PobierzIlosc();
  61.  
  62. for($i=0;$i<$IleWynikow;$i++)
  63. {
  64. $KluczWyniku = $Wynik[$i]['konfig_nazwa'];
  65. $KonfiguracjaWitryny[$KluczWyniku] = $Wynik[$i]['konfig_wartosc'];
  66. }
  67.  
  68. if(empty($_SESSION['uzy_id']))
  69. {
  70. $_SESSION['uzy_id'] = '';
  71. $_SESSION['uzy_nazwa'] = '';
  72. $_SESSION['uzy_email'] = '';
  73. $_SESSION['uzy_szablon'] = $KonfiguracjaWitryny['dt'];
  74. $_SESSION['uzy_jezyk'] = $KonfiguracjaWitryny['dl'];
  75. $_SESSION['uzy_czy_admin'] = '';
  76. $_SESSION['uzy_zalogowany'] = '';
  77. }
  78.  
  79. if($KonfiguracjaWitryny['blip'] == 'tak')
  80. {
  81. if($BazaDanych == 'mysql')
  82. {
  83. $ZapytanieIP = 'SELECT ip_numer FROM '.$PrefixTabelek.'banujip';
  84. }
  85.  
  86. if(!WykonajZapytanie($ZapytanieIP))
  87. {
  88. PokazBlad('Błąd w zapytaniu',__FILE__,__LINE__,$ZapytanieIP);
  89. }
  90.  
  91. $Wynik = PobierzWynik();
  92. $IleWynikow = PobierzIlosc();
  93.  
  94. for($i=0;$i<$IleWynikow;$i++)
  95. {
  96. if($Wynik[$i]['ip_numer'] == $_SERVER['REMOTE_ADDR'])
  97. {
  98. include('./strony_html/'.addslashes($_SESSION['uzy_jezyk']).'/zbanowany_ip.html');
  99. exit();
  100. }
  101. }
  102. }
  103.  
  104. if(!include('./jezyki/'.addslashes($_SESSION['uzy_jezyk']).'/jezyk.php'))
  105. {
  106. echo 'Nie mogłem włączyć tego języka: '.addslashes($_SESSION['uzy_jezyk']);
  107. exit();
  108. }
  109.  
  110.  
  111. function DrukujSzablonStrony()
  112. {
  113. global $CMSModul;
  114. global $StronaTytul;
  115. global $SlowaKuczowe;
  116. global $OpisStrony;
  117.  
  118. if(!include('./szablony/'.addslashes($_SESSION['uzy_szablon']).'/szablon.php'))
  119. {
  120. echo 'Nie mogłem włączyć tego szabonu: '.addslashes($_SESSION['uzy_szablon']);
  121. exit();
  122. }
  123. }
  124.  
  125.  
  126. function DrukujNaglowek($StronaTytul,$SlowaKluczowe,$OpisStrony)
  127. {
  128. global $KonfiguracjaWitryny;
  129. global $JezykStrony;
  130. echo '<?xml version="1.0" encoding="'.$JezykStrony['kodowanie'].'"?>';
  131.  
  132. echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"';
  133. echo ' "http://localhost/dtd/xhtml11.dtd">';
  134. echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="'.$JezykStrony['jezyk'].'">';
  135. echo '<head>';
  136. echo '<meta http-equiv="Content-Type" content="text/html; charset='.$JezykStrony['kodowanie'].'" />';
  137. echo '<meta http-equiv="Content-language" content="'.$JezykStrony['jezyk_okresl'].'" />';
  138. echo '<meta name="copyright" content="LinuxMag.pl PRO CMS" />';
  139. echo '<meta name="description" content="'.$OpisStrony.'" />';
  140. echo '<meta name="keywords" content="'.$SlowaKluczowe.'" />';
  141. echo '<meta name="robots" content="all" />';
  142. echo '<meta name="rating" content="general" />';
  143. echo '<meta name="resource-type" content="document" />';
  144. echo '<meta name="generator" content="LinuxMag.pl PRO CMS" /> ';
  145. echo '<link rel="stylesheet" type="text/css" href="szablony/'.addslashes($_SESSION['uzy_szablon']).'/style.css" />';
  146. echo '<title>'.$StronaTytul.''.$KonfiguracjaWitryny['nazwa'].'</title>';
  147. echo '</head>';
  148. echo '<body>';
  149.  
  150. echo '<table class="tabela_logo">';
  151. echo '<tr>';
  152. echo '<td class="komorka_logo"></td>';
  153. echo '</tr>';
  154. echo '</table>';
  155. }
  156.  
  157. function DrukujSciezke()
  158. {
  159. global $URIDlaModulu;
  160. echo $URIDlaModulu;
  161. }
  162.  
  163. function DrukujLeweMenu()
  164. {
  165.  
  166. global $BazaDanych;
  167. global $PrefixTabelek;
  168.  
  169. if($BazaDanych == 'mysql')
  170. {
  171. $ZapytanieBlok = 'SELECT * FROM '.$PrefixTabelek.'bloki
  172. WHERE
  173. blok_strona = "l" AND
  174. blok_aktywny = "t"
  175. ORDER BY
  176. blok_pozycja ASC';
  177. }
  178.  
  179. if(!WykonajZapytanie($ZapytanieBlok))
  180. {
  181. PokazBlad('Błąd w zapytaniu',__FILE__,__LINE__,$ZapytanieBlok);
  182. }
  183.  
  184. $Wynik = PobierzWynik();
  185. $IleWynikow = PobierzIlosc();
  186.  
  187. echo '<table class="l_menu" cellpadding="0" cellspacing="0">';
  188.  
  189. for($i=0;$i<$IleWynikow;$i++)
  190. {
  191. echo '<tr>';
  192. echo '<td class="l_1">'.stripslashes($Wynik[$i]['blok_pokaz']).'</td>';
  193. echo '</tr>';
  194. echo '<tr>';
  195. echo '<td class="l_2">';
  196. include('./bloki/'.$Wynik[$i]['blok_nazwa'].'/'.$Wynik[$i]['blok_nazwa'].'.php');
  197. echo '</td>';
  198. echo '</tr>';
  199. echo '<tr>';
  200. echo '<td class="l_3"></td>';
  201. echo '</tr>';
  202. }
  203.  
  204. echo '</table>';
  205.  
  206. }
  207.  
  208. function DrukujPraweMenu()
  209. {
  210. global $BazaDanych;
  211. global $PrefixTabelek;
  212.  
  213. if($BazaDanych == 'mysql')
  214. {
  215. $ZapytanieBlok = 'SELECT * FROM '.$PrefixTabelek.'bloki
  216. WHERE
  217. blok_strona = "p" AND
  218. blok_aktywny = "t"
  219. ORDER BY
  220. blok_pozycja ASC';
  221. }
  222.  
  223. if(!WykonajZapytanie($ZapytanieBlok))
  224. {
  225. PokazBlad('Błąd w zapytaniu',__FILE__,__LINE__,$ZapytanieBlok);
  226. }
  227.  
  228. $Wynik = PobierzWynik();
  229. $IleWynikow = PobierzIlosc();
  230.  
  231. echo '<table class="p_menu" cellpadding="0" cellspacing="0">';
  232.  
  233. for($i=0;$i<$IleWynikow;$i++)
  234. {
  235. echo '<tr>';
  236. echo '<td class="p_1">'.stripslashes($Wynik[$i]['blok_pokaz']).'</td>';
  237. echo '</tr>';
  238. echo '<tr>';
  239. echo '<td class="p_2">';
  240. include('./bloki/'.$Wynik[$i]['blok_nazwa'].'/'.$Wynik[$i]['blok_nazwa'].'.php');
  241. echo '</td>';
  242. echo '</tr>';
  243. echo '<tr>';
  244. echo '<td class="p_3"></td>';
  245. echo '</tr>';
  246. }
  247.  
  248. echo '</table>';
  249. }
  250.  
  251. function DrukujStopke()
  252. {
  253. echo '<div class="stopka">';
  254. echo 'Copyright &copy; 2006 <a href="http://linuxmag.pl">LinuxMag.pl PRO CMS</a>';
  255. echo '</div>';
  256. echo '</body>';
  257. echo '</html>';
  258. }
  259.  
  260. function DrukujBlad($TrescInformacji)
  261. {
  262. global $JezykStrony;
  263.  
  264. echo '<div class="niepoprawnie">';
  265. echo $TrescInformacji;
  266. echo '<br />';
  267. echo $JezykStrony['wroc_blad'];
  268. echo '</div>';
  269. }
  270.  
  271. function DrukujPoprawne($TrescInformacji)
  272. {
  273. global $JezykStrony;
  274.  
  275. echo '<div class="poprawnie">';
  276. echo $TrescInformacji;
  277. echo '<br />';
  278. echo $JezykStrony['porawnie_idz_dalej'];
  279. echo '</div>';
  280. }
  281.  
  282. function PokazOknoLogowania()
  283. {
  284. global $JezykAdmin;
  285. ?>
  286. <form method="post" action="zaloguj.php">
  287. <table>
  288. <tr>
  289. <td><?php echo $JezykAdmin['nazwa_konta']; ?></td><td><input type="text" name="login_konta"></td>
  290. </tr>
  291. <tr>
  292. <td><?php echo $JezykAdmin['haso_dostepu']; ?></td><td><input type="password" name="haslo_konta"></td>
  293. </tr>
  294. <tr>
  295. <td></td><td>
  296. <input type="hidden" name="logowanie" value="tak">
  297. <input type="submit" value="<?php echo $JezykAdmin['zaloguj_mnie']; ?>"></td>
  298. </tr>
  299. </table>
  300. </form>
  301. <?php
  302. }
  303.  
  304. ?>

A to plik sterownik_mysql.php:
  1. <?php
  2.  
  3. function PolaczZBaza($HostZBaza,$LoginUzytkownika,$HasloUzytkownika)
  4. {
  5. if(mysql_connect($HostZBaza,$LoginUzytkownika,$HasloUzytkownika))
  6. {
  7. return TRUE;
  8. }
  9. else
  10. {
  11. return FALSE;
  12. }
  13. }
  14.  
  15. function WybierzBazeDanych($NazwaBazyDanych)
  16. {
  17. if(mysql_select_db($NazwaBazyDanych))
  18. {
  19. return TRUE;
  20. }
  21. else
  22. {
  23. return FALSE;
  24. }
  25. }
  26.  
  27. function WykonajZapytanie($ZapytanieDoBazy)
  28. {
  29. global $WynikZapytania;
  30.  
  31. $WynikZapytania = mysql_query($ZapytanieDoBazy);
  32.  
  33. if($WynikZapytania)
  34. {
  35. return TRUE;
  36. }
  37. else
  38. {
  39. return FALSE;
  40. }
  41. }
  42.  
  43. function PokazBladBazyDanych()
  44. {
  45.  
  46. $Blad['text'] = mysql_error();
  47. $Blad['number'] = mysql_errno();
  48.  
  49. $InformacjaOBledzie = 'Nazwa: '.$Blad['text'].' Numer: '.$Blad['number'];
  50.  
  51. return $InformacjaOBledzie;
  52. }
  53.  
  54. function PobierzWynik()
  55. {
  56.  
  57. global $WynikZapytania;
  58.  
  59. while($wiersz = mysql_fetch_array($WynikZapytania,MYSQL_ASSOC))
  60. {
  61. $RezultatZapytania[] = $wiersz;
  62. }
  63.  
  64. return $RezultatZapytania;
  65. }
  66.  
  67. function PobierzIlosc()
  68. {
  69. global $WynikZapytania;
  70.  
  71. $IloscRekordow = mysql_num_rows($WynikZapytania);
  72.  
  73. return $IloscRekordow;
  74. }
  75.  
  76. ?>


Strasznie mnie to zniechęca - będę pisał taki CMS, a potem okaże się że on nie działa, są jakieś błędy, proszę o pomoc smile.gif
nospor
Kod zawiera bardzo wiele staroci, które są już zalecane, by ich nie używać. System Cię o tym informuje. Oczywiście możesz wyłączyć wyświetlanie tych błędów ale niestety kod widać że jest stary. Dodatkowo autor tego kodu generuje inne błędy, których nie powinno być. Osobiście polecałbym ci olać tę książkę. No chyba, że specjalnie ją kupiłeś to już z niej korzystaj

edit: luknąłem jeszcze na kod i nie, nie korzystaj z niej nawet jeśli specjalnie ją kupiłeś. Tylko wyrobisz sobie złe nawyki.
kadlub
a co do błędu to zamiast tak

require('./konfiguracja.php');

powinno być chyba tak

require('../konfiguracja.php');
nospor
@kadlub przecież tam żaden błąd nie wskazuje na to co ty pokazałeś.
poza tym ./ jest jak najbardziej poprawne, gdy bierzesz dane z tego samego katalogu
kadlub
faktycznie coś mi się pomyliło
jacked
Okej, No wiadomo że ksiażki nie moha być aktualne zawsze - zwłaszcza jesli chodzi o informaryke gdzie wszysto stale się rozwija. Więc... co innego mi zaproponujesz zeby nauczyć się tworzyć tego rodzaju systemy CMS? Taki wlasny CMS to niezwykle przydatna rzecz.
nospor
Najpierw naucz się podstaw - php + mysql. Masa kursów do tego w necie.
Potem się pomyśli smile.gif
Hpsi
Ja Ci zaproponuje przeczytanie tego tematu:)
Temat: linkiKursy dla poczatkujacych
Fixus
Cytat(jacked @ 17.06.2011, 17:41:05 ) *
Okej, No wiadomo że ksiażki nie moha być aktualne zawsze - zwłaszcza jesli chodzi o informaryke gdzie wszysto stale się rozwija. Więc... co innego mi zaproponujesz zeby nauczyć się tworzyć tego rodzaju systemy CMS? Taki wlasny CMS to niezwykle przydatna rzecz.


Własny CMS to wcale nie taka super rzecz. Raz, że to wymyślanie koła na nowo, a dwa, że masz wiele CMS`ów klasy Enterpreise lub masz też CMF`y

Naucz się po prostu programować smile.gif
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.