Witam!
Ostatnio postanowiłem stworzyć sobie coś na styl cms'a. No więc wygrzebałem w sieci tutorial na temat systemu newsów wraz z PA. Tutaj link do niego(jeśli takie linki są niedozwolone to przepraszam, ale chcę jak najlepiej przedstawić mój problem). Lecz nie w tym rzecz. Postanowiłem sobie przerobić ten skrypt pod podstrony i wyszło mi coś takiego:
[PHP] admin.php - pobierz, plaintext
  1. <?
  2. ?>
  3. <html>
  4.  
  5. <head>
  6. <meta http-equiv="Content-type" content="text/html; charset=UTF-8">
  7. <title>PODSTRONY - panel administratora</title>
  8. </head>
  9.  
  10. <body>
  11. <?
  12. if(isset($_POST['pass']))
  13. {
  14. if($_POST['pass']=='haslo')
  15. {
  16. $_SESSION['admin']='ok';
  17. }
  18. }
  19.  
  20. if((!isset($_SESSION['admin']) || $_SESSION['admin']!='ok') && $_GET['admin']!='wyloguj')
  21. {
  22. echo '<form method="POST" action="admin.php">
  23. <p align="center">
  24. Niestety nie jesteś zalogowany.<br> Proszę podać hasło:<br>
  25. <input type="password" name="pass" size="20"><br>
  26. <input type="submit" value="OK"></p>
  27. </form>';
  28. }
  29.  
  30. if(isset($_GET['admin']) && $_GET['admin']=='wyloguj')
  31. {
  32. $_SESSION['admin']='';
  33. echo 'Nastąpiło wylogowanie<br> Przejdź do <a href="./index.php">strony głównej</a>...';
  34. }
  35.  
  36. if($_SESSION['admin']=='ok')
  37. {
  38.  
  39. $uchwyt=mysql_connect('serwer','uzytkownik','haslo')
  40. or die('Nieudane połączenie z bazą danych...');
  41. or die('Nie udało się wybrać bazy danych...');
  42.  
  43. mysql_query ("SET NAMES utf8");
  44.  
  45. ?>
  46.  
  47. <table border="1" width="600" align="center">
  48. <tr>
  49. <td align="center"><b>PANEL ADMINISTRATORA - PODSTRONY</b></td>
  50. </tr>
  51. <tr>
  52. <td align="center">
  53. <a href="admin.php">Strona główna</a> |
  54. <a href="admin.php?podstrony=pokaz">Pokaż podstronę</a> |
  55. <a href="admin.php?podstrony=dodaj">Dodaj podstronę</a></td>
  56. </tr>
  57. <tr>
  58. <td align="center">
  59. <?
  60.  
  61. if(isset($_GET['podstrony']) && $_GET['podstrony']=='pokaz')
  62. {
  63. echo '<b>PODSTRONY W TWOIM SERWISIE:</b><br>';
  64. $link=mysql_query('SELECT * FROM podstrony ORDER BY id desc');
  65. while($wiersz=mysql_fetch_array($link))
  66. {
  67. echo '<b>'.$wiersz['tytul'].'</b>';
  68. echo '<a href="admin.php?podstrony=edytuj&id='.$wiersz['id'].'">Edytuj</a>';
  69. echo ' - ';
  70. echo '<a href="admin.php?podstrony=usun&id='.$wiersz['id'].'">Usuń</a>';
  71. echo "<br>\n";
  72. }
  73.  
  74. }
  75.  
  76. elseif(isset($_GET['podstrony']) && $_GET['podstrony']=='dodaj')
  77. {
  78. echo '<b>DODAJ NOWĄ PODSTRONĘ</b><br>';
  79. echo '<form method="POST" action="admin.php?podstrony=dopisz">
  80. <table border="0" width="100%">
  81. <tr>
  82. <td>Tytuł:</td>
  83. <td><input type="text" name="tytul" size="64"></td>
  84. </tr>
  85. <tr>
  86. <td>Treść: </td>
  87. <td><textarea rows="5" name="tresc" cols="42"></textarea></td>
  88. </tr>
  89. <tr>
  90. <td> </td>
  91. <td><input type="submit" value="DODAJ"></td>
  92. </tr>
  93. </table>
  94. </form>';
  95. }
  96.  
  97. elseif(isset($_GET['podstrony']) && $_GET['podstrony']=='edytuj' && isset($_GET['id']))
  98. {
  99. $id=$_GET['id'];
  100. $link=mysql_query("SELECT * FROM podstrony WHERE id='$id'");
  101. $wiersz=mysql_fetch_array($link);
  102.  
  103. echo '<b>EDYTUJ NEWSA</b><br>';
  104. echo '<form method="POST" action="admin.php?podstrony=wyedytuj&id='.$wiersz['id'].'">
  105. <table border="0" width="100%">
  106. <tr>
  107. <td>Tytuł:</td>
  108. <td><input type="text" name="tytul" size="64" value="'.$wiersz['tytul'].'"></td>
  109. </tr>
  110. <tr>
  111. <td>Treść: </td>
  112. <td><textarea rows="5" name="tresc" cols="42">'.$wiersz['tresc'].'</textarea></td>
  113. </tr>
  114. <tr>
  115. <td> </td>
  116. <td><input type="submit" value="EDYTUJ"></td>
  117. </tr>
  118. </table>
  119. </form>';
  120. }
  121.  
  122. elseif(isset($_GET['podstrony']) && $_GET['podstrony']=='dopisz')
  123. {
  124. $tytul=$_POST['tytul'];
  125. $tresc=$_POST['tresc'];
  126.  
  127. mysql_query("INSERT INTO podstrony VALUES(0,'$tytul','$tresc')");
  128. echo 'Pomyślnie dodałem podstronę o tytule: <b>'.$tytul.'</b> i o treści: <b>'.$tresc.'</b>';
  129.  
  130. }
  131.  
  132. elseif(isset($_GET['podstrony']) && $_GET['podstrony']=='wyedytuj' && isset($_GET['id']))
  133. {
  134. $tytul=$_POST['tytul'];
  135. $tresc=$_POST['tresc'];
  136. $id=$_GET['id'];
  137.  
  138. mysql_query("UPDATE podstrony SET tytul='$tytul' tersc='$tresc' WHERE id='$id'");
  139. echo 'Pomyślnie wyedytowałem podstronę! <br> Jego nowy tytuł to: <b>'.$tytul.'</b>, a treść: <b>'.$tresc.'</b>';
  140.  
  141. }
  142.  
  143. elseif(isset($_GET['podstrony']) && $_GET['podstrony']=='usun' && isset($_GET['id']))
  144. {
  145. $id=$_GET['id'];
  146.  
  147. mysql_query("DELETE FROM podstrony WHERE id='$id'");
  148. echo 'Pomyślnie usunąłem podstronę numer '.$id.'!';
  149.  
  150. }
  151.  
  152. else echo 'Witaj w panelu administracyjnym podstronami...<br>
  153. W górnej części znajduje się menu, które pozwoji ci zarządzać podstronami w twoim serwise.<br>';
  154. ?>
  155. </td>
  156. </tr>
  157.  
  158. <tr>
  159. <td align="right"><a href="admin.php?admin=wyloguj">WYLOGUJ >></a></td>
  160. </tr>
  161. </table>
  162. <?
  163. mysql_close($uchwyt);
  164. }
  165.  
  166. ?>
  167. </body>
  168.  
  169. </html>
[PHP] admin.php - pobierz, plaintext

[PHP] podstrona.php - pobierz, plaintext
  1. <?
  2.  
  3. $uchwyt=mysql_connect('serwer','uzytkownik','haslo')
  4. or die('Nieudane połączenie z bazą danych...');
  5. or die('Nie udało się wybrać bazy danych...');
  6.  
  7. mysql_query ("SET NAMES utf8");
  8.  
  9. $strona=$_GET['strona'];
  10.  
  11. $adres="SELECT * FROM podstrony WHERE tytul='$strona'";
  12.  
  13. $link=mysql_query($adres)
  14. or die("Wybrana podstrona nie istnieje");
  15.  
  16. while($wiersz=mysql_fetch_array($link))
  17. {
  18. echo '<b>';
  19. echo $wiersz['tresc'];
  20. echo "<br>\n";
  21. echo "<br>\n";
  22. }
  23.  
  24. mysql_close($uchwyt);
  25. ?>
[PHP] podstrona.php - pobierz, plaintext


A do index'u dodaję:

  1. <? include('podstrona.php'); ?>


I teraz mam parę pytań:
1. Jakie jest bezpieczeństwo tego skryptu, czy istnieje możliwość włamania się do PA?
2. Obydwa skrypty (podstron i newsów) są podobne, można je dzięki temu jakoś skrócić?
3. Jak widać podstrony są wywoływane poprzez ?strona=tytuł_podstrony, ale co jeśli użytkownik wstawi polskie znaki i spacje do tytułu? Myślałem nad dodaniem dodatkowego pola do tablicy podstrony o nazwie np. "adres" i dodawanie do niej tego co do tytul tyle że ze spacjami zamienionymi na "_", polskimi znakami na te bez ogonków i usuniętą resztą znaków jakie nie mogą się znaleźć w adresie. Co o tym sądzicie można to zrobić prościej?

Na razie tyle, jak będę miał jeszcze jakieś wątpliwości to nie zawaham się napisać :]