lab5 sprawozdanie

Politechnika Świętokrzyska
Projektowanie Aplikacji Internetowych

Laboratorium 2

Protokoły

Data wykonania ćwiczenia: 19.12.2011

Godzina: 11:40

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();


Wyszukiwarka

Podobne podstrony:
Lab5 sprawozdanie
Lab5 sprawozdanie
lab5, SPRAWOZDANIA czyjeś
2010 LAB5 Sprawozdanieid 27064 Nieznany
Lab5 sprawozdanie
lab5 sprawozdanie
G312A-K04-P5, Studia PŚK informatyka, Semestr 5, semestr 5, SI 2, Sprawozdanie lab5
Lab5 Procesory sygnałowe sprawozdanie PWR, PWr, sprawozdania
Lab5-biuro, studia, studia, sprawozdania, pomoce, Lab
Sprawozdanie lab5, WAT, SEMESTR VI, Technol.sieci teleinformat
sprawozdanie5, Elektrotechnika AGH, Semestr II letni 2012-2013, Fizyka II - Laboratorium, laborki, l
Sprawozdanie5PO, AGH WIMIR AiR, Semestr 3, JPO, lab5 JPO
Rafał Polak 12k2 lab5, Inżynieria Oprogramowania - Informatyka, Semestr III, Systemy Operacyjne, Spr
sprawozdanie programowanie lab5 fin
Sidor, miu technologiczne lab5 sidor sprawozdanie, Krytyczna
Sprawozdanie lab5 BGP I8G1S1

więcej podobnych podstron