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:
<?
?>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<title>PODSTRONY - panel administratora</title>
</head>
<body>
<?
if(isset($_POST['pass'])) {
if($_POST['pass']=='haslo')
{
$_SESSION['admin']='ok';
}
}
if((!isset($_SESSION['admin']) || $_SESSION['admin']!='ok') && $_GET['admin']!='wyloguj') {
echo '<form method="POST" action="admin.php"> <p align="center">
Niestety nie jesteś zalogowany.<br> Proszę podać hasło:<br>
<input type="password" name="pass" size="20"><br>
<input type="submit" value="OK"></p>
</form>';
}
if(isset($_GET['admin']) && $_GET['admin']=='wyloguj') {
$_SESSION['admin']='';
echo 'Nastąpiło wylogowanie<br> Przejdź do <a href="./index.php">strony głównej</a>...'; }
if($_SESSION['admin']=='ok')
{
or
die('Nieudane połączenie z bazą danych...'); or
die('Nie udało się wybrać bazy danych...');
?>
<table border="1" width="600" align="center">
<tr>
<td align="center"><b>PANEL ADMINISTRATORA - PODSTRONY</b></td>
</tr>
<tr>
<td align="center">
<a href="admin.php">Strona główna</a> |
<a href="admin.php?podstrony=pokaz">Pokaż podstronę</a> |
<a href="admin.php?podstrony=dodaj">Dodaj podstronę</a></td>
</tr>
<tr>
<td align="center">
<?
if(isset($_GET['podstrony']) && $_GET['podstrony']=='pokaz') {
echo '<b>PODSTRONY W TWOIM SERWISIE:</b><br>'; $link=mysql_query('SELECT * FROM podstrony ORDER BY id desc'); {
echo '<b>'.$wiersz['tytul'].'</b>'; echo '<a href="admin.php?podstrony=edytuj&id='.$wiersz['id'].'">Edytuj</a>'; echo '<a href="admin.php?podstrony=usun&id='.$wiersz['id'].'">Usuń</a>'; }
}
elseif(isset($_GET['podstrony']) && $_GET['podstrony']=='dodaj') {
echo '<b>DODAJ NOWĄ PODSTRONĘ</b><br>'; echo '<form method="POST" action="admin.php?podstrony=dopisz"> <table border="0" width="100%">
<tr>
<td>Tytuł:</td>
<td><input type="text" name="tytul" size="64"></td>
</tr>
<tr>
<td>Treść: </td>
<td><textarea rows="5" name="tresc" cols="42"></textarea></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="DODAJ"></td>
</tr>
</table>
</form>';
}
elseif(isset($_GET['podstrony']) && $_GET['podstrony']=='edytuj' && isset($_GET['id'])) {
$id=$_GET['id'];
$link=mysql_query("SELECT * FROM podstrony WHERE id='$id'");
echo '<b>EDYTUJ NEWSA</b><br>'; echo '<form method="POST" action="admin.php?podstrony=wyedytuj&id='.$wiersz['id'].'"> <table border="0" width="100%">
<tr>
<td>Tytuł:</td>
<td><input type="text" name="tytul" size="64" value="'.$wiersz['tytul'].'"></td>
</tr>
<tr>
<td>Treść: </td>
<td><textarea rows="5" name="tresc" cols="42">'.$wiersz['tresc'].'</textarea></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="EDYTUJ"></td>
</tr>
</table>
</form>';
}
elseif(isset($_GET['podstrony']) && $_GET['podstrony']=='dopisz') {
$tytul=$_POST['tytul'];
$tresc=$_POST['tresc'];
mysql_query("INSERT INTO podstrony VALUES(0,'$tytul','$tresc')"); echo 'Pomyślnie dodałem podstronę o tytule: <b>'.$tytul.'</b> i o treści: <b>'.$tresc.'</b>';
}
elseif(isset($_GET['podstrony']) && $_GET['podstrony']=='wyedytuj' && isset($_GET['id'])) {
$tytul=$_POST['tytul'];
$tresc=$_POST['tresc'];
$id=$_GET['id'];
mysql_query("UPDATE podstrony SET tytul='$tytul' tersc='$tresc' WHERE id='$id'"); echo 'Pomyślnie wyedytowałem podstronę! <br> Jego nowy tytuł to: <b>'.$tytul.'</b>, a treść: <b>'.$tresc.'</b>';
}
elseif(isset($_GET['podstrony']) && $_GET['podstrony']=='usun' && isset($_GET['id'])) {
$id=$_GET['id'];
echo 'Pomyślnie usunąłem podstronę numer '.$id.'!';
}
else echo 'Witaj w panelu administracyjnym podstronami...<br> W górnej części znajduje się menu, które pozwoji ci zarządzać podstronami w twoim serwise.<br>';
?>
</td>
</tr>
<tr>
<td align="right"><a href="admin.php?admin=wyloguj">WYLOGUJ >></a></td>
</tr>
</table>
<?
}
?>
</body>
</html>
<?
or
die('Nieudane połączenie z bazą danych...'); or
die('Nie udało się wybrać bazy danych...');
$strona=$_GET['strona'];
$adres="SELECT * FROM podstrony WHERE tytul='$strona'";
or
die("Wybrana podstrona nie istnieje");
{
}
?>
A do index'u dodaję:
<? 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ć :]