Задание
Создать сайт, где можно будет выставлять картины на обозрение пользователей.
Добавить:
Галерея нескольких (не менее 6) новых изображений.
Блок новостей.
Встроить на одну из страниц сайта счетчик посещений страницы.
Авторизация.
Регистрация. Отдельно для пользователя и продавца.
Восстановление пароля по секретному коду.
Гостевая книга (страница с сообщениями оставленными пользователями).
Реализовать поиск по названиям картин.
Страница заказов (список поступивших заказов), с возможностью добавления новых для зарегистрированных пользователей.
Загрузка новых картин для определенного человека.
Реализация
Чтобы функционировали PHP части, сохранял все страницы сайта в формате .php
Главная страница:
На ней присутствует: Новостной блок (сделан в виде слайдера), галерея картин, авторизация, поисковая строка и счетчик посещений, ссылка на загрузку картин для «Создателя».
<script>
var slider = {
slides:['image/news/news1.png','image/news/news2.png','image/news/news3.png','image/news/news4.png'],
frame:0, // текущий кадр для отбражения - индекс картинки из массива
set: function(image) { // установка нужного фона слайдеру
document.getElementById("scr").style.backgroundImage = "url("+image+")";
},
init: function() { // запуск слайдера с картинкой с нулевым индексом
this.set(this.slides[this.frame]);
},
left: function() { // крутим на один кадр влево
this.frame--;
if(this.frame < 0) this.frame = this.slides.length-1;
this.set(this.slides[this.frame]);
},
right: function() { // крутим на один кадр вправо
this.frame++;
if(this.frame == this.slides.length) this.frame = 0;
this.set(this.slides[this.frame]);
}
};
window.onload = function() { // запускслайдерапослезагрузкидокумента
slider.init();
setInterval(function() { // ставим трёхсекундный интервал для перелистывания картинок
slider.right();
},3000);
};
</script>
<?php
$i=0;
$connect_to_db = mysql_connect("", "", "") or die("Could not connect: " . mysql_error());
mysql_select_db("shopconst", $connect_to_db)
or die("Could not select DB: " . mysql_error());
mysql_query("SET NAMES 'cp1251_general_ci'");
mysql_query("SET CHARACTER SET 'cp1251_general_ci'");
// выбираемзначенияизтаблицы
$qr_result = mysql_query("select `puttv` from `tovar` order by `date` desc limit 9" . $db_table_to_show)
or die(mysql_error());
$qr_result2 = mysql_query("select `name` from `tovar` order by `date` desc limit 9" . $db_table_to_show)
or die(mysql_error());
while($Result[0][] = mysql_fetch_array($qr_result));
while($Result[1][] = mysql_fetch_array($qr_result2));
for ($i = 1; $i < count($Result[0]); $i++)
{
if ($i==1)
{
echo '<div class="tables one" style=" background: url('. $Result[0][$i-1][0] .') no-repeat; background-size: 100%; background-position: center center; "><a class="textg a">"'. $Result[1][$i-1][0] .'"</a></div>';
}
if ($i==2)
{
echo '<div class="tables two" style=" background: url('. $Result[0][$i-1][0] .') no-repeat; background-size: 100%; background-position: center center; "><a class="textg a">"'. $Result[1][$i-1][0] .'"</a></div>';
}
if ($i==3)
{
echo '<div class="tables three" style=" background: url('. $Result[0][$i-1][0] .') no-repeat; background-size: 100%; background-position: center center; "><a class="textg a">"'. $Result[1][$i-1][0] .'"</a></div>';
}
if ($i==4)
{
echo '<div class="tables four" style=" background: url('. $Result[0][$i-1][0] .') no-repeat; background-size: 100%; background-position: center center; "><a class="textg a">"'. $Result[1][$i-1][0] .'"</a></div>';
}
if ($i==5)
{
echo '<div class="tables five" style=" background: url('. $Result[0][$i-1][0] .') no-repeat; background-size: 100%; background-position: center center; "><a class="textg a">"'. $Result[1][$i-1][0] .'"</a></div>';
}
if ($i==6)
{
echo '<div class="tables six" style=" background: url('. $Result[0][$i-1][0] .') no-repeat; background-size: 100%; background-position: center center; "><a class="textg a">"'. $Result[1][$i-1][0] .'"</a></div>';
}
if ($i==7)
{
echo '<div class="tables seven" style=" background: url('. $Result[0][$i-1][0] .') no-repeat; background-size: 100%; background-position: center center; "><a class="textg a">"'. $Result[1][$i-1][0] .'"</a></div>';
}
if ($i==8)
{
echo '<div class="tables eight" style=" background: url('. $Result[0][$i-1][0] .') no-repeat; background-size: 100%; background-position: center center; "><a class="textg a">"'. $Result[1][$i-1][0] .'"</a></div>';
}
if ($i==9)
{
echo '<div class="tables nine" style=" background: url('. $Result[0][$i-1][0] .') no-repeat; background-size: 100%; background-position: center center; "><a class="textg a">"'. $Result[1][$i-1][0] .'"</a></div>';
}
}
?>
<form name="log">
<div id="log" > <font color="blue" size="2vw;"> <a href="regu.php">Регистрация?</a><br> <a href="vost.php">Забылипароль?</a></font> </div>
<div id="login">
<input type="text" class="login" name="login" placeholder="Введитевашлогин" required> </input>
<div><img src="image/log.png" width="30px" height="30px" ></div>
</div>
<div id="password">
<input type="password" class="passw" name="passw" placeholder="Введитевашпароль" required> </input>
<div><img src="image/passw.png" width="30px" height="30px" >
</div>
</div>
<div id="buttonlog" align="center" name="send" onclick="log.submit()"; >Войти</div>
<?php
$login = "Не известно";
$password = "Не известно";
if($_POST['send'])
{
$login = htmlspecialchars($_POST['login']);
$password = htmlspecialchars($_POST['passw']);
}
?>
</form>
<form name="poisci" action="poisc.php" method="post">
<div id="search">
<input type="text" class="serch" name="pois" placeholder="Введитедляпоиска" required> </input>
<img src="image/serch.png" class="serchi" onclick="document.forms['poisci'].submit();" ></img>
</div>
</form>
Который переводит на страницу с поиском. Она получает значение поля поиска с помощью _POST, сверяет полученный результат с базой данных, в которой хранится информация о картинах, и выводит нам результаты.
<?php
$pois = $_POST['pois'];
?>
<?php
$i=0;
$connect_to_db = mysql_connect("", "", "") or die("Could not connect: " . mysql_error());
mysql_select_db("shopconst", $connect_to_db)
or die("Could not select DB: " . mysql_error());
mysql_query("SET NAMES 'cp1251_general_ci'");
mysql_query("SET CHARACTER SET 'cp1251_general_ci'");
$qr_result = mysql_query("select `name` from `tovar` WHERE `name` Like '%".$pois."%' order by `date` desc" . $db_table_to_show)
or die(mysql_error());
$qr_result2 = mysql_query("select `puttv` from `tovar` WHERE `name` Like '%".$pois."%' order by `date` desc" . $db_table_to_show)
or die(mysql_error());
$qr_result4 = mysql_query("select `date` from `tovar` WHERE `name` Like '%".$pois."%' order by `date` desc" . $db_table_to_show)
or die(mysql_error());
while($Result[0][] = mysql_fetch_array($qr_result));
while($Result[1][] = mysql_fetch_array($qr_result2));
while($Result[3][] = mysql_fetch_array($qr_result4));
for ($i = 1; $i < count($Result[0]); $i++)
{
echo '
<div style="width:80%; height:50px;">
<div id="tovari" style=" background: url('. $Result[1][$i-1][0] .') no-repeat; background-size: 100%; background-position: center center; "></div>
<div style="float:left;">
"'. $Result[0][$i-1][0] .'" Дата: '. $Result[3][$i-1][0] .'
</div>
</div>
<br/>
<hr width="85%" style="border: none; background: linear-gradient(to right, rgba(23,80,119,0) 0%,rgba(100,100,119,1) 50%,rgba(23,80,119,0) 100%); height: 2px; while:"/>';
}
mysql_close($connect_to_db);
?>
<div id="schet">
<br/>
<?
$file_name = "chet/count.txt";
if (!file_exists($file_name))
{
$fp=fopen($file_name,"w");
fwrite($fp,"1");
fclose($fp);
}
$fp=fopen($file_name, "r");
$count = fread($fp,15);
fclose($fp);
$count++;
$fp=fopen($file_name,"w");
fwrite($fp,$count);
fclose($fp);
?>
страница была просмотрена<br/> <br/>
<?=$count;?> раз
</div>
<?php
$login=$_GET['login'];
$passw=$_GET['passw'];
if ($login=="kirill"&&$passw=="260198k")
{
echo '<li><a href="imageim.php">пункт 5</a></li>';
}
else
{
echo '<li><a>Недоступно!</a></li>';
}
?>
Регистрация пользователя и продавца
Для реализация регистрации используется таблица «user» в базе данных, которая имеет поля:
User для имени.
Password для пароля.
Dop для секретного кода.
Prav для привилегий (1-пользователь, 2- продавец, 3-модератор, 4-администратор, 10-создатель).
Регистрация пользователя от регистрации продавца отличается лишь prav (которая у продавцов равна 2). Проверки пароля (на длину и повтор пароля) осуществляться до того как создается соединение с базой данных.
<form id="reguser" method=post>
Введителогин<br/>
<input type=text name="name" placeholder="Введителогин" required>
<br/><br/>
Введите пароль<br/>
<input type=text name="pass" placeholder="Введитепароль" required style="width:40%; height: 20px;">
<input type=text name="pass2" placeholder="Повторитепароль" required style="width:40%; height: 20px;" >
<br/>Пароль не должен превышать 50 символов и быть меньше 6 символов.<br/><br/>
Введите секретный код чтобы в будуюшем можно было восстановить пароль!
<input type=text name="dop" placeholder="Секретныйкод" required style="width:80%; height: 20px;" >
<br/>
<input type=submit value=Загрузить name="send" id="zak" style="font-size:150%; background: linear-gradient(to right, rgba(126,176,214,1) 1%,rgba(143,230,234,1) 99%);">
<?php
mysql_query("SET NAMES cp1251");
if($_POST['send'])
{
$l=$_POST["name"];
if ($_POST["pass"] == $_POST["pass2"])
{
if (iconv_strlen($_POST["pass"],'UTF-8')>=6)
{
$p=$_POST["pass"];
$d=$_POST["dop"];
$db = mysql_connect("", "", "");
mysql_select_db("shopconst",$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$sql = "INSERT INTO `user` (`user`,`password`,`dop`,`prav`) VALUES ('".$l."','".$p."','".$d."','1')";
$result = mysql_query($sql);
if ($result)
{echo "<p><b>Регистрация успешна!</b></p>";}
else
{ echo "<p><b>Ошибка! Регистрация не была завершена. <br>Проверьте данные и повторите снова.</b></p>";}
mysql_close($db);
}
else
{echo "<p><b>Пароль слишком маленький.</b></p>";}
}
else
{echo "<p><b>Пароли Не совпадают!!</b></p>";}
}
?>
</form>
Восстановление пароля
Осуществляется с помощью сравнения имени и секретного кода с базой данных, и если они совпадают, выводит пароль пользователя.
<form id="reguser" method=post enctype=multipart/form-data>
Введителогин<br/>
<input type=text name="log" placeholder="Введителогин" required>
<br/><br/>
Введите Секретный код для восстановления пароля<br/>
<input type=text name="dop" placeholder="Введитесекретныйкод." required style="width:40%; height: 20px;">
<br/><br/>
<input type=submit value=Загрузить name="send" id="zak" style="font-size:150%; background: linear-gradient(to right, rgba(126,176,214,1) 1%,rgba(143,230,234,1) 99%);">
<?php
mysql_query("SET NAMES cp1251");
if($_POST['send'])
{
$l=$_POST["log"];
$d=$_POST["dop"];
$db = mysql_connect("", "", "");
mysql_select_db("shopconst",$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$pr = 'SELECT `password` FROM `user` WHERE `user` = "'.$l.'" AND `dop` = "'.$d.'"';
$result = mysql_query($pr);
if ($result)
{
$par[] = mysql_fetch_array($result);
if ($par[0][0]=="")
{echo "<p><b>Ненайденопароля</b></p>";}
else
{echo "<p><b>Вашпароль ".$par[0][0]." Не забывайте его.</b></p>";}
}
else
{ echo "<p><b>Неправильно ввели!</b></p>";}
mysql_close($db);
}
?>
</form>
Гостевая книга
В гостевой книге пользователь может оставить сообщение, после чего оно появляется на странице, вся страница разделена:
Блок отображения сообщений
Блок с добавлением новых сообщений
Все записи хранятся в базе данных с полями
Name –для имени отправляющего.
Text – (не более 200 символов) для текста сообщения.
Data- дата создания сообщения, заполняется автоматически.
<?php
$i=0;
$connect_to_db = mysql_connect("", "", "") or die("Could not connect: " . mysql_error());
mysql_select_db("shopconst", $connect_to_db)
or die("Could not select DB: " . mysql_error());
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$qr_result = mysql_query("select `name` from `bookg` order by `data` desc" . $db_table_to_show)
or die(mysql_error());
$qr_result2 = mysql_query("select `text` from `bookg` order by `data` desc" . $db_table_to_show)
or die(mysql_error());
$qr_result4 = mysql_query("select `data` from `bookg` order by `data` desc" . $db_table_to_show)
or die(mysql_error());
while($Result[0][] = mysql_fetch_array($qr_result));
while($Result[1][] = mysql_fetch_array($qr_result2));
while($Result[3][] = mysql_fetch_array($qr_result4));
for ($i = 1; $i < count($Result[0]); $i++)
{
echo '
<div id="zap">
'. $Result[0][$i-1][0] .'
<br/>
'. $Result[3][$i-1][0] .'
<br/>
'. $Result[1][$i-1][0] .'
</div>
<br>
<hr width="85%" style="border: none; background: linear-gradient(to right, rgba(23,80,119,0) 0%,rgba(100,100,119,1) 50%,rgba(23,80,119,0) 100%); height: 2px; while:"/>';
}
mysql_close($connect_to_db);
?>
<form id="reguser" method=post>
<br/>
Введите имя в гостевой книге<br/>
<input type=text name="name" placeholder="ВведитеИмя" required> </input>
<br/><br/>
Введите текст в гостевую книгу (не более 200 символов)<br/>
<input type=text name="text" placeholder="Текст " required style="width:100%; height: 20px;"> </input>
<br/><br/>
<input type=submit value=Отправить name="send" id="zak" style="font-size:150%; background: linear-gradient(to right, rgba(126,176,214,1) 1%,rgba(143,230,234,1) 99%); margin: 0px; margin-top:5px; height: 40px; width: 30%"></input>
</form>
<?php
mysql_query("SET NAMES cp1251");
if($_POST['send'])
{
$n=$_POST["name"];
$t=$_POST["text"];
$db = mysql_connect("", "", "");
mysql_select_db("shopconst",$db) or die("Could not select DB: " . mysql_error());
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$sql = "INSERT INTO `bookg` (`name`,`text`) VALUES ('".$n."','".$t."')" or die(mysql_error());
$result = mysql_query($sql);
if ($result)
{ echo '<META HTTP-EQUIV=Refresh Content="0;URL=gostbook.php">';}
else
{ echo "<p><b>Ошибка! Операция не была завершена.</b></p>";}
mysql_close($db);
}
?>
Стол Заказов
Связь с базой данных, в которой содержатся поля:
Namez-Для названия заказа.
Smaltext-Для короткого пояснения к заказу.
Cena-Цена которую предлагает заказчик за работу.
Text-Подробное описание заказа.
Data-Время создание заказа, создается автоматически.
После чего полученные результаты выводится в <div> заказов
<?php
$i=0;
$connect_to_db = mysql_connect("", "", "") or die("Could not connect: " . mysql_error());
mysql_select_db("shopconst", $connect_to_db)
or die("Could not select DB: " . mysql_error());
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$qr_result = mysql_query("select `namez` from `zakaz` order by `data` desc" . $db_table_to_show)
or die(mysql_error());
$qr_result2 = mysql_query("select `smaltext` from `zakaz` order by `data` desc" . $db_table_to_show)
or die(mysql_error());
$qr_result3 = mysql_query("select `cena` from `zakaz` order by `data` desc" . $db_table_to_show)
or die(mysql_error());
$qr_result4 = mysql_query("select `data` from `zakaz` order by `data` desc" . $db_table_to_show)
or die(mysql_error());
while($Result[0][] = mysql_fetch_array($qr_result));
while($Result[1][] = mysql_fetch_array($qr_result2));
while($Result[2][] = mysql_fetch_array($qr_result3));
while($Result[3][] = mysql_fetch_array($qr_result4));
for ($i = 1; $i < count($Result[0]); $i++)
{
echo '
<div id="zak">
<div id="name">'. $Result[0][$i-1][0] .'
</div>
<div id="cenadata" align="right">'. $Result[2][$i-1][0] .' Рублей <br> '. $Result[3][$i-1][0] .'</div>
<div id="text">'. $Result[1][$i-1][0] .'</div>
</div>
<br>
<hr width="85%" style="border: none; background: linear-gradient(to right, rgba(23,80,119,0) 0%,rgba(100,100,119,1) 50%,rgba(23,80,119,0) 100%); height: 2px; while:"/>';
}
?>
Добавление нового заказа
Осуществляется с помощью связи с базой данных, проверки логина и пароля из таблицы пользователей, и добавление данных в таблицу заказов.
<form id="reguser" method=post>
Введителогин<br/>
<input type=text name="log" placeholder="Введителогин" required>
<br/><br/>
Введите пароль<br/>
<input type=password name="pass" placeholder="Введитепароль" required style="width:40%; height: 20px;">
<br/><br/>
Введите название заказа<br/>
<input type=text name="namez" placeholder="Названиезаказа" required style="width:40%; height: 20px;">
<br/><br/>
Введите краткое описание заказа (не более 120 символов)<br/>
<input type=text name="smaltext" placeholder="Опишитетовар" required style="width:40%; height: 20px;">
<br/><br/>
Введите подробное описание заказа<br/>
<textarea type=text name="text" style="width:40%; height: 20px; max-height:200px; max-width:100%;"> </textarea>
<br/><br/>
Введите цену на которую вы расчитываете в формате ( x.хx )<br/>
<input type=text pattern="\d+(\.\d{2})?" name="cena" placeholder="Цена" required style="width:40%; height: 20px;">
<br/><br/>
<br/>
<input type=submit value=Заказать name="send" id="zak" style="font-size:150%; background: linear-gradient(to right, rgba(126,176,214,1) 1%,rgba(143,230,234,1) 99%); ">
<?php
mysql_query("SET NAMES cp1251");
if($_POST['send'])
{
$l=$_POST["log"];
$p=$_POST["pass"];
$db = mysql_connect("", "", "");
mysql_select_db("shopconst",$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$pro = 'SELECT `prav` FROM `user` WHERE `user` = "'.$l.'" AND `password` = "'.$p.'"';
$result2 = mysql_query($pro);
if ($result2)
{
$par[] = mysql_fetch_array($result2);
if ($par[0][0]>0)
{
$n=$_POST["namez"];
$sm=$_POST["smaltext"];
$t=$_POST["text"];
$c=$_POST["cena"];
$sql = "INSERT INTO `zakaz` (`namez`,`smaltext`,`cena`,`text`) VALUES ('".$n."','".$sm."','".$c."','".$t."')";
$result = mysql_query($sql);
if ($result)
{echo "<p><b>Заказ Добавлен</b></p>";}
else
{ echo "<p><b>Ошибка! Операция не была завершена. <br>Проверьте данные и повторите снова.</b></p>";}
}
else
{ echo "<p><b>У вас недостаточно прав!</b></p>";}
}
else
{ echo "<p><b>Ошибка БД!</b></p>";}
mysql_close($db);
}
?>
</form>
Загрузка изображений
Реализовано с помощью подключения к базе данных и копировании файла из клиента на сервер (copy). После успешного копирования выводится информация о файле.
<form style="margin-left:10%; margin-top:30px;" method=post enctype=multipart/form-data>
<input type=text name="name" placeholder="Введитеназвание" required>
<input type=file name=uploadfile>
<input type=submit value=Загрузить name="send">
<?php
mysql_query("SET NAMES cp1251");
if($_POST['send'])
{
// Каталог, в который мы будем принимать файл:
$uploaddir = './tovar/';
$uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
// Копируем файл из каталога для временного хранения файлов:
if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile))
{
echo "<h3>Файл успешно загружен на сервер</h3>";
}
else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }
$k="tovar/".$_FILES['uploadfile']['name'];
// Выводим информацию о загруженном файле:
echo "<h3>Информация о загруженном на сервер файле: </h3>";
echo "<p><b>Оригинальное имя загруженного файла: ".$_FILES['uploadfile']['name']."</b></p>";
echo "<p><b>Mime-тип загруженного файла: ".$_FILES['uploadfile']['type']."</b></p>";
echo "<p><b>Размер загруженного файла в байтах: ".$_FILES['uploadfile']['size']."</b></p>";
echo "<p><b>Временное имя файла: ".$_FILES['uploadfile']['tmp_name']."</b></p>";
$n=$_POST["name"];
echo "<p><b>ИмяфайлавБД: ".$n."</b></p>";
$db = mysql_connect("localhost", "kirill", "260198k");
mysql_select_db("shopconst",$db);
$sql = "INSERT INTO `tovar` (`name`,`puttv`) VALUES ('".$n."','".$k."')";
$result = mysql_query($sql);
if ($result){
echo "<p><b>Информация занесена в базу данных</b></p>";
}
else
{
echo "<p><b>Информация не занесена в базу данных</b></p>";
}
mysql_close($db);
}
?>
</form>
Вывод
Я сделал сайт демонстрации и заказа картин.
На сайте присутствуют:
Стартовая страница с галереей из недавно опубликованных картин.
Авторизация, регистрация и восстановление пароля.
Поиск по названиям картин.
Стол заказов, в котором представлен список заказанных картин пользователями.
Добавление заказов (только для зарегистрированных пользователей)
Гостевая книга, где пользователи могут оставлять свои сообщения.
Базовая информация о сайте и об авторе.
Загрузка картин создателем.
Список использованной литературы.
ru.wikipedia.org
http://htmlbook.ru
http://php.net
https://www.youtube.com/