|
|
---|---|
|
|
|
|
|
1. Zabezpieczyć serwis WWW przed niepożądanym dostępem z adresu IP.
Podczas logowania do systemu zarządzania stroną (plik ‘login.php’) sprawdzamy ip użytkownika. Blokowane adresy znajdują się w pliku ‘ip.txt’. Jeśli IP użytkownika nie znajduje się na liście przeprowadzane jest logowanie, w przeciwnym wypadku wyświetlany jest komunikat „masz bana”.
session_name('TESTOWA');
session_start();
echo 'Twoje IP to: '.$_SERVER['REMOTE_ADDR'];
if(isset($_SESSION['user'])) {
header('Location:http://localhost/paicms/zarzadzanie.php');
} else {
$ip = file_get_contents("ip.txt");
$ipArray = explode(';', $ip);
if(in_array($_SERVER['REMOTE_ADDR'], $ipArray)) {
echo "masz bana";
}else{
Logowanie…
2. Stworzyć mini portal z wykorzystaniem szablonów, treść stron ma być
przechowywana w bazie. Utworzyć panel administracyjny do prowadzania, zmiany i usuwania danych z bazy.
Menu strony pobierane jest z bazy danych.
$sql='select * from menu';
$zaw=mysql_query($sql);
echo '<div id="menu"><ul>';
while ($row = mysql_fetch_row($zaw))
echo '<li><a href="'.$row[0].'">'.$row[1].'</a></li>';
echo '</ul>
Tabela ‘menu’ ma formę:
link: VARCHAR | opis: VARCHAR |
---|
Na stronie wyświetlane są wpisy pobierane z bazy danych (tabela ‘news’). Dodajemy je, usuwamy i modyfikujemy z pomocą panelu administracyjnego. Wygląd strony zapożyczony z kursu do WordPressa: http://wp.tutsplus.com/tutorials/wordpress-theme-development-training-wheels-day-one/
Tabela ‘news’ ma formę:
id: NUMBER | tytul: VARCHAR | autor: VARCHAR | data: DATE | tresc: VARCHAR |
---|
Aby przejść do panelu administracyjnego wybieramy z poziomego górnego menu ‘Login’. Jeśli użytkownik jest już zalogowany automatycznie zostaje przenoszony do panelu administracyjnego, jeśli nie jest zalogowany i jego adres ip nie jest zsanowany może wypełnić formularz logowania. Konta przechowywane są w pliku ‘users.txt’. Po zalogowaniu po prawej stronie pojawia się dodatkowa opcja: ‘Wyloguj’. Użytkownik zostaje przeniesiony na stronę ‘zarzadzanie.php’.
Po lewej stronie mamy menu do zarządzania. Za pomocą javascript (kod z kursu http://www.kurshtml.edu.pl/html/wczytywanie_strony_do_ramki_lokalnej,ramki.html ) strony zarządzające treścią wyświetlane są w obiekcie div o id=”middle-column”. Wymiary obiektu są automatycznie dopasowywane do zawartości, tak aby nie pojawiał się pionowy pasek przesuwania za pomocą skryptu javascript z pliku ‘autosize.js’ ( http://www.kurshtml.edu.pl/skrypty/skrypt,autoiframe.html) .
Dodawanie wpisów (plik ‘dodaj.php’):
Wyświetlany jest formularz gdzie użytkownik może wpisać tytuł i treść. Jako autor podawany jest aktualnie zalogowany użytkownik, data pobierana jest automatycznie
$autor = $_SESSION['user'];
$today = date("Y-m-d");
Jeśli uzupełniono wszystkie pola formularza wpis zostaje dodany do bazy danych:
$sql="INSERT INTO news VALUES ($num_row,'$tytul','$autor', '$today', '$tresc');";
Usuwanie wpisów (usun.php):
Wyświetlane są wszystkie wpisy z dodatkową opcją ‘usuń’.
echo '<TABLE>';
$sql2='select * from news';
$zaw2=mysql_query($sql2, $db);
while ($row2 = mysql_fetch_row($zaw2)) {
$id = $row2[0];
echo' <tr><td id="news_title">'.$row2[1].'</td></tr>
<tr><td id="news_info">By '.$row2[2].' on '.$row2[3].' <ahref="delete.php?co=kasuj&id='.$id.'" title="Usuń wpis">usuń</td></tr>
<tr><td id="news_t">'.$row2[4].'</td></tr>
<tr><td height="30px"></td></tr>
<tr><td><center><p><img src="images/separator.jpg" width="500" height="10" alt="separator" /></p></center></td></tr> ';
};
echo " </TABLE> ";
Po wybraniu jednego z wpisów jego id przekazywane jest do pliku ‘delete.php’, gdzie jest usuwany na podstawie id:
function kasuj($id)
{
if ($db = mysql_connect('localhost', 'root', 'admin'))
{
mysql_set_charset("latin2");
if (!mysql_select_db('pai', $db))
{
echo 'Nie można wybrać bazy danych';
exit;
}
$sql="DELETE FROM news WHERE id=$id";
$zaw=mysql_query($sql);
echo 'Usunięto.';
mysql_close($db);
} else
echo "Nie można nawiązać połączenia z bazą danych";
}
if( $_GET['co'] == 'kasuj' );
{
kasuj($_GET['id']);
}
Edytowanie wpisów:
Wyświetlane są wszystkie wpisy z dodatkową opcją ‘Edytuj’:
echo '<TABLE>';
$sql2='select * from news';
$zaw2=mysql_query($sql2, $db);
while ($row2 = mysql_fetch_row($zaw2))
{
$ide = $row2[0];
echo' <tr><td id="news_title">'.$row2[1].'</td></tr>
<tr><td id="news_info">By '.$row2[2].' on '.$row2[3].' <a href="edit.php?cos=edit&ide='.$ide.'" title="Edytuj wpis">Edytuj</td></tr>
<tr><td id="news_t">'.$row2[4].'</td></tr>
<tr><td height="30px"></td></tr>
<tr><td><center><p><img src="images/separator.jpg" width="500" height="10" alt="separator" /></p></center></td></tr> ';
};
echo " </TABLE> ";
ID wybranego wpisu przekazywane jest do pliku ‘edit.php’ gdzie wyświetlany jest formularz z pobranym tematem i treścią danego wpisu.
$sql="select * from news where id=$ajdi";
$zaw=mysql_query($sql, $db);
$row=mysql_fetch_row($zaw);
$tytul = $row[1];
$tresc = $row[4];
Po za twierdzeniu, id, nowy tytuł i nowa treść przekazywane są do pliku ‘e.php:
if (isset($_POST['action']) =='edytuj')
{
if(isset($_POST['tytul']) && isset($_POST['tresc'])) {
$tytul = $_POST['tytul'];
$tresc = $_POST['tresc'];
header('Location:http://localhost/paicms/e.php?e=edzio&e_id='.$ajdi.'&e_tytul='.$tytul.'&e_tresc='.$tresc);
} else {
echo 'Proszę wypełnić wszystkie pola formularza.';
}
}
Gdzie na podstawie id edytowany jest wpis w bazie danych:
$sql = "UPDATE `news` SET `tytul` = '".$tytul."',`tresc` = '".$tresc."' WHERE id=".$ide;
4. Utworzyć klasę do raportowanie danych z bazy Mysql do pliku pdf.
Funkcja ‘utworzPdf ‘ klasy Pdf tworzy raport z tabeli pdf (plik ‘pdf.php’).
class Pdf
{
function utworzPdf()
{
require('fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->SetAuthor('Chebdowski i Grzeszczak');
$pdf->SetSubject('Raport PDF');
$pdf->SetDrawColor(123);
$pdf->Cell(0,0,'RAPORT PDF',0,1,'C');
$pdf->SetFontSize(12);
$pdf->SetDrawColor(123);
$pdf->ln(20);
$pdf->Cell(100,8,dlu('Numer'),1,0,'L');
$pdf->SetX(40);
$pdf->Cell(0,8,dlu('Imie'),'L',0,'L');
$pdf->SetX(60);
$pdf->Cell(0,8,dlu('Nazwisko'),'L',0,'L');
$pdf->SetX(80);
$pdf->Cell(0,8,dlu('Wiek'),'L',1,'L');
$link = mysql_connect("localhost", "root", "admin");
mysql_select_db("pai")or die("ERROR:".mysql_error());
$zaw1 = mysql_query("select * from pdf")or die("ERROR:".mysql_error());
while ($row1 = mysql_fetch_row($zaw1)) {
$pdf->Cell(100,8,dlu($row1[0]),1,0,'L');
$pdf->SetX(40);
$pdf->Cell(0,8,dlu($row1[1]),'L',0,'L');
$pdf->SetX(60);
$pdf->Cell(0,8,dlu($row1[2]),'L',0,'L');
$pdf->SetX(80);
$pdf->Cell(0,8,dlu($row1[3]),'L',1,'L');
}
$pdf->Output('wynik.pdf',false);
echo 'Wyeksportowano do wynik.pdf';
mysql_close($link);
}
}
Wynik zapisywany jest do pliku ‘wynik.pdf’. Uruchomienie skryptu powoduje utworzenie obiektu klasy Pdf :
$pdf = new Pdf;
$pdf->utworzPdf();