Prosta księga gości w PHP

Artykuły, porady, tutoriale.
admin
Administrator
Administrator
Posty: 24
Rejestracja: 15 lip 2013, 21:50

Prosta księga gości w PHP

Post autor: admin » 15 lip 2013, 23:33

Zapytanie SQL do wykonania:

Kod: Zaznacz cały

CREATE TABLE kg_wpisy (
	id INT NOT NULL AUTO_INCREMENT,
	autor VARCHAR(255) NOT NULL,
	email VARCHAR(100) NOT NULL,
	gg INT NOT NULL DEFAULT "0",
	tresc TEXT NOT NULL,
	data INT NOT NULL DEFAULT "0",
PRIMARY KEY(id));
index.php

Kod: Zaznacz cały

<?php
require './config.php';
require './func.php';

if( !@mysql_connect($DBconfig['host'], $DBconfig['user'], $DBconfig['pass']) ) {
	die('Nie można nawiązać połączenia z serwerem MySQL.'.mysql_error().' ['.mysql_errno().']');
}

if( !@mysql_select_db($DBconfig['name']) ) {
	die('Nie można wybrać odpowiedniej bazy danych. '.mysql_error().' ['.mysql_errno().']');
}

if( isset($_GET['akcja']) || isset($_POST['akcja']) ) {
	$akcja = isset($_GET['akcja']) ? $_GET['akcja'] : $_POST['akcja'];
} else {
	$akcja = '';
}

if($akcja == 'dodaj') { $title = 'Wpisz się'; }
elseif($akcja == 'zapisz') { $title = 'Wpisywanie'; }
else { $title = 'Wpisy'; }

?>
<html>
	<head>
		<title>Księga gości :: <?=$title ?></title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
		<link rel="stylesheet" href="./style.css" />
	</head>
	<body>
<?php

if($akcja == 'dodaj') {
	echo '<div class="wpis">
	<form action="./index.php" method="post">
		Twój nick: <input type="text" name="nick" /><br />
		Twój mail: <input type="text" name="mail" /><br />
		Twoje gg:  <input type="text" name="gg" /><br />
		<textarea name="wpis" cols="40" rows="10">Twój wpis</textarea><br /><br />
		<input type="submit" name="zapisz" value="Zapisz" />
		<input type="reset" name="czysc" value="Wyczyść" />
		<input type="hidden" name="akcja" value="zapisz" />
	</form></div>';
} elseif($akcja == 'zapisz') {
	$nick = clearData($_POST['nick']);
	$mail = clearData($_POST['mail']);
	$gg = clearData($_POST['gg']);
	$wpis = clearData($_POST['wpis']);
	
	echo '<div class="wpis">';
	
	if( empty($nick) || empty($mail) || !checkmail($mail) || empty($gg) || empty($wpis) ) {
		echo 'Formularz został wypełniony błędnie!<br /><br />
		<a href="javascript:history.go(-1)">Wstecz</a>';
	} else {
		$sql = 'INSERT INTO '.$DBconfig['pref'].'wpisy (id, autor, email, gg, tresc, data) VALUES (NULL, "'.$nick.'", "'.$mail.'", '.$gg.', "'.$wpis.'", '.time().')';
		$res = mysql_query($sql);
		
		echo '
		<b>Dziękujemy!</b><br />
		Wpis dodany poprawnie.<br /><br />
		<a href="./index.php">Księga Gości</a>';
	}
	
	echo '</div>';
} else {
	$sql = 'SELECT * FROM '.$DBconfig['pref'].'wpisy ORDER BY id DESC';
	$res = mysql_query($sql);
	$num = mysql_num_rows($res);
	
	if($num == 0) {
		echo 'Brak wpisów';
	} else {
		while($r = mysql_fetch_assoc($res)) {
			echo '
			<div class="wpis">
				<b>Autor:</b> <a href="mailto:'.$r['email'].'">'.$r['autor'].'</a><br />';
				if( !empty($r['gg']) ) {
				echo '<b>GG:</b> '.intval($r['gg']).' <img src="http://www.gadu-gadu.pl/users/status.asp?id='.intval($r['gg']).'&styl=1" style="border: 0px; vertical-align: middle" /><br />';
				}
				echo '
				<b>Data:</b> '.date($DBconfig['data'], $r['data']).'<br />
				'.nl2br(htmlspecialchars(trim($r['tresc']))).'
			</div>
			';
		}
	}
	
	echo '<br /><br /><a href="./index.php?akcja=dodaj"><b>Dodaj wpis</b></a>';
}

?>
	</body>
</html>
<? mysql_close(); ?>
config.php

Kod: Zaznacz cały

<?php

$DBconfig = array(
	'host' => 'localhost', // host bazy danych
	'user' => 'root', // login usera
	'pass' => 'zaq12wsx', // haslo
	'name' => 'kg', // nazwa bazy danych
	'pref' => 'kg_', // prefix do tabeli
	'data' => 'D M d, Y G:i' // format daty
);

?>
func.php

Kod: Zaznacz cały

<?php

function checkmail($email) {
	return preg_match('/^[a-zA-Z0-9\._-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z]{2,}$/', $email);
}

function clearData($input) {
	$input = trim($input);
	$input = mysql_real_escape_string($input);
	$input = strip_tags($input);
	$input = htmlspecialchars($input);

	return $input;
}

?>
style.css

Kod: Zaznacz cały

html, body {
	font-family: verdana;
	font-size: 11px;
	color: #333;
}

div.wpis  {
	background-color: #d2d2d2;
	border: 1px solid #000;
	padding: 3px;
	margin: 10px;
	width: 500px;
}

a:link, a:visited {
	text-decoration: none;
	color: #333;
}

a:hover {
	color: #666;
	text-decoration: underline;
}
Kompletny brak jakiejkolwiek grafiki - to należy już zrobić samemu.

ODPOWIEDZ