Jak napisać proste forum w PHP/HTML
Nasz skrypt będzie zbudowany z następujących plików:
- index.php
- forum.php
- login.html
- login.php
- register.php
- rejestracja.html
- topic.php
a także plik DB.sql.zip który zawiera strukture:
— phpMyAdmin SQL Dump
— version 3.3.7deb7
— http://www.phpmyadmin.net
—
— Host: localhost
— Czas wygenerowania: 15 Kwi 2014, 09:58
— Wersja serwera: 5.1.73
— Wersja PHP: 5.3.3-7+squeeze19
SET SQL_MODE=”NO_AUTO_VALUE_ON_ZERO”;
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
—
— Baza danych: `arsanael_sexifocia`
—
— ——————————————————–
—
— Struktura tabeli dla `TAB_FORUM_TOPICS`
—
CREATE TABLE IF NOT EXISTS `TAB_FORUM_TOPICS` (
`ID` int(32) NOT NULL,
`NAZWA_TEMATU` varchar(32) NOT NULL,
`TRESC` text NOT NULL,
`AUTOR_ID` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
—
— Zrzut danych tabeli `TAB_FORUM_TOPICS`
—
INSERT INTO `TAB_FORUM_TOPICS` (`ID`, `NAZWA_TEMATU`, `TRESC`, `AUTOR_ID`) VALUES
(0, 'temat’, 'tresc’, 0),
(1, 'Krasnale’, 'Czy znacie krasnale?’, 0);
— ——————————————————–
—
— Struktura tabeli dla `TAB_ODP`
—
CREATE TABLE IF NOT EXISTS `TAB_ODP` (
`ID` int(32) NOT NULL,
`TRESC` text NOT NULL,
`ID_TEMATU` int(32) NOT NULL,
`ID_AUTORA` int(32) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
—
— Zrzut danych tabeli `TAB_ODP`
—
INSERT INTO `TAB_ODP` (`ID`, `TRESC`, `ID_TEMATU`, `ID_AUTORA`) VALUES
(0, 'krasnale nie sa fajne’, 1, 0),
(1, 'KRASNALE NIE SA FAJNE’, 1, 0),
(2, 'TESTOWY KOMENTARZ’, 0, 0),
(3, 'ASDASD’, 1, 0);
— ——————————————————–
—
— Struktura tabeli dla `TAB_USER`
—
CREATE TABLE IF NOT EXISTS `TAB_USER` (
`ID` int(32) NOT NULL,
`NAZWA` varchar(32) NOT NULL,
`HASLO` varchar(32) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
—
— Zrzut danych tabeli `TAB_USER`
—
INSERT INTO `TAB_USER` (`ID`, `NAZWA`, `HASLO`) VALUES
(0, 'PAWEL’, 'werty’),
(1, 'MILOSZ’, 'QWERTY’),
(2, 'stefan’, 'qaz’);
index.php:
<a href=”rejestracja.html”> Rejestracja </a>
<br/>
<a href=”login.html”> logowanie </a>
<br/>
<a href=”forum.php”> Forum</a>
<?php
session_start();
if ( isset($_SESSION[’log’]) )
{
// nawiazujemy polaczenie
$connection = @mysql_connect(’localhost’, 'nazwa_bazy’, 'haslo1′)
// w przypadku niepowodznie wyświetlamy komunikat
or die(’Brak połączenia z serwerem MySQL.<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
// nawiązujemy połączenie z bazą danych
$db = @mysql_select_db(’user_db’, $connection)
// w przypadku niepowodzenia wyświetlamy komunikat
or die(’Nie mogę połączyć się z bazą danych<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
// zamykamy połączenie
//mysql_close($connection);
$id = $_SESSION[’log’];
$query = „SELECT * FROM TAB_USER WHERE ID=’$id'”;
$wynik = mysql_fetch_row( mysql_query( $query ) );
print '<br/><br/><br/>zalogowany jako:’.$wynik[1];
}
?>
forum.php
<?php
session_start();
// nawiazujemy polaczenie
$connection = @mysql_connect(’localhost’, 'arsanael_arsik’, 'tymczasowe1′)
// w przypadku niepowodznie wyświetlamy komunikat
or die(’Brak połączenia z serwerem MySQL.<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
// nawiązujemy połączenie z bazą danych
$db = @mysql_select_db(’arsanael_sexifocia’, $connection)
// w przypadku niepowodzenia wyświetlamy komunikat
or die(’Nie mogę połączyć się z bazą danych<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
// zamykamy połączenie
//mysql_close($connection);
if ( !isset( $_GET[’step’] ) )
{
if ( isset($_SESSION[’log’]) )
{
print '<center><font size=”5″><a href=”forum.php?step=adnewtopic”> Nowy Temat </a></font> </center>’;
}
print '<br/><br/><br/><center><font size=”5″> Lista tematów </font> </center>’;
$zapytanie = mysql_query(„SELECT * FROM TAB_FORUM_TOPICS”); //wybiera tabelę i pobiera z niej wszystkie dane
print '<table width=”100%” border=”1″>
<tr><td> <b>nazwa tematu</b> </td> <td> <b>autor</b> </td></tr>’;
if ($zapytanie) { //jeśli zapytanie można wykonać to…
while ($shit = mysql_fetch_array($zapytanie)) { //robi pętlę i przypisuje wszystkie dane do zmiennej
$AUTOR_ID = $shit[’AUTOR_ID’];
$query = „SELECT NAZWA FROM TAB_USER WHERE ID=’$AUTOR_ID'”;
$wynik = mysql_fetch_row( mysql_query( $query ) );
echo '<tr>
<td><a href=”topic.php?t=’.$shit[’ID’].'”>’.$shit[’NAZWA_TEMATU’].'</a></td> <td>’.$wynik[0].'</td>
</tr>’;
}
}
print '</table>’;
}
else
{
if ( isset( $_GET[’step’]) && $_GET[’step’]==’adnewtopic’)
{
print 'Nowy temat’;
print '<form action=”forum.php?step=addtopic” method=”POST”>
Temat: <input type=”text” name=”temat” />
<br/>
Treść: <input type=”text” name=”tresc” />
<br/>
<input type=”submit” value=”wyslij” />
</form>’;
}
if ( isset( $_GET[’step’]) && $_GET[’step’]==’addtopic’)
{
if (isset($_POST[’temat’]) && isset( $_POST[’tresc’] ) )
{
$id = mysql_num_rows(mysql_query(„SELECT * FROM TAB_FORUM_TOPICS”));
$nazwa = $_POST[’temat’];
$tresc = $_POST[’tresc’];
$autor_id = $_SESSION[’log’];
$query = „INSERT INTO TAB_FORUM_TOPICS (ID, NAZWA_TEMATU, TRESC, AUTOR_ID) VALUES (’$id’,’$nazwa’,’$tresc’,’$autor_id’)”;
mysql_query( $query ) or die(’Błąd: ’.mysql_error());
print '<center><font size=”5″> Twoj temat został poprawnie dodany <a href=”forum.php”> wroc </a> </font></center>’;
}
}
}
?>
login.html
Formularz logowania
<form action=”login.php” method=”POST”>
Nazwa uzytkownika: <input type=”text” name=”nazwa_uzytkownika” />
<br/>
Hasło: <input type=”password” name=”haselko” />
<br/>
<input type=”submit” value=”zaloguj” />
</form>
login.php
<?php
session_start();
// nawiazujemy polaczenie
$connection = @mysql_connect(’localhost’, 'arsanael_arsik’, 'tymczasowe1′)
// w przypadku niepowodznie wyświetlamy komunikat
or die(’Brak połączenia z serwerem MySQL.<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
echo „Udało się połączyć z serwerem!<br />”;
// nawiązujemy połączenie z bazą danych
$db = @mysql_select_db(’arsanael_sexifocia’, $connection)
// w przypadku niepowodzenia wyświetlamy komunikat
or die(’Nie mogę połączyć się z bazą danych<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
echo „Udało się połączyć z bazą dancych!”;
// zamykamy połączenie
//mysql_close($connection);
print '<br/>’;
if ( isset($_POST[’nazwa_uzytkownika’]) && isset($_POST[’haselko’]) )
{
//print '<font size=”5″> Rejestracja zakonczona sukcesem!</font>’;
//wyciaganie informacji o danym uzytkowniku
$nazwa = $_POST[’nazwa_uzytkownika’];
$haslo = $_POST[’haselko’];
$query = „SELECT * FROM TAB_USER WHERE NAZWA=’$nazwa’ AND HASLO=’$haslo'”;
$wynik = mysql_fetch_row( mysql_query( $query ) );
print '<font size=”5″> Pomyslnie zalogowano jako ’.$wynik[1].’!</font>
<br/><a href=”index.php”> Wróć </a>’;
$_SESSION[’log’] = $wynik[0];
//$query = „INSERT INTO TAB_USER (ID, NAZWA, HASLO) VALUES (’$id’,’$nazwa’,’$haslo’)”;
//mysql_query( $query ) or die(’Błąd: ’.mysql_error());
}
else
{
print 'nie wprowadzono danych! <a href=”index.html> Wróć </a>’;
}
?>
register.php
<?php
// nawiazujemy polaczenie
$connection = @mysql_connect(’localhost’, 'arsanael_arsik’, 'tymczasowe1′)
// w przypadku niepowodznie wyświetlamy komunikat
or die(’Brak połączenia z serwerem MySQL.<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
echo „Udało się połączyć z serwerem!<br />”;
// nawiązujemy połączenie z bazą danych
$db = @mysql_select_db(’arsanael_sexifocia’, $connection)
// w przypadku niepowodzenia wyświetlamy komunikat
or die(’Nie mogę połączyć się z bazą danych<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
echo „Udało się połączyć z bazą dancych!”;
// zamykamy połączenie
//mysql_close($connection);
print '<br/>’;
if ( isset($_POST[’nazwa_uzytkownika’]) && isset($_POST[’haselko’]) )
{
print '<font size=”5″> Rejestracja zakonczona sukcesem!</font>’;
//obliczanie id
$id = mysql_num_rows(mysql_query(„SELECT * FROM TAB_USER”));
$nazwa = $_POST[’nazwa_uzytkownika’];
$haslo = $_POST[’haselko’];
$query = „INSERT INTO TAB_USER (ID, NAZWA, HASLO) VALUES (’$id’,’$nazwa’,’$haslo’)”;
mysql_query( $query ) or die(’Błąd: ’.mysql_error());
}
else
{
print 'nie wprowadzono danych’;
}
?>
rejestracja.html
Formularz rejestracyjny
<form action=”register.php” method=”POST”>
Nazwa uzytkownika: <input type=”text” name=”nazwa_uzytkownika” />
<br/>
Hasło: <input type=”password” name=”haselko” />
<br/>
<input type=”submit” value=”Zarejestruj” />
</form>
topic.php
<?php
session_start();
// nawiazujemy polaczenie
$connection = @mysql_connect(’localhost’, 'arsanael_arsik’, 'tymczasowe1′)
// w przypadku niepowodznie wyświetlamy komunikat
or die(’Brak połączenia z serwerem MySQL.<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
// nawiązujemy połączenie z bazą danych
$db = @mysql_select_db(’arsanael_sexifocia’, $connection)
// w przypadku niepowodzenia wyświetlamy komunikat
or die(’Nie mogę połączyć się z bazą danych<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
// zamykamy połączenie
//mysql_close($connection);
if (!isset($_GET[’t’]))
{
}
else
{
print '<a href=”index.php”> Wroc </a><br/>’;
if ( isset($_SESSION[’log’]) )
{
$topic_id = $_GET[’t’];
print '<a href=”topic.php?t=’.$topic_id .’&step=answer”>odpowiedz w tym temacie</a>’;
}
$topic_id = $_GET[’t’];
//odczyt
$query = „SELECT * FROM TAB_FORUM_TOPICS WHERE ID=’$topic_id'”;
$wynik = mysql_fetch_row( mysql_query( $query ) );
$nazwa_usera = $wynik[3];
$q2 = „SELECT NAZWA FROM TAB_USER WHERE ID=’$nazwa_usera'”;
$result = mysql_fetch_row( mysql_query( $q2 ) );
print '<table width=”40%” align=”center” border=”1″> <tr> <td> <b> Temat: ’.$wynik[1].'</b> </td></tr> <tr> <td>’.$wynik[2].’ <br/> Autor: ’.$result[0].'</td> </tr> </table>’;
//odczyt odpowiedzi
$q1 = MYSQL_QUERY(„SELECT * FROM TAB_ODP WHERE ID_TEMATU=’$topic_id'”);
if ($q1) { //jeśli zapytanie można wykonać to…
while ($shit = mysql_fetch_array($q1))
{ //robi pętlę i przypisuje wszystkie dane do zmiennej
$AUTOR_ID = $shit[’ID_AUTORA’];
$query = „SELECT NAZWA FROM TAB_USER WHERE ID=’$AUTOR_ID'”;
$wynik = mysql_fetch_row( mysql_query( $query ) );
echo '<table width=”40%” align=”center”><tr>
<td WIDTH=”80%”>’.$shit[’TRESC’].'</td> <td>’.$wynik[0].'</td>
</tr></table>’;
}
}
$nazwa_u = $w1[3];//ODPOWIADAJACY NAZWA
$q10 = „SELECT NAZWA FROM TAB_USER WHERE ID=’$nazwa_u'”;
$r10 = mysql_fetch_row( mysql_query( $q10 ) );
if ($_GET[’step’] == 'answer’)
{
$topic_id = $_GET[’t’];
print ’
Formularz odpowiedzi
<form action=”topic.php?t=’.$topic_id .’&step=send” method=”POST”>
Twoja odpowiedz: <input type=”text” name=”odpowiedz” />
<br/>
<input type=”submit” value=”wyslij” />
</form>’;
}
if ($_GET[’step’] == 'send’)
{
//wysylanie odpowiedzi
//dane
$id = mysql_num_rows(mysql_query(„SELECT * FROM TAB_ODP”));;
$tresc = $_POST[’odpowiedz’];
$id_tematu=$_GET[’t’];
$id_autora = $_SESSION[’log’];
$query = „INSERT INTO TAB_ODP (ID, TRESC, ID_TEMATU, ID_AUTORA) VALUES (’$id’,’$tresc’,’$id_tematu’,’$id_autora’)”;
mysql_query( $query ) or die(’Błąd: ’.mysql_error());
PRINT 'ODPOWIEDZ ZOSTALA DODANA’;
}
print '<a href=”index.php”> Wroc </a>’;
}
?>
Oceń