448 PHP i MySQL dla każdego
Wiadomości będą przechowywane w tabeli o nazwie News, zawierającej następujące kolumny:
♦ Id — typu INTEGER, stanowiąca klucz podstawowy; zawiera identyfikator każdej wiadomości;
♦ Userld — typu INTEGER, stanowiąca klucz obcy z tabeli Users; zawiera identyfikator użytkownika, który wprowadził daną wiadomość do systemu;
♦ Nagłówek — typu VARCHAR, zawierająca nagłówek (skrót) wiadomości;
♦ Tresc — typu TEXT, zawierająca treść wiadomości;
♦ Data —typu DATETIME, zawierająca określenie daty i czasu wprowadzenia wiadomości do systemu;
Tak określona tabela zostanie utworzona za pomocą następującej instrukcji SQL: CREATE TABLE Newst
Id INTEGER AUTOJNCREMENT PRIMARY KEY.
Userld INTEGER NOT NULL.
Nagłówek VARCHAR(255) NOT NULL.
Tresc TEXT NOT NULL.
Data DATETIME
)
Dostęp do czytania wiadomości będą mieli wszyscy użytkownicy naszego serwisu, niezależnie od tego, czy zalogują się na stronie, czy też nie. Z kolei wprowadzać wiadomości do serwisu oraz edytować je będą mogli jedynie użytkownicy posiadający taki przywilej. A zatem do tablicy Przywileje wprowadzimy dodatkowy wiersz:
INSERT INTO Przywileje VALUES(2. 'News')
Jeśli zechcemy użytkownikowi o identyfikatorze 10 nadać przywilej pisania i edycji wiadomości, do tabeli Uzytkownicy_Przywiłeje będziemy musieli wprowadzić wiersz zawierający parę liczb 10. 2. W tym celu wystarczy wykonać zapytanie SQL:
INSERT INTO Uzytkownicy_Przywileje VALUES(10, 2)
Przyjmiemy też zasadę, że każdy użytkownik posiadający przywilej News będzie mógł edytować i usuwać jedynie wprowadzone przez siebie wiadomości. Nie będzie natomiast miał takiego prawa w stosunku do wiadomości wprowadzonych przez innych użytkowników.
Ponieważ wprowadziliśmy nowy typ przywilejów, będziemy musieli zmodyfikować skrypt login.php. Wersją bazową będzie kod zaprezentowany w rozdziale 15. Aktualna postać skryptu została zaprezentowana na listingu 17.1.
Listing 17.1. Treść skryptu login.php <?PHP
function checkPass($user. Spass)
{
ŚuserNameLength - strlen(Juser):
SuserPassLength = strlen(Jpass);