Shoutbox со користење на PHP и MySQL

shoutbox

Најпрво да се претставам јас сум Стојковски Дарко aka macstr1k3r и ова е мојот прв гостински пост на овој блог, а се надевам дека во иднина ќе видите повеќе мои постови. Епа да почнеме.

Во претходните постови ви беа објаснети основите на php и како се користи. Во овој пост ќе ги искористиме вештините што ги имате стекнато до сега и ќе ги усовршиме со изработка на една едноставна shoutbox (види испразнисе.мк), апликација која што без големи потешкотии, доколку имате потреба, можете да ја претворите во систем за коментари.

Нашата апликација ќе биде доста едноставна, ќе содржи 2 датотеки, index.php и connect.php, и ќе биде поврзана со една едноставна база на податоци која ќе има една табела со име „izvici“ и во таа табела 4 колони:

  • id
  • ime
  • post
  • mail

Прво што треба да направите е да креирате нова база на податоци.

Креирање на база на податоци

Е сега откако сте ја креирале базата на податоци треба да ги креирате колоните. Тоа можете да го направите рачно или пак со извршување на овој SQL String:

CREATE TABLE izvici (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
ime VARCHAR(45) NOT NULL,
mejl VARCHAR(60) NOT NULL,
post TEXT NOT NULL,
PRIMARY KEY (id)
);

Откако ќе ги креирате сите колони можете да започнете со програмирање. Прво ќе ја направиме датотеката connect.php што ќе содржи информации и функции за поврзување со базата на податоци. Кодот е даден подолу.

<?php
$host = 'localhost'; //адреса до серверот, најчесто е 'localhost'
$korisnik = 'korisnik'; //корисничко име за базата на податоци
$lozinka = 'lozinka'; //лозинка за корисничкото име
$databaza = 'listmk_shoutbox'; //името на база на податоци што ќе ја користиме

$konekcija = mysql_connect($host,$korisnik,$lozinka) or die
('<p> Поврзувањето со серверот е неуспешно обидете се подоцна </p>');

/* Во променливата $konekcija е скалдирана функција со која се поврзуваме до серверот,
доколку поврзувањето е неуспешно се прикажува параграф со информација за грешката */

mysql_select_db($databaza,$konekcija) or die('<p class="greska">Поврзување со база на податоци е неуспешна.</p>');

/*Со mysql_select_db() функцијата избира база на податоци од серверот со која што сакаме да се поврзуваме.*/

?>

Напомена: Доколку сакате можете да ја користите класата за работење со MySQL што ја објави Даниел во претходните постови.

Тоа би било тоа за connect.php, а сега да преминеме на index.php. Првин ќе започнеме со HTML датотеката, а потоа ќе се префрлиме на PHP.

<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Shoutbox for list.mk by macstr1k3r
</head>
<body>

<h1 >Shoutbox</h1>

Формата што ќе ја користиме за праќање на „извиците“ ќе ви ја прикажам сега, а ќе ја додадеме најдолу во index.php датотеката

<form action="<?php $self ?>" method="post">
    <h3>Викааааааајј!</h3>
	<input type="text"name="ime" /><label for="ime" >Име</label><br>
	<input type="text" name="mejl" /><label for="mejl" >Мејл</label><br>
	<input type="hidden" />
	<textarea name="post" rows="5" cols="40"></textarea><br>
	<input type="submit" value="Викни" />
</form>

Сега повелете, подолу е прикажан PHP делот од index.php, мислам дека објаснувањата во коментарите се доволни, доколку има нешто нејасно слободно прашајте.

<?php
include 'connect.php';
$self = $_SERVER['PHP_SELF'];// променливата што го содржи името на оваа датотека
if(isset($_POST['prati'])) // доколку е комплетирано полето формата е испратена
{
            // проверка дали имаме празни полиња, операторот  || значи „или“
            if(empty($_POST['ime']) || empty($_POST['mejl']) || empty($_POST['post']))
	{
            	echo('<p">Некое од полињата не е пополнето</p>');
            }
	else
	{
		/*Доколку сите полиња се пополнети ќе го запишеме постот во базата на податоци.
		Во поглед на безбедноста ќе ги искористиме функциите „htmlspecialchars()“ која што ќе  ги филтрира HTML карактерите во случај некој да се обиде да вметне малициозен код, и функцијата „mysql_real_escape_strings()“ кој што пак ќе го филтрира текстот и ќе ги спречи корисниците да вметнат SQL код кој што ќе им даде пристап до базата на податоци.*/

		$ime = htmlspecialchars(mysql_real_escape_string($_POST['ime']));
		$post = htmlspecialchars(mysql_real_escape_string($_POST['post']));
		$mejl = htmlspecialchars(mysql_real_escape_string($_POST['mejl']));
		/*променливите горе ги содржат внесените име, постот и е-поштата соодветно.*/

		//Променлива кој што ќе го содржи SQL стрингот за запишување во базата на податоци
		$sql="INSERT INTO izvici SET ime='$ime', post='$post', mejl='$mejl';";

		$kveri=mysql_query($sql);

		if(!$kveri)
		{
			echo'<p>Настана грешка при постирањето на твојот пост, обидете се подоцна </p>';
			echo mysql_error();
		}
		else
		{
			echo'<p>Благодариме за вашиот пост</p>';
		}
	}
}

// сега ќе ги испишеме последните 10 „извици“, „крици“, посотви како сакате викајате ги

//променлив акоја што ќе го содржи SQL стрингот
$sql="SELECT * FROM izvici ORDER BY 'id' DESC LIMIT 10;";

$rezultat=mysql_query($sql);

if(!$rezultat)
{
	echo '<p>Настана грешка при читање од датабзата<p>';
}
else
{
	echo '<ul>';
	while ($red = mysql_fetch_array($rezultat))
	{

		echo('<li><div><p>'.$red['ime'].'</p></div><div><p>'.$red['post'].'</p></div></li>');
	}

	echo '</ul>';
}
?>

Сега вметнете ја формата што ви ја дадов погоре и затворете со

</body>
</html>

Откако ќе го направите сето ова треба да добиете код што ќе изгледа слично на овој

<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Shoutbox for list.mk by macstr1k3r</title>
</head>
<body>

<h1 >Shoutbox</h1>

<?php
include 'connect.php';
$self = $_SERVER['PHP_SELF'];
if(isset($_POST['prati']))
{

            if(empty($_POST['ime']) || empty($_POST['mejl']) || empty($_POST['post']))
	{
            	echo('<p">Некое од полињата не е пополнето</p>');
            }
	else
	{

		$ime = htmlspecialchars(mysql_real_escape_string($_POST['ime']));
		$post = htmlspecialchars(mysql_real_escape_string($_POST['post']));
		$mejl = htmlspecialchars(mysql_real_escape_string($_POST['mejl']));

		$sql="INSERT INTO izvici SET ime='$ime', post='$post', mejl='$mejl';";

		$kveri=mysql_query($sql);

		if(!$kveri)
		{
			echo'<p>Настана грешка при постирањето на твојот пост, обидете се подоцна </p>';
			echo mysql_error();
		}
		else
		{
			echo'<p>Благодариме за вашиот пост</p>';
		}
	}
}

$sql="SELECT * FROM izvici ORDER BY 'id' DESC LIMIT 10;";

$rezultat=mysql_query($sql);

if(!$rezultat)
{
	echo '<p>Настана грешка при читање од датабзата<p>';
}
else
{
	echo '<ul>';
	while ($red = mysql_fetch_array($rezultat))
	{

		echo('<li><div><p>'.$red['ime'].'</p></div><div><p>'.$red['post'].'</p></div></li>');
	}

	echo '</ul>';
}
?>

<form action="<?php $self ?>" method="post">
    <h3>Викааааааајј!</h3>
	<input type="text"name="ime" /><label for="ime" >Име</label><br>
	<input type="text" name="mejl" /><label for="mejl" >Мејл</label><br>
	<input type="hidden" />
	<textarea name="post" rows="5" cols="40"></textarea><br>
	<input type="submit" value="Викни" />
</form>
</body>
</html>

И тоа би било тоа. Доколку имате било какви прашања пишете коментар или пак контактирајте нè на Twitter.

gravatar
Автор: Стојковски Дарко
За авторот:

Обожавам PHP али мразам CSS | се нервирам кога ќе испомешам колони и редови | слушам рок | немам Facebook имам Twitter | Моментално чекам да дојде 3 и 4 јули.

Comments are closed.