Wymagania:
- Baza MySQL (v. 4.X)
- Interpretator PHP (v 5.X) z serwerem Apache
Struktura plików:
- ./
- index.php // Plik zawierający formularz logowania oraz pierwszą stronę po zalogowaniu, można umieścić tam np. przekierowanie do podstrony (zawiera klawiz wylogowywania).
- page.php // Podstrona (zawiera także klawisz wyloguj).
- register.php
Opis (schemat):
Wchodząc na stronę główną zauważymy formularz logowania, wpisując odpowiednio login i hasło zalogujemy się do serwisu. Panel klienta zawiera link do kolejnej podstrony (page.php), oraz wyloguj. Podstrona zawiera także możliwośc wylogowywania i przejścia do str. głw. Po wylogowywaniu zobaczymy ponownie str. index.php oraz komunikat.
Jeżeli w bazie nie ma żadnego użytkownika trzeba go dodać poprzez plik register.php
Wpisując dane tworzy nowy wiersz w bazie (nowego użytkownika). Baza ma 3 kolumny: 'id' 'login' 'haslo'
Skrypt (baza):
W PHPMyAdmin po wybraniu dostępnej bazy (na niektórych hostingach otrzymujesz jedną bazę) wpisujemy do wiersza poleceń:
`user_id` INT NOT NULL AUTO_INCREMENT ,
`user_login` VARCHAR( 30 ),
`user_haslo` VARCHAR( 30 ),
PRIMARY KEY ( `user_id` )
);
Można to także zrobić ręcznie za pomocą kreatora tablic tworząc nową tablicę 'users'. Będziesz potrzebował/ła 3-kolumn odpowiednio 'user_id' 'user_login' 'user_haslo'. Ustawiamy dla user_id opcje AI (auto icrement) typ: liczbowy oraz opcję Not null. Dla user_login i user_haslo tylko wartość varchar 30. Klucz główny powinen samemu się zrobić dla user_id
Skrypt (kod):
Plik rejestracyjny(register.php):
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
mysql_connect("SERWER DLA DB", "UZYTKOWNIK DB]", "HASLO DB")or die("Nie można nawiązać połączenia z bazą"); //połączenie z bazą danych
mysql_select_db("NAZWA BAZY DANYCH")or die("Wystąpił błąd podczas wybierania bazy danych");
function ShowForm($komunikat=""){ //funkcja wyświetlająca formularz rejestracyjny
echo "$komunikat<br>";
echo "<form action='rejestruj.php' method=post>";
echo "Login: <input type=text name=login><br>";
echo "Hasło: <input type=password name=haslo><br>";
echo "<input type=hidden value='1' name=send>";
echo "<input type=submit value='Zarejestruj mnie'>";
echo "</form>";
}
?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<title>Formularz rejestracyjny</title>
</head>
<body>
<?php
if($_POST["send"]==1){ //sprawdzanie czy formularz został wysłany
if(!empty($_POST["login"]) && !empty($_POST["haslo"])){ //oraz czy uzupełniono wszystkie dane
if(mysql_num_rows(mysql_query("select * from users where user_login='".htmlspecialchars($_POST["login"]."'"))))ShowForm("Użytkownik o podanym loginie już istnieje!!!"); // sprawdzanie czy użytkownik o podanej nazwie już istnieje
else{
mysql_query("insert into users values(NULL, '".htmlspecialchars($_POST["login"])."', '".htmlspecialchars($_POST["haslo"])."')"); // zapisywanie rekordu do bazy
echo "Rejestracja przebiegła pomyślnie. Możesz teraz przejść do <a href='index.php'>Strony głównej</a> i się zalogować.";
}
}
else ShowForm("Nie uzupełniono wszystkich pól!!!");
}
else ShowForm();
mysql_close(); //zamykanie połączenia z bazą
?>
</body>
</html>
Strona główna(index.php):
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
session_start();
session_register("zalogowany");
if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
mysql_connect("SERWER DB", "UZYTKOWNIK DB", "HASLO DB")or die("Nie można nawiązać połączenia z bazą");
mysql_select_db("NAZWA DB")or die("Wystąpił błąd podczas wybierania bazy danych");
function ShowLogin($komunikat=""){
echo "$komunikat<br>";
echo "<form action='index.php' method=post>";
echo "Login: <input type=text name=login><br>";
echo "Hasło: <input type=password name=haslo><br>";
echo "<input type=submit value='Zaloguj!'>";
echo "</form>";
echo "Jeśli nie jesteś zarejestrowany, <a href='rejestruj.php'>tu znajdziesz formularz</a>";
}
?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<title>Strona główna</title>
</head>
<body>
<?php
if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
if($_SESSION["zalogowany"]!=1){
if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
if(mysql_num_rows(mysql_query("select * from users where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".htmlspecialchars($_POST["haslo"])."'"))){
echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>";
$_SESSION["zalogowany"]=1;
}
else echo ShowLogin("Podano złe dane!!!");
}
else ShowLogin();
}
else{
?>
Gratulacje! Zalogowałeś się pomyślnie! Możesz przejśc teraz do innych podstron, np. do <a href="./page.php">tej</a>
<br><a href='index.php?wyloguj=tak'>wyloguj się</a>
<?php
}
?>
</body>
</html>
<?php mysql_close(); ?>
Podstrona (page.php):
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
session_start();
?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<title>podstrona</title>
</head>
<body>
<?php
if($_SESSION["zalogowany"]==0){echo "nie masz dostępu do tej części witryny. <a href='index.php'>Zaloguj się</a></body></html>;"; exit();}
?>
Struktura:
Jeden plik zawierający kod obsługujący formularz.
Opis:
Formularz tekstowy mający wysyłać wiadomość e-mail z strony na twoją skrzynkę. Przedstawiony skrypt jest bardzo prosty, więc dane będą grupowane standardowo tagami, a wysyłana wiadomość posiada nazwę adresata taką jaka podałeś/aś w kodzie.
Skrypt (kod):
Czysty formularz (form.php):
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<input type="text" name="email" /><br />
<textarea name="content" cols="30" rows="6"></textarea>
<input type="submit" value="wyślij" />
</form>
Kawałek obsługujący formularz(form.php):
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$adresat = 'adres@serwer.pl'; // pod ten adres zostanie wysłana wiadomosc
@$email = $_POST['email'];
@$content = $_POST['content'];
$header = "From: ADRES@MAIL.PL \nContent-Type:". // adresat wiadomosci
' text/plain;charset="iso-8859-2"'.
"\nContent-Transfer-Encoding: 8bit";
if (mail($adresat, 'List ze strony', $content, $header))
echo '<p>Wysłano poprawnie e-mail</p>';
else
echo '<p><b>ERROR</b></p><p>Nie wysłano maila!</p>';
?>
Myślę, że nie jest to chaotycznie przedstawione i nie będzie problemów z użytkowaniem. Czcionka pisana kapitalikami w kodzie ma na celu wyróżnienie tekstu którego trzeba odpowiednio zmienić do własnych danych Miłego korzystania i modyfikowania.
Pozdrawiam.
Listing