Гостевая книга с авторизацией и регистрацией
Среда, 3 апреля 2013 г.
Просмотров: 162282
Настроение: Среднечком
В колонках звучит: Не ниче не играет)))
Подписаться на комментарии по RSS
Надоело сидеть дома, и подумал пойти поработать php программистом до лета, а там глядишь и сезон промальпов начнется.
Еще сподвигло меня на это то, что я увидел у друзей в контакте репост - требуются php программисты без опыта работы, и что учат на месте.
Дай думаю напишу узнаю, там в контактах была указана почта. На след день мне ответили тем что для того чтобы меня взяли на работу мне нужно выполнить тестовое задание и отправляют мне него. Меня сразу насторожил в нем заголовок тестовое задание для тестировщиков веб приложений))). Из описания задачи было понятно что делает программа, ну думаю чтоб не задавать лишних вопросов сделаю я ее.
Там все было просто, программа должна была синхронизировать 2 таблицы базы данных, суть в том, что если появляется запись в одной таблице, она должна появиться в другой, также с удалением и редактированием.
Я написал за вечер эту программку и отправил им, с пояснением что мол возможно вы ошиблись и выслали мне не тот файл задания, но на всякий случай я сделал программу описанную в этом задании и прикрепил ее к письму.
На след день мне ответили что да, они ошиблись с файлом, но отправили программку на проверку и что пока ее не смотрели, и мне выслали повторно задание но уже правильное.
В нем была указана таблица балов за выполненные задания, нужно было написать гостевую книгу с авторизацией пользователей, сортировкой записей и возможностью из редактировать.
К дополнительным бонусным заданиям они отнесли админ панель, интерактивную инсталляцию, ихний логотип, возможность загружать и прикреплять свои файлы и самой высоко оцениваемой функцией было то, что весь скрипт должен был размещаться в 1 файле, вместе с картинками, а забыл еще плюсом было то что если будет использован ООП.
Задание было интерестное, я его сделал, как считаю довольно успешно.
Сделал так что загружаемые картинки на сайт хранятся не в виде файлов, а в виде записей в базе данных, таким образом даже если загружать файлы на сайт, скрипт на сервере все равно занимает 1 файл.
Исходный код гостевой книги: показать
Файл .htaccess
AddDefaultCharset UTF-8
DirectoryIndex index.php
php_value register_globals 1
#php_value error_reporting 8191
php_flag display_errors 0
RewriteEngine on
#инсталляция
RewriteRule installation.html$ guestbook.php?page=install [L]
RewriteRule installation/step-(.*).html$ guestbook.php?page=install&step== [L]
#админка
RewriteRule administration.html$ guestbook.php?page=admin [L]
#изображения
RewriteRule images/(.*)$ guestbook.php?page=image&image== [L]
RewriteRule images_upload/(.*)$ guestbook.php?page=image&image_upload==&image=image_upload [L]
RewriteRule favicon.ico$ guestbook.php?page=image&image=favicon.ico [L]
#авторизация
RewriteRule auths.html$ guestbook.php?page=auths [L]
RewriteRule auths/administrator.html$ guestbook.php?page=auths&administrator=1 [L]
#Регистрация
RewriteRule reg_one.php$ guestbook.php?page=registr&step=1 [L]
RewriteRule registration/step-(.*).html$ guestbook.php?page=registr&step== [L]
#Выход
RewriteRule exit.html$ guestbook.php?logout=yes [L]
#Удаление
RewriteRule user/(.*)/page-(.*)/delete-(.*).html$ guestbook.php?user==&num_page=Исходный код гостевой книги: показать/спрятать&page=delete_post&id_post=
Файл .htaccess
AddDefaultCharset UTF-8
DirectoryIndex index.php
php_value register_globals 1
#php_value error_reporting 8191
php_flag display_errors 0
RewriteEngine on
#инсталляция
RewriteRule installation.html$ guestbook.php?page=install [L]
RewriteRule installation/step-(.*).html$ guestbook.php?page=install&step=$1 [L]
#админка
RewriteRule administration.html$ guestbook.php?page=admin [L]
#изображения
RewriteRule images/(.*)$ guestbook.php?page=image&image=$1 [L]
RewriteRule images_upload/(.*)$ guestbook.php?page=image&image_upload=$1&image=image_upload [L]
RewriteRule favicon.ico$ guestbook.php?page=image&image=favicon.ico [L]
#авторизация
RewriteRule auths.html$ guestbook.php?page=auths [L]
RewriteRule auths/administrator.html$ guestbook.php?page=auths&administrator=1 [L]
#Регистрация
RewriteRule reg_one.php$ guestbook.php?page=registr&step=1 [L]
RewriteRule registration/step-(.*).html$ guestbook.php?page=registr&step=$1 [L]
#Выход
RewriteRule exit.html$ guestbook.php?logout=yes [L]
#Удаление
RewriteRule user/(.*)/page-(.*)/delete-(.*).html$ guestbook.php?user=$1&num_page=$2&page=delete_post&id_post=$3 [L]
RewriteRule page-(.*)/delete-(.*).html$ guestbook.php?num_page=$1&page=delete_post&id_post=$2 [L]
#Редактирование
RewriteRule user/(.*)/page-(.*)/edit-(.*).html$ guestbook.php?user=$1&num_page=$2&page=edit_post&id_post=$3 [L]
RewriteRule page-(.*)/edit-(.*).html$ guestbook.php?num_page=$1&page=edit_post&id_post=$2 [L]
#посты
RewriteRule user/(.*)/page-(.*).html$ guestbook.php?user=$1&num_page=$2 [L]
RewriteRule page-(.*).html$ guestbook.php?num_page=$1 [L]
#загрузка файлов и отправка фармы
RewriteRule upload.php$ guestbook.php?page=add_post&upload=1 [L]
RewriteRule new_post.php$ guestbook.php?page=add_post&upload=0 [L]
RewriteRule edit_post/(.*).php$ guestbook.php?page=edit_post&id_post=$1 [L]
Файл guestbook.php
<?php //ни в коем случае не трогаем и не смещаем глобальные переменные!!!. изменяя их, вы рискуете потерять над ними контроль из админ панели. function globals() { //Глобализируем переменные подключения к бд $name_bd=""; $login=""; $password=""; $count_posts="10"; $install_complete="1"; return array($name_bd,$login,$password,$count_posts,$install_complete); } /* И так все по заданию я сделал: 1. Внешний вид должен быть удобным (usability), c использованием логотипа Softline (по моиму сделал неплохо, и все удобно. делал для дальнейшей возможности встраивания в любой шаблон сайта) a. Добавление записей добавляются как обычные комментарии с простенькой защитой от ботов b. Просмотр уже существующих записей с постраничной навигацией (по умолчанию 10 на страницу) по дефолту на главной странице отображаются все записи с постраничной навигацией, а их количество задается при установке и после натраивается в админке c. Поддержка редактируемых настроек продукта редактируемые настройки это данные от сервера и количество отображаемых записей на странице d. Инструкция по установке продукта инструкция по установке - в ней нет необходимости, установку сделал интерактивную поэтапную e. Проверка на валидность данных сделал, но боюсь что из за громоздкости скрипта мог случайно упустить какуюто входящую переменную, или не очень качественно ее обработать. 3. User friendly – функционал, является дополнительным: a. Авторизация пользователей сделал отдельно авторизацию и отдельно регистрацию, даже сделал отдельную форму авторизации для администратора, для доп защиты b. Добавление / Редактирование / Удаление своих записей каждый пользователь имеет право создать новую запись, отредактировать свою старую или ее удалить, а администратор имет право делать это со всеми записями. c. Редактирование настроек продукта через web интерфейс (в том числе и кол-во отображаемых записей на странице) через административную панель администратор может менять настройки от базы данных и изменять количество выводимых записей на странице d. Интерактивная инсталляция продукта (запуск одного файла, где пользователь следует указаниям инсталлятора) сделал, все понятно и просто - нажимай далее и вводи данные. e. Весь продукт (включая картинки) состоит только из одного(!) файла весь скрипт не считая ридми и настроек для сервера mod rewrite и уровня выводимых ошибок(файла .htaccess) находится в одном файле, картинки также поместил в него. f. Возможность прикрепления картинок к записи сделал возможность прикрепления png и jpg изображений, но они не загружаются на сервер, они хранятся в базе данных, таким образом получается что даже с загруженными картинками скрипт занимает 1 файл. Дополнительным плюсом будет: 1. Наличие комментариев phpDoc везде где мог писал комментарии, что конкретно делает та или иная строчка кода. 2. Объектно-ориентированный подход не понел что это значит, использование функций ятоле или с использованием классов и пр. я использовал только функции 3. Наличие модульных тестов тесты никакие отдельно не выписывал, но тестировать конечно тестировал, весь скрипт можно разбить на модули по кейсам. */ date_default_timezone_set('America/Los_Angeles');//всеравно какая зона, главное чтоб нотисы больше не появлялись. function error_bd($link) { //echo mysql_error(); if($link) { mysql_query('ROLLBACK'); mysql_close($link); } exit; } function connect_bd() { //начинаем подключение к бд $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд if( $link )//проверка удачного соединения с бд { if(!mysql_select_db ($name_bd))//проверка существования базы даных { echo"bd"; error_bd($link); } mysql_query("SET NAMES utf8");// задаем кодировку всех данных }else{ echo "bd"; error_bd($link); } } //функция авторизации function valid() { if(isset($_POST['login_name'])) { //дополнительная ращита ввода логина от админки if(isset($_GET['administrator'])) { //проверка вводимого логина для администратора if(mb_strlen($_POST['login_name'], 'UTF-8') <= 20 & mb_strlen($_POST['login_name'], 'UTF-8') >=5) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['login_name'])) { echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в логине';</script>"; exit; }else{ $loginuser = $_POST['login_name']; $loginuser = strtolower($loginuser); } }else{ echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в логине';</script>"; exit; } }else{ //проверка вводимого логина для простых смертных if(mb_strlen($_POST['login_name'], 'UTF-8') <= 20 & mb_strlen($_POST['login_name'], 'UTF-8') >=6) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['login_name'])) { echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в логине';</script>"; exit; }else{ $loginuser = $_POST['login_name']; $loginuser = strtolower($loginuser); } }else{ echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в логине';</script>"; exit; } } //проверка вводимого пароля if(mb_strlen($_POST['login_password'], 'UTF-8') <= 20 & mb_strlen($_POST['login_password'], 'UTF-8') >=6) { if (preg_match("/[^0-9a-zA-Z\-\_]/", $_POST['login_password'])) { echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в пароле';</script>"; exit; }else{ $passworduser = $_POST['login_password']; } }else{ echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в пароле';</script>"; exit; } }else{//далее если нет пост запроса то проверяем входящие куки if(mb_strlen($_COOKIE['username'], 'UTF-8') <= 20 & mb_strlen($_COOKIE['username'], 'UTF-8') >=5) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_COOKIE['username'])) { exit; }else{ $loginuser = $_COOKIE['username']; $loginuser = strtolower($loginuser); } }else{exit;} } //начинаем подключение к бд $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд if( $link )//проверка удачного соединения с бд { if(!mysql_select_db ($name_bd))//проверка существования базы даных { echo"<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Неизвестная ошибка';</script>"; error_bd($link); } mysql_query("SET NAMES utf8");// задаем кодировку всех данных $result = mysql_query("SELECT * FROM user WHERE name_user = '$loginuser'"); if(!$result) { echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Неизвестная ошибка';</script>"; error_bd($link); }else{ $row = mysql_fetch_array($result); $GLOBALS["members"] = array($loginuser=>$row['password']); $GLOBALS["user_id"] = $row['id']; $GLOBALS["user_password"] = $row['password']; $GLOBALS["data"] = $row['data_reg']; $GLOBALS["user_name"] = $row['name_user']; if($row['status_activate'] == 0) { $group='Не активированные пользователи'; }else if($row['status_activate'] == 1) { $group='Зарегистрированные пользователи'; } $GLOBALS["status_activate"] = $row['status_activate']; $GLOBALS["email"] = $row['email']; $GLOBALS["confirm"] = $row['confirm']; //echo$row[password]; //echo$row[email]; } }else{ echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка БД';</script>"; error_bd($link); } //if( $link ){mysql_close($link);}//закрываем соединение с бд } if (isset($_POST['auts']) && isset($_POST['login_name']) && isset($_POST['login_password']) ) { valid(); $username = get_magic_quotes_gpc() ? stripslashes($_POST['login_name']) : $_POST['login_name']; $username= strtolower($username); $password = get_magic_quotes_gpc() ? stripslashes($_POST['login_password']) : $_POST['login_password']; if ( array_key_exists($username, $members) && $members[$username] === $password ) { setcookie('username', $username, time()+5000,'/'); setcookie('password', $password, time()+5000,'/'); setcookie('message', $count_message, time()+5000,'/'); //вывод чегонить после авторизации echo "<script type='text/javascript'>window.parent.location.href = '/guestbook/page-0.html';</script>"; exit; }else{ echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Неверные данные';</script>"; exit; } }elseif(isset($_GET['logout'])) { setcookie('username','',0,'/'); setcookie('password','',0,'/'); setcookie('message','',0,'/'); echo "<script type='text/javascript'>window.parent.location.href = '/guestbook/auths.html';</script>"; exit; } $auth = '0'; if ( isset($_COOKIE['username']) && isset($_COOKIE['password']) ) { if($_COOKIE['username'] != '') { valid(); $username = get_magic_quotes_gpc() ? stripslashes($_COOKIE['username']) : $_COOKIE['username']; $username= strtolower($username); $password = get_magic_quotes_gpc() ? stripslashes($_COOKIE['password']) : $_COOKIE['password']; if ( array_key_exists($username, $members) && $members[$username] === $password ) { setcookie('username', $username, time()+5000,'/'); setcookie('password', $password, time()+5000,'/'); $auth = '1'; //в случае успешной авторизации в куках выполняем код } } } //if ($auth == '0'){echo'dno';} //генератор бредокода для подтверждений function generate_code($length) { $code = ''; $symbols = '0123456789abcdefghijklmnopqrstuvwxyz'; for( $i = 0; $i < (int)$length; $i++ ) { $num = rand(1, strlen($symbols)); $code .= substr( $symbols, $num, 1 ); } return $code; } //общий шаблон function sample($title,$text,$auth,$name) { if($auth != '1') { $auths_key=', для того чтобы оставить отзыв авторизуйтесь <a href="/guestbook/auths.html">Авторизация</a> | <a href="/guestbook/registration/step-1.html">Регистрация</a>'; }else{ if($name == 'admin') { $admin_url = '<br><a href="/guestbook/administration.html">Администрирование</a>'; }else{ $admin_url = ''; } $auths_key=', сейчас вы авторизованы как пользователь '.$name.' <a href="/guestbook/exit.html">Выйти</a> '.$admin_url; } $t='<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>'.$title.'</title> <style type="text/css"> body {color: #6B6B6B;font-family: "Trebuchet MS",Arial,Helvetica,sans-serif;font-size: 12px;width: 800px;} .art-post { position: relative; margin: 0px auto; min-width: 27px; min-height: 27px; } .art-post-body { position: relative; padding: 14px; } .art-post-tr, .art-post-tl, .art-post-br, .art-post-bl, .art-post-tc, .art-post-bc, .art-post-cr, .art-post-cl { position: absolute; } .art-post-tr, .art-post-tl, .art-post-br, .art-post-bl { width: 38px; height: 38px; background-image: url("images/post_s.png"); } .art-post-tl { top: 0px; left: 0px; clip: rect(auto, 19px, 19px, auto); } .art-post-tr { top: 0px; right: 0px; clip: rect(auto, auto, 19px, 19px); } .art-post-bl { bottom: 0px; left: 0px; clip: rect(19px, 19px, auto, auto); } .art-post-br { bottom: 0px; right: 0px; clip: rect(19px, auto, auto, 19px); } .art-post-tc, .art-post-bc { left: 19px; right: 19px; height: 38px; background-image: url("images/post_h.png"); } .art-post-tc { top: 0px; clip: rect(auto, auto, 19px, auto); } .art-post-bc { bottom: 0px; clip: rect(19px, auto, auto, auto); } .art-post-cr, .art-post-cl { top: 19px; bottom: 19px; width: 38px; background-image: url("images/post_v.png"); } .art-post-cr { right: 0px; clip: rect(auto, auto, auto, 19px); } .art-post-cl { left: 0px; clip: rect(auto, 19px, auto, auto); } .art-post-cc { position: absolute; top: 19px; left: 19px; right: 19px; bottom: 19px; background-image: url("images/post_c.png"); } .art-post { margin: 10px; } .news {background-color: #FFFFFF;border: 1px solid #B0B0B0;border-radius: 4px 4px 4px 4px;color: #3C3C3C;font-size: 13px;margin: 10px 0 30px;padding: 3px 10px 5px;} .news-title {border-bottom: 1px dotted #AAAAAA;color: #336699;font-size: 14px;font-weight: bold;} .news-date {background-color: #EAEAEA;border: 1px solid #B0B0B0;border-radius: 4px 4px 4px 4px;color: #3C3C3C;float: left;font-size: 12px;margin: 10px 0;padding: 3px 10px 5px;} .pages {background: none repeat scroll 0 0 #FBFBFB;border: 1px solid #DCDCDC;font: 12px arial;overflow: hidden;padding: 12px 8px 8px;} .pages a, .pages a:hover {font: 12px arial;cursor:pointer;} .prev {float: left;} .prev a, .prev a:hover {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;display: block;font-weight: bold;padding: 2px 7px;text-decoration: none;} .prev a:hover {background: none repeat scroll 0 0 #2D8599;color: #FFFFFF;} .prev span {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;color: #CCCCCC;font-weight: bold;padding: 2px 7px;} .next {float: right;} .next a, .next a:hover {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;display: block;font-weight: bold;padding: 2px 7px;text-decoration: none;} .next a:hover {background: none repeat scroll 0 0 #2D8599;color: #FFFFFF;} .next span {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;color: #CCCCCC;font-weight: bold;padding: 2px 7px;} .page-nums {margin: 0 44px;text-align: center;} .page-nums span {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;color: #CCCCCC;padding: 2px 7px;} .page-nums a, .page-nums a:hover {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;padding: 2px 7px;} .page-nums a:hover {background: none repeat scroll 0 0 #2D8599;color: #FFFFFF;} table {width: 240px;border: 1px solid #CDCDCD;background-color: #EFEFEF;color: #909090;} input{border-width: 1px;border-style: solid;border-top-color: #CDCDCD;border-left-color: #CDCDCD;background-color: #FFFFFF;} h3{margin:0;} .info{vertical-align: top;color: #E28D8D;font-size: 14px;} .right{text-align: right;vertical-align: top;width:70px;} </style> <script type="text/javascript"> function confirm_delete(pos) { if(document.getElementById(pos).style.display == "none") { document.getElementById(pos).style.display = "inline"; document.getElementById(pos + "del").style.display = "none"; }else{ document.getElementById(pos).style.display = "none"; document.getElementById(pos + "del").style.display = "inline"; } } function post_message(pos) { document.getElementById(pos + "gif").style.display = "inline"; document.getElementById(pos + "but").style.display = "none"; document.getElementById(pos + "inp").style.display = "none"; } </script> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> </head> <body> <div class="news-date" style="float: none;"><center><a href="/guestbook/page-0.html"><img style="width: 85px;margin-top:15px;margin-left: -56px;" src="images/logo.png"></a> Добро пожаловать в гостевую книгу'.$auths_key.'</center><br></div> <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> '.$text.' </div> </div> </div> <div class="cleared"></div> </div> </div> </body> </html>'; return $t; } //блок из шаблона function news_block($title,$text,$data,$name,$id,$auth,$url) { if($auth == '1') { //user=$1&num_page //guestbook/user/'.$name.'/page-0/delete-'.$id.'.html $admin_key=' | <a id="'.$name.$id.'" href="#" onClick="confirm_delete(\''.$name.$id.'\')">Удалить</a><div id="'.$name.$id.'del" style="display:none;">(<a href="/guestbook'.$url.'/delete-'.$id.'.html">Да Удалить</a> / <a onClick="confirm_delete(\''.$name.$id.'\')" href="#">Отменить</a>)</div> | <a href="/guestbook'.$url.'/edit-'.$id.'.html">Редактировать</a>'; }else{ $admin_key=''; } $t='<div class="news"> <div class="news-title">'.$title.'</div> '.$text.'<br> <div class="news-date">'.$data.' | '.$name.' | <a href="/guestbook/user/'.$name.'/page-0.html">Все сообщения этого автора</a>'.$admin_key.'<br></div> <br> </div>'; return $t; } function block_commentaries($title,$text,$user_name,$email,$auth) { //Формируем блок для постинга if($auth == '1') { $block_comment=' <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> <iframe id="iframepost" name="iframepost" style="display:none"></iframe> <form target="iframepost" name="comments-form" id="comments-form" style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" action="/guestbook/new_post.php" method="post"> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input readonly style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" maxlength="20" value="'.$user_name.'" name="name" id="comments-form-name" > <label for="comments-form-name">Имя</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input readonly style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="2" size="22" value="'.$email.'" name="email" id="comments-form-email"> <label for="comments-form-email">E-Mail</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" maxlength="20" value="'.$title.'" name="title" id="comments-form-name" > <label for="comments-form-name">Заголовок (Обязательное поле)</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <textarea style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" tabindex="5" rows="8" cols="65" name="comment" id="comments-form-comment">'.$text.'</textarea> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input type="checkbox" tabindex="5" value="1" name="subscribe" id="comments-form-subscribe" class="checkbox"> <label for="comments-form-subscribe">Отметьте чекбокс в подтверждение что вы человек</label><br> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input type="hidden" value="true" id="attached_Image" name="attached_Image"> <input type="submit" value="Отправить" name="object_group"> </p> <p id="attached_Image_p" style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"></p> </form> <form style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" target="iframepost" action="/guestbook/upload.php" method="post" enctype=multipart/form-data> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> Прикрепить изображение<br> <input id="uploadinp" type=file name=userfile> <input id="uploadbut" type=submit value=Загрузить onClick="post_message(\'upload\')"> <img id="uploadgif" style="display:none;" src="images/progress.gif"> </p> </form> </div> </div> </div> <div class="cleared"></div> </div> </div>'; }else{ $block_comment=''; } return $block_comment; } if (isset($_GET['page'])) { $get_page = $_GET['page']; }else{ $get_page = 'default'; } switch($get_page) { case 'auths'://авторизация if($auth == '1') { header('Location: /guestbook/page-0.html'); exit; } $forma = '<center> <iframe id="iframepost" name="iframepost" style="display:none"></iframe> <form method="post" target="iframepost"> <table> <tbody> <tr> <td colspan="2"><center><img src="images/logo.png" style="margin-top:15px;"></center></td> </tr> <tr> <td class="right" rowspan="2"><img src="images/admin_login.png"></td> <td><h3>Авторизация</h3></td> </tr> <tr> <td class="info" id="info"> </td> </tr> <tr> <td class="right">Логин:</td> <td><input type="text" name="login_name" id="login_name"></td> </tr> <tr> <td class="right">Пароль:</td> <td><input type="password" name="login_password" id="login_password"></td> </tr> <tr> <td class="right"></td> <td><input type="submit" id="button" name="sub" value="Войти"><br><br></td> </tr> </tbody></table> <input type="hidden" value="true" id="auts" name="auts"> </form> </center>'; echo sample('Авторизация',$forma,$auth,''); break; case 'registr'://регистрация if($auth == '1') { header('Location: /guestbook/page-0.html'); exit; } switch($_GET['step']) { case '1': if(count($_POST)) { //проверка вводимого логина if(mb_strlen($_POST['login_name'], 'UTF-8') <= 20 & mb_strlen($_POST['login_name'], 'UTF-8') >=6) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['login_name'])) { echo "<script type='text/javascript'>alert('Ошибка логина: Допустимы только латинские буквы и цифры');</script>"; exit; }else{ $loginuser = $_POST['login_name']; $loginuser = strtolower($loginuser); $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд if( $link )//проверка удачного соединения с бд { mysql_query("SET NAMES utf8");// задаем кодировку всех данных if(!mysql_select_db ($name_bd)) { die (mysql_error()); } //Проверка на совпадения $res = mysql_query("SELECT name_user FROM user WHERE name_user = '$loginuser'"); if(!$res) { echo "<script type='text/javascript'>alert('Ошибка логина: Введенный вами логин занят другим пользователем, ввести другой');</script>"; error_bd($link); } if(mysql_num_rows($res) > 0) { echo "<script type='text/javascript'>alert('Ошибка логина: Введенный вами логин занят другим пользователем, ввести другой');</script>"; error_bd($link); } //if(count(mysql_num_rows($res))) //{ // echo "<script type='text/javascript'>alert('Ошибка логина: Введенный вами логин занят другим пользователем, ввести другой');</script>"; // exit; //} }else{ echo "<script type='text/javascript'>alert('Критическая ошибка: Невозможно соединиться с базой данных, попробуйте зайти позже');</script>"; exit; } } }else{ if(mb_strlen($_POST['name'], 'UTF-8') <= 5) { echo "<script type='text/javascript'>alert('Ошибка логина: Должно быть минимум 6 вводимых знаков');</script>"; exit; }else{ echo "<script type='text/javascript'>alert('Ошибка логина: Превышен лимит вводимых знаков 20');</script>"; exit; } //exit; } //проверка вводимого пароля if(mb_strlen($_POST['login_password'], 'UTF-8') <= 20 & mb_strlen($_POST['login_password'], 'UTF-8') >=6) { if (preg_match("/[^0-9a-zA-Z\-\_]/", $_POST['login_password'])) { echo "<script type='text/javascript'>alert('Ошибка пароля: Допустимы только латинские буквы и цифры');</script>"; exit; }else{ $passworduser = $_POST['login_password']; } }else{ if(mb_strlen($_POST['login_password'], 'UTF-8') <= 5) { echo "<script type='text/javascript'>alert('Ошибка пароля: Должно быть минимум 6 вводимых знаков');</script>"; exit; }else{ echo "<script type='text/javascript'>alert('Ошибка пароля: Превышен лимит вводимых знаков 20');</script>"; exit; } //exit; } //проверка введеной почты if(mb_strlen($_POST['email'], 'UTF-8') <= 35 & mb_strlen($_POST['email'], 'UTF-8') >=3) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['email'])) { echo "<script type='text/javascript'>alert('Ошибка почты: Адрес электронной почты не корректен');</script>"; exit; //exit; }else{ $email = $_POST['email']; } }else{ echo "<script type='text/javascript'>alert('Ошибка почты: Адрес электронной почты не корректен');</script>"; exit; } if( $link )//проверка удачного соединения с бд { $confirm = generate_code(15);//генерируем 15 значный бредокод $sql="INSERT INTO user (name_user,data_reg,status_activate,email,password,confirm) VALUES ('".$loginuser."','".strtotime("now")."',0,'".$email."','".$passworduser."','".$confirm."');"; if(!mysql_query($sql)) { die (mysql_error()); echo "<script type='text/javascript'>alert('Неизвестная ошибка, попробуйте позже.');</script>"; } } echo "<script type='text/javascript'>window.parent.location.href = '/guestbook/auths.html';</script>"; }else{ $forma = '<center> <iframe id="iframepost" name="iframepost" style="display:none"></iframe> <form action="/guestbook/reg_one.php" method="post" target="iframepost"> <table> <tbody> <tr> <td colspan="2"><center><img src="images/logo.png" style="margin-top:15px;"></center></td> </tr> <tr> <td class="right" rowspan="2"><img src="images/admin_login.png"></td> <td><h3>Регистрация</h3></td> </tr> <tr> <td class="info" id="info"> </td> </tr> <tr> <td class="right">Логин:</td> <td><input type="text" name="login_name" id="login_name"></td> </tr> <tr> <td class="right">Пароль:</td> <td><input type="password" name="login_password" id="login_password"></td> </tr> <tr> <tr> <td class="right">Email@:</td> <td><input type="text" name="email" id="email"></td> </tr> <tr> <td class="right"></td> <td><input type="submit" id="button" name="sub" value="Регистрация"><br><br></td> </tr> </tbody></table> </form> </center>'; echo sample('Регистрация',$forma,$auth,''); } break; case '2': echo $_GET['step']; break; } break; case 'install'://инсталляция if(isset($_GET['step'])) { $step=$_GET['step']; }else{ $step='default'; } switch($step) { case '1': //начинаем подключение к бд $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд $error='Ошибок не обнаружено, все данные верны.'; $i=0; if($link )//проверка удачного соединения с бд { mysql_query("SET NAMES utf8");// задаем кодировку всех данных if(!mysql_select_db ($name_bd)) { $error=" Невозможно выбрать указанную базу даных, возможно неверно указано имя базы данных.<br>"; $i++; } }else{ $error=" Невозможно установить соединение с базой данных,возможно вы не верно указали логин или пароль.<br>"; $i++; } $text='<center><h3>Продолжение работы с мастером установки</h3><br><strong>Ниже указаны проблемы возникшие при тестировании соединения с базой данных, если ошибок нет, вы можете смело переходить к шагу 3.</strong></center>'; if($i>0) { $next_step='<input type="submit" value="Вернуться на предыдущий шаг">'; $step_url='installation.html'; }else{ $next_step='<input type="submit" value="Перейти на следующий шаг">'; $step_url='installation/step-2.html'; } $block=' <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> <form name="comments-form" id="comments-form" style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" action="/guestbook/'.$step_url.'" method="get"> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <label>'.$error.'</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> '.$next_step.' </p> </form> <br> <br> </div> </div> </div> <div class="cleared"></div> </div> </div>'; echo sample('Установка гостевой книги - шаг 2',$text.$block,$auth,''); break; case '2': if(count($_POST)) { if($_POST['complete'] = 'complete') { $file = 'guestbook.php'; $array=file( $file ); $array[9]='$install_complete="1";'. "\n"; file_put_contents( $file, $array ); header('Location: /guestbook/auths/administrator.html'); exit; } } //начинаем подключение к бд $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд $error=''; $i=0; if( $link )//проверка удачного соединения с бд { mysql_query("SET NAMES utf8");// задаем кодировку всех данных if(!mysql_select_db ($name_bd)) { $error='Ошибка выбора базы данных, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } //проверка существования таблицы. $x=mysql_query('SELECT * FROM user LIMIT 1'); if($x) { $error='Таблица уже существует, для повторной установки необходимо очистите базу данных, если вы удачно прошли все 3 этапа но не нажали на кнопку сохранить изменения, сделайте это сейчас и доступ к этой странице будет заблокирован'; mysql_close($link);//закрываем соединение с бд }else{ $sql = "CREATE TABLE IF NOT EXISTS user ( id int NOT NULL AUTO_INCREMENT PRIMARY KEY, name_user VARCHAR(60) NOT NULL, data_reg int NOT NULL, status_activate int NOT NULL, email VARCHAR(60) NOT NULL, password VARCHAR(60) NOT NULL, confirm VARCHAR(60) NOT NULL)TYPE=MyISAM;"; if(!mysql_query($sql)) { $error='Ошибка создания таблицы базы данных, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } $sql = "CREATE TABLE IF NOT EXISTS post ( id int NOT NULL AUTO_INCREMENT PRIMARY KEY, id_user VARCHAR(60) NOT NULL, name_user VARCHAR(60) NOT NULL, pub_data int NOT NULL, list_modifiet int NOT NULL, title VARCHAR(60) NOT NULL, text TEXT)TYPE=MyISAM;"; if(!mysql_query($sql)) { $error='Ошибка создания таблицы базы данных, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } $sql = "CREATE TABLE IF NOT EXISTS images ( id int NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(60) NOT NULL, id_user int, text TEXT NOT NULL, type VARCHAR(60) NOT NULL)TYPE=MyISAM;"; if(!mysql_query($sql)) { $error='Ошибка создания таблицы базы данных, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } $sql="INSERT INTO user (id,name_user,data_reg,status_activate,email,password,confirm) VALUES (1,'admin','".strtotime("now")."',1,'trulander@mail.ru','password','".$confirm."');"; if(!mysql_query($sql)) { $error='Ошибка создания записи в таблице, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } $sql="INSERT INTO post (id,id_user,name_user,pub_data,list_modifiet,title,text) VALUES (1,'1','admin','".strtotime("now")."','".strtotime("now")."','Добро пожаловать в гостевую книгу','Добро пожаловать в гостевую книгу, если вы выдите это сообщение значит вы все сделали правильно. Для того чтобы удалить или отредактировать запись нажмине на ссылку (Редактировать запись) , или (Удалить запись)');"; if(!mysql_query($sql)) { $error='Ошибка создания записи в таблице, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } mysql_close($link);//закрываем соединение с бд } }else{ echo mysql_error(); } $text='<center><h3>Продолжение работы с мастером установки</h3><br><strong>Ниже указаны проблемы возникшие при записи данных, если ошибок нет, вы можете сохранить параметры и завершить установку.</strong></center>'; if($i>0) { $next_step='<input type="submit" value="Вернуться на предыдущий шаг">'; $step_url='installation/step-1.html'; $method='get'; }else{ $next_step='<input type="hidden" value="complete" id="complete" name="complete"><input type="submit" value="Сохранить и завершить установку">'; $step_url='installation/step-2.html'; $method='post'; } $block=' <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> <form name="comments-form" id="comments-form" style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" action="/guestbook/'.$step_url.'" method="'.$method.'"> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <label>'.$error.'</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> '.$next_step.' </p> </form> <br> <br> </div> </div> </div> <div class="cleared"></div> </div> </div>'; echo sample('Установка гостевой книги - шаг 3',$text.$block,$auth,''); break; default: if($auth == '1') { header('Location: /guestbook/page-0.html'); exit; } //проверяю может мы уже все установили. $perem = globals(); if($perem[4] == '1') { header('Location: /guestbook/page-0.html'); exit; } if(count($_POST)) { if(mb_strlen($_POST['namebd'], 'UTF-8') <= 50 & mb_strlen($_POST['namebd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['namebd'])) { echo "Вы ввели недопустимые символы в поле имени базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле имени базы данных"; exit; } if(mb_strlen($_POST['loginbd'], 'UTF-8') <= 50 & mb_strlen($_POST['loginbd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['loginbd'])) { echo "Вы ввели недопустимые символы в поле логина от базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле логина от базы данных"; exit; } if(mb_strlen($_POST['passwordbd'], 'UTF-8') <= 50 & mb_strlen($_POST['passwordbd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['passwordbd'])) { echo "Вы ввели недопустимые символы в поле пароля от базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле пароля от базы данных"; exit; } if (!preg_match("/[^0-9]/", $_POST['countpost']) & (mb_strlen($_POST['countpost'], 'UTF-8') <= 3)) { }else{ echo 'Вы ввели недопустимые символы в поле количества постов на странице, либо превысели допустимый лимит постов.'; exit; } $file = 'guestbook.php'; $array=file( $file ); $array[5]='$name_bd="'.$_POST["namebd"]."\";\n"; $array[6]='$login="'.$_POST["loginbd"]."\";\n"; $array[7]='$password="'.$_POST["passwordbd"]."\";\n"; $array[8]='$count_posts="'.$_POST["countpost"]."\";\n"; file_put_contents( $file, $array ); header('Location: /guestbook/installation/step-1.html'); exit; } $perem = globals(); $namebd=$perem[0]; $loginbd=$perem[1]; $passwordbd=$perem[2]; $countpost=$perem[3]; $text='<center><h3>Вас привтствует мастер установки</h3><br><strong>Для продолжения, заполните все поля *все поля являются обязательными.</strong></center>'; $block=' <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> <form name="comments-form" id="comments-form" style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" action="/guestbook/installation.html" method="post"> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="2" size="22" value="'.$namebd.'" name="namebd"> <label for="comments-form-email">Имя базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$loginbd.'" name="loginbd" > <label for="comments-form-name">Логин базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$passwordbd.'" name="passwordbd"> <label for="comments-form-name">Пароль базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$countpost.'" name="countpost"> <label for="comments-form-name">Количество отображаемых записей на странице</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input type="submit" value="Сохранить и перейти на следующий шаг" name="object_group"> </p> </form> <br> <br> </div> </div> </div> <div class="cleared"></div> </div> </div>'; echo sample('Установка гостевой книги.',$text.$block,$auth,''); } break; case 'admin'://админка if($auth != '1') { header('Location: /guestbook/page-0.html'); exit; } if($user_name != 'admin') { header('Location: /guestbook/page-0.html'); exit; } if(count($_POST)) { if(mb_strlen($_POST['namebd'], 'UTF-8') <= 50 & mb_strlen($_POST['namebd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['namebd'])) { echo "Вы ввели недопустимые символы в поле имени базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле имени базы данных"; exit; } if(mb_strlen($_POST['loginbd'], 'UTF-8') <= 50 & mb_strlen($_POST['loginbd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['loginbd'])) { echo "Вы ввели недопустимые символы в поле логина от базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле логина от базы данных"; exit; } if(mb_strlen($_POST['passwordbd'], 'UTF-8') <= 50 & mb_strlen($_POST['passwordbd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['passwordbd'])) { echo "Вы ввели недопустимые символы в поле пароля от базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле пароля от базы данных"; exit; } if (!preg_match("/[^0-9]/", $_POST['countpost']) & (mb_strlen($_POST['countpost'], 'UTF-8') <= 3)) { }else{ echo 'Вы ввели недопустимые символы в поле количества постов на странице, либо превысели допустимый лимит постов.'; exit; } $file = 'guestbook.php'; $array=file( $file ); $array[5]='$name_bd="'.$_POST["namebd"]."\";\n"; $array[6]='$login="'.$_POST["loginbd"]."\";\n"; $array[7]='$password="'.$_POST["passwordbd"]."\";\n"; $array[8]='$count_posts="'.$_POST["countpost"]."\";\n"; file_put_contents( $file, $array ); header('Location: /guestbook/administration.html'); exit; } $perem = globals(); $namebd=$perem[0]; $loginbd=$perem[1]; $passwordbd=$perem[2]; $countpost=$perem[3]; $text='<center><h3>Настройки гостевой книги</h3><br><strong>редактируйте только те поля которые хотите изменить.</strong></center>'; $block=' <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> <form name="comments-form" id="comments-form" style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" action="/guestbook/administration.html" method="post"> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="2" size="22" value="'.$namebd.'" name="namebd"> <label for="comments-form-email">Имя базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$loginbd.'" name="loginbd" > <label for="comments-form-name">Логин базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$passwordbd.'" name="passwordbd"> <label for="comments-form-name">Пароль базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$countpost.'" name="countpost"> <label for="comments-form-name">Количество отображаемых записей на странице</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input type="submit" value="Применить" name="object_group"> </p> </form> </div> </div> </div> <div class="cleared"></div> </div> </div>'; echo sample('Админ панель: Настройки',$text.$block,$auth,$user_name); break; case 'add_post'://добавить запись if($auth != '1') { header('Location: /guestbook/page-0.html'); exit; } if($_GET['upload'] == '1') { $blacklist = array(".php", ".phtml", ".php3", ".php4"); foreach ($blacklist as $item) { if(preg_match("/$item\$/i", $_FILES['userfile']['name'])) { echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image_p').innerHTML = 'Неверные данные, загрузке подлежать только файлы изображений png и jpeg.';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadgif').style.display = 'none';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadbut').style.display = 'inline';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadinp').style.display = 'inline';</script>"; exit; } $imageinfo = getimagesize($_FILES['userfile']['tmp_name']); if($imageinfo['mime'] != 'image/png' && $imageinfo['mime'] != 'image/jpeg') { echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image_p').innerHTML = 'Неверные данные, загрузке подлежать только файлы изображений png и jpeg.';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadgif').style.display = 'none';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadbut').style.display = 'inline';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadinp').style.display = 'inline';</script>"; exit; } if($_FILES["userfile"]["size"] > 1024*3*1024) { echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image_p').innerHTML = 'Загружаемый файл слишклм велик, он превышает 3 мегабайта.';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadgif').style.display = 'none';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadbut').style.display = 'inline';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadinp').style.display = 'inline';</script>"; exit; } } $new_filename = generate_code(5).$_FILES['userfile']['name']; $sql="INSERT INTO images (name,id_user,text,type) VALUES ('".$new_filename."','".$user_id."','".base64_encode(file_get_contents($_FILES['userfile']["tmp_name"]))."','".$imageinfo['mime']."');"; if(!mysql_query($sql)) { echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image_p').innerHTML = 'Ошибка БД';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadgif').style.display = 'none';</script>"; exit; } echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image').value = '".$new_filename."';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image_p').innerHTML = 'Прикрепленное изображение: ".$_FILES['userfile']['name']."';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadgif').style.display = 'none';</script>"; }else if($_GET['upload'] == '0') { if(isset($_POST['subscribe'])) { if ((mb_strlen($_POST['title'], 'UTF-8') <= 50) & (mb_strlen($_POST['title'], 'UTF-8') >= 5)) { if ((mb_strlen($_POST['comment'], 'UTF-8') <= 2000) & (mb_strlen($_POST['comment'], 'UTF-8') >= 5)) { if ((mb_strlen($_POST['attached_Image'], 'UTF-8') <= 50) & (mb_strlen($_POST['attached_Image'], 'UTF-8') >= 8)) { $images = '<br><img src="images_upload/'.$_POST['attached_Image'].'">'; }else{ $images=''; } $sql="INSERT INTO post (id_user,name_user,pub_data,list_modifiet,title,text) VALUES ('".$user_id."','".$user_name."','".strtotime("now")."','".strtotime("now")."','".mysql_real_escape_string($_POST['title'])."','".mysql_real_escape_string($_POST['comment'].$images)."');"; if(!mysql_query($sql)) { echo "<script type='text/javascript'>alert('Ошибка БД, попробуйте позже.')</script>"; } echo "<script type='text/javascript'>window.parent.location.href = '/guestbook/page-0.html';</script>"; }else{ echo "<script type='text/javascript'>alert('Текст должен содержать от 5 до 2000символов.')</script>"; } }else{ echo "<script type='text/javascript'>alert('Текст заголовка должен содержать от 5 до 50символов.')</script>"; } }else{ echo "<script type='text/javascript'>alert('Вы не отметили чекбокс, подтвердите что вы человек, а не бот.')</script>"; } } break; case 'edit_post'://редактировать запись if($auth != '1') { header('Location: /guestbook/page-0.html'); exit; } //проверка входящих данных if (!preg_match("/[^0-9]/", $_GET['id_post']) & (mb_strlen($_GET['id_post'], 'UTF-8') <= 4))//искуственное ограничение в количестве записей { }else{ mysql_close($link); echo'Неизвестная ошибка'; exit; } if(!count($_POST)) { //mysql_query("SET NAMES utf8");// задаем кодировку всех данных $result = mysql_query("SELECT * FROM post WHERE id = ".$_GET['id_post']." LIMIT 1"); if(!$result) { echo'Ошибка: Такой страницы не существует.'; error_bd($link); } if(mysql_num_rows($result) < 1) { echo'Ошибка: Такой страницы не существует.'; error_bd($link); } $row = mysql_fetch_row($result); if(($row['1'] == $user_id) || ($user_name == 'admin')){ $key='1'; }else{ $key='0'; } if($key == '1') { //выводим контент в шаблоне echo sample('Редактирование записи',block_commentaries($row['5'],$row['6'],$user_name,$email,$auth,$user_name).'<script type="text/javascript">window.parent.document.getElementById("comments-form").action = "/guestbook/edit_post/'.$_GET['id_post'].'.php";</script>',$auth,''); }else{ //ошибка доступа } }else{ if(isset($_POST['subscribe'])) { if ((mb_strlen($_POST['title'], 'UTF-8') <= 50) & (mb_strlen($_POST['title'], 'UTF-8') >= 5)) { if ((mb_strlen($_POST['comment'], 'UTF-8') <= 2000) & (mb_strlen($_POST['comment'], 'UTF-8') >= 5)) { $_POST['comment'] = stripslashes($_POST['comment']); if ((mb_strlen($_POST['attached_Image'], 'UTF-8') <= 50) & (mb_strlen($_POST['attached_Image'], 'UTF-8') >= 8)) { $images = '<br><img src="images_upload/'.$_POST['attached_Image'].'">'; }else{ $images=''; } $result = mysql_query("UPDATE post SET id_user = '".$user_id."',name_user = '".$user_name."',list_modifiet = '".strtotime("now")."',title = '".mysql_real_escape_string($_POST['title'])."',text = '".mysql_real_escape_string($_POST['comment'].$images)."' WHERE id ='".$_GET['id_post']."';"); if(!$result) { echo "<script type='text/javascript'>alert('Ошибка при выполнении операции.');</script>";; error_bd($link); } echo "<script type='text/javascript'>window.parent.location.href = '/guestbook/page-0.html';</script>"; }else{ echo "<script type='text/javascript'>alert('Текст должен содержать от 5 до 2000символов.')</script>"; } }else{ echo "<script type='text/javascript'>alert('Текст заголовка должен содержать от 5 до 50символов.')</script>"; } }else{ echo "<script type='text/javascript'>alert('Вы не отметили чекбокс, подтвердите что вы человек, а не бот.')</script>"; } } exit; //формируем урл для возврата if($_GET['user'] != '') { $ul='/user/'.$_GET['user'].'/page-'.$_GET['num_page'].'.html'; }else{ $ul='/page-'.$_GET['num_page'].'.html'; } header('Location: /guestbook'.$ul); break; case 'delete_post'://удалить запись if($auth != '1') { header('Location: /guestbook/page-0.html'); exit; } //проверка входящих данных if (!preg_match("/[^0-9]/", $_GET['id_post']) & (mb_strlen($_GET['id_post'], 'UTF-8') <= 4))//искуственное ограничение в количестве записей { }else{ mysql_close($link); echo'Неизвестная ошибка'; exit; } //проверяю на права к редактированию записи $result = mysql_query("SELECT * FROM post WHERE id = '".$_GET['id_post']."' LIMIT 1"); if(!$result) { error_bd($link); } $row = mysql_fetch_row($result); if(($row['1'] == $user_id) || ($user_name == 'admin')){ $key='1'; }else{ $key='0'; } if($key == '1') { $sql="DELETE FROM post WHERE id = ".$_GET['id_post']." LIMIT 1"; if(!mysql_query($sql)) { die (mysql_error()); } }else{ //ошибка доступа } //формируем урл для возврата if (isset($_GET['user'])) { $ul='/user/'.$_GET['user'].'/page-'.$_GET['num_page'].'.html'; }else{ $ul='/page-'.$_GET['num_page'].'.html'; } header('Location: /guestbook'.$ul); break; case 'image'://блок со стационарными картинками switch($_GET['image']) { case 'post_s.png': Header("Content-type: image/png"); echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACGklEQVRYR+2YPUvDUBSG+6UuXUQUN0HsouDgICriUuyX+U/9DV36Azp2dpVOpTg0pTVNb5M2hQoVMhQCGQqF1vvK7YfaNIncFocbONNNTp7z3nND3hMIiGuzCgRpel7xN9LpdBpqNBqn3W77WtPUBA2JUyR0Xb2VZTmWy+X2KF2IFesOqqrqQadD4qY5SFuWJY3HY2kymXAJ5EJO0/x4MgwtUSo9H1OiMAN0htM0+bDX01Oj0YgLyLqCANnv91Ll8ssJJYo4wmH7ul31kadCbkrjXWiVbDYbdYRTFOXMNM2MWzLe65Y1lOr1+hUF22HbigO2uNCU2H/eL3bLh7YhpBmnJDgMgMOBWFy04dPb3MZlYJx4J7AgFt2q29T6DzCc0vn1X8B2WZ8JsLVtsrSVQjFPB0oo5vezIhQTivlVwO/9oseEYn4V8Hu/6DGuinU6za0bkVkBa7ey3W4+2Lbt6W/AryJu/hIWjv3z//4fUxT5fDg0tw4GZ6aq9RsnsECxWIwaRivJUw0vuQxDTxYKhSNH+wY/V6lUYoPBe9pLQh730PlIplqtXjKo1b6SLsIBh2u11wtUwXugMisE3tW2LQnvWAGFGcZ3J878ElxwJJ/P77dab3e6TlKcxk/zMRYhJE2Icr+0fVAKTe88WFmGY3YdD206MBYAFIzuSrVmJhOLX8oxODyIingH8s6gvA/wGD0eQKCaTcRKoE8oZIuMLx1J9wAAAABJRU5ErkJggg=='); break; case 'post_h.png': Header("Content-type: image/png"); echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAADIAAAAmCAYAAACGeMg8AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAeElEQVRYR+2ZwQ3AIAwDjSqV5Zi/D4aJGhbor4JYh+Q/JvGBiMQ67wRabqm+5nyGgxQRw0EYOa2KVISK/AQXWovWorW+L24yQkbICBmp9byHWlALakEtqLXlVwb8gl/wC37B7x78OowUloc1duom0p1GHKQrjZTXCzdATj8BVGrbAAAAAElFTkSuQmCC'); break; case 'post_v.png': Header("Content-type: image/png"); echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAACYAAAAyCAYAAAAweqkjAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAhElEQVRYR+3SMQqAMBAF0RUhXs7zW+Qwi2tlijRThcAI6T4kPCfi/47enzszl5zv7nrKVafVOYd3hQ+b/RXFaKuKKUYF6N7GFKMCdG9jilEBurcxxagA3duYYlSA7m1MMSpA9zamGBWgextTjArQvY0pRgXo3sYUowJ0b2OKUQG636axFw/STj+hvo9CAAAAAElFTkSuQmCC'); break; case 'post_c.png': Header("Content-type: image/png"); echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAjUlEQVRoQ+3YwQ2AMAwEwRRI/+VYiAb4nE6BaB48bcm38QZYM3Od8KwThnhmMMjXSCKCSMmSjpaj5Wi9v4HYETtiR+zIv75TWIu1WIu1WGvL7yX6pV/6pV/6pd/EhO6RJL1GLSKNVJOeiCTpNWoRaaSa9EQkSa9Ri0gj1aQnIkl6jVpEGqkmPRFJ0mvU3hw8+WpwlKMzAAAAAElFTkSuQmCC'); break; case 'logo.png': Header("Content-type: image/png"); echo base64_decode('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'); break; case 'admin_login.png': Header("Content-type: image/png"); echo base64_decode('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'); break; case 'favicon.ico': Header("Content-type: image/x-icon"); echo base64_decode('AAABAAEAEBAAAAAAAABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAQAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOv+6GYNVJEMBJEMBJEMBJEMCScNnbz/IAAAC7uLewraywraza2dgAAAAAAADbz/JJEMBJEMBJEMBJEMBJEMBJEMBJEMBJEMDn3/e7uLewraywraza2dgAAAAAAACGYNVJEMBJEMBtQM3z7/v///96UNFJEMBJEMCqj+K7uLewraywraza2dgAAAAAAAAAAAAAAAAAAADOv+6qj+Kqj+JJEMBJEMBJEMC2n+a7uLewraywraza2dgAAAAAAAAAAACqj+JJEMBJEMBJEMBJEMBJEMBJEMCGYNUAAAC7uLewraywraza2dgAAAAAAADOv+5JEMBJEMBJEMBhMMiqj+Kqj+Lbz/IAAAAAAAC7uLewraywraza2dgAAAAAAACqj+JJEMBJEMCGYNX////Ov+5JEMBJEMBJEMAAAAC7uLewraywraza2dgAAAAAAADn3/dJEMBJEMBJEMBJEMBJEMBJEMBJEMCegN0AAAC7uLewraywraza2dgAAAAAAAAAAADOv+6GYNVJEMBJEMBJEMBJEMCqj+IAAAAAAAC7uLewraywraza2dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7uLewraywraza2dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7uLewraywraza2dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7uLewraywraza2dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//8Ks//8AAMAhAACAAQAAgAEAAPABAADAIQAAgGEAAIAhAACAIQAAwGEAAP/hAAD/4QAA/+EAAP//AAD//wAA'); break; case 'progress.gif': Header("Content-type: image/gif"); echo base64_decode('R0lGODlhGQAZAOZAANDQ0Pj4+NPT097e3vz8/Pf39/b29vPz8+Li4vT09N/f39fX1+jo6K6urvDw8ODg4Pv7+/n5+erq6q+vr/X19bCwsLe3t7Ozs+Pj48fHx9nZ2fHx8ba2tvr6+srKytXV1eTk5MLCwrKyssnJybGxsbq6urS0tMbGxsDAwLu7u729vcjIyLm5ubW1tdvb28PDw83Nzby8vN3d3dzc3Li4uMXFxb6+vv39/dHR0f7+/unp6a2treHh4dLS0tTU1P///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgBAACwAAAAAGQAZAAAH9IA/goOEASs7FiCEi4yFKDuQJA+NlIOHkJAmlYsBAYINmJg/BDoKDASMNzwCAjw3HKE7Ezk8AD0APDmLOjg+Pjg6PKCYJwY9vj49noQDx8kDPzwsDRceAQXOycuDvL7AjbS2uLqEqgI+rpSkAzrkjAbbmz8FBoPr7fKCqj6tNzkI4nLl6/ZLwgFk2vI189XjwUFkygb2KvgvoLtK5vqNYqAAXz5BBQo0CrmJlKmL+lZpZBTulkBCBL8xCpAtIjNnPaCt43HghzGI8X7EbFerx7EELcctMofuxk+GPEbpYIeqUYAIIGtG/Uio5VGui0g9wJBgUyAAIfkEBQoAQAAsCQAAAA4ACQAAB1SAPz8RDgeCh4g/Gxo+Hwg3iYIQCz0+Pjg6PwEeOzQgPxQ4lj49AwEvO6kiCB2UlpgjqbIWPw6UAjw3DbKpDZIFAYIcvDsVkT88u7Inxz8KwyQeAYEAIfkEBQoAQAAsEAACAAkADwAAB1WAP4KDhAQ6CgwEgzk8AD0APDmCBj0+lj0BggWVl5k/jI6QkoKGAzqjhJoGqQYoOyIAN4IBKju2Ez6CI7a8F4ITvLyCFsE7FYI8wLwZP4YwHA0XHgGBACH5BAUKAEAALBAACgAJAA0AAAdOgD+CNzw+Ajw3gj86OD4+OBKKAz2OPQ+KjI6QioQCh4mKPwUFihQhOy0gigUpO64VPIIZrrQcgg20rg2CFrk7FYI8E7kZijwlDRceAYKBACH5BAUKAEAALAkAEAAOAAkAAAdKgD+Cg4IEOgoMOYSEOTwAPQA8ios/AT0+mD0BPxQhOyYzPwaXmQEFKTupFS6Nj5E5J6myFz+GAzoEPw2yspQ/Frw7Fb48E7wZvoEAIfkEBQoAQAAsAgARAA4ACAAAB02APwYoOyIANz+Jij8BKjuPEz6LiiOPlhc/BDoDPAc/E5aWOTwAPT0+CRahOxUGpz4+PTw8oJYZBa+xPD88JQ0XHgGjpacJk4qaDxjGgQAh+QQFCgBAACwAAAoACQAOAAAHT4A/FCE7LSA/iAUxO4wVPIg1jJIciA2SjA2IFpc7FYg8E5cZiD88JQ0XGQ6kiDc8AgI8N6Q6OD4+ODqkAz23PQO0tri6ra8+sqw/ARHJzYEAIfkEBQoAQAAsAAAEAAoADQAAB1OAP4I3Mik7Jhgdgj8gFjuPJAiLNo+VFosNlY8NixyaOxWLPBOaGT8EOgMCLA0XHgE5CAA9ADw5iwc+uj49Abi7vL6CsbO1t4sEDAo6x4vOBQWLgQA7'); break; //кейс загрузки изображений из бд case 'image_upload': if((mb_strlen($_GET['image_upload'], 'UTF-8') <= 50 & mb_strlen($_GET['image_upload'], 'UTF-8') >=8)) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я.\-\_]+$#u", $_GET['image_upload'])) { exit; }else{ $image_upload = $_GET['image_upload']; //начинаем подключение к бд $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд if( $link )//проверка удачного соединения с бд { mysql_query("SET NAMES utf8");// задаем кодировку всех данных if(!mysql_select_db ($name_bd)) { die (mysql_error()); } $result = mysql_query("SELECT * FROM images WHERE name = '".$image_upload."'"); if(!$result) { error_bd($link); } $row = mysql_fetch_row($result); Header("Content-type: ".$row['4']); echo base64_decode($row['3']); } } }else{ exit; } break; } break; default: if($auth != '1')//принудитльное соединение к бд в случае неудачной авторизации, для подгрузки постов { connect_bd(); } if( $link )//проверка удачного соединения с бд { //пагинация страниц if(isset($_GET['user'])) { if(mb_strlen($_GET['user'], 'UTF-8') <= 20 & mb_strlen($_GET['user'], 'UTF-8') >=1) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я.\-\_]+$#u", $_GET['user'])) { mysql_close($link); echo'Неизвестная ошибка'; exit; }else{ $name_user = $_GET['user']; $name_user = strtolower($name_user ); $where_id = 'WHERE name_user = "'.$name_user .'"'; $navi_x = '/user/'.$name_user.'/'; } }else{ $where_id=''; $navi_x = '/'; } }else{ $where_id=''; $navi_x = '/'; } $result = mysql_query("SELECT COUNT(*) FROM post ".$where_id." ORDER BY id DESC"); if(!$result) { //echo mysql_error(); mysql_close($link); //echo$raz; //echo"SELECT COUNT(*) FROM page WHERE razdel=blog ORDER BY id DESC"; echo'Данный раздел пока не содержит ни одной страницы1'; exit; } $row = mysql_fetch_row($result); //print_r($row); $allpage = $row[0]; if($allpage < 1) { echo'Данный раздел пока не содержит ни одной страницы.0'; error_bd($link); } //считываем настройки количества отображаемых сообщений $connect_bd=globals(); $count_posts=$connect_bd[3]; $limit = $count_posts; if (isset($_GET['num_page'])) { if (!preg_match("/[^0-9]/", $_GET['num_page']) & (mb_strlen($_GET['num_page'], 'UTF-8') <= 3)) { $start_list=$_GET['num_page'] * $limit; }else{ mysql_close($link); echo'Неизвестная ошибка'; exit; } }else{ $start_list = 0; } $pageCount = ceil( $allpage / $limit); $sss = ''; for( $i = 0; $i < $pageCount; $i++ ) { if(($start_list / $limit) == $i) { $sss = $sss.'<span>'.$i.'</span>'; if($i+1 != $pageCount) { $nav_next = '<a href="/guestbook'.$navi_x.'page-'.($i+1).'.html">Дальше >></a>'; }else{ $nav_next = '<span>Дальше >></span>'; } if($i-1 >= 0) { $nav_prev = '<a href="/guestbook'.$navi_x.'page-'.($i-1).'.html"><< Назад</a>'; }else{ $nav_prev = '<span><< Назад</span>'; } }else{ $sss =$sss.'<a href="/guestbook'.$navi_x.'page-'.$i.'.html">'.$i.'</a>'; } } $result = mysql_query("SELECT * FROM post ".$where_id." ORDER BY id DESC LIMIT ".$start_list.",".$limit.""); if(!$result) { mysql_close($link); echo$text_error; exit; } $block = ''; while($row = mysql_fetch_row($result)) { if (isset($user_id)) { //проверяю на права к редактированию записи if(($row['1'] == $user_id) || ($user_name == 'admin')){ $key='1'; }else{ $key='0'; } }else{ $key='0'; } $block = $block.news_block($row['5'],$row['6'],$row['3'],$row['2'],$row['0'],$key,$navi_x.'page-'.$start_list / $limit); } mysql_close($link);//закрываем соединение с бд }else{echo$text_error;exit;} //формируем блок навигации $navigation=' <div class="pages"> <div class="prev">'.$nav_prev.'</div> <div class="next">'.$nav_next.'</div> <div class="page-nums">'.$sss.'</div> </div>'; //выводим контент в шаблоне if(!isset($user_name)) { $user_name=''; } if(!isset($email)) { $email=''; } echo sample('Гостевая книга',$block.block_commentaries('','',$user_name,$email,$auth).$navigation,$auth,$user_name); } ?>
[L]
RewriteRule page-(.*)/delete-(.*).html$ guestbook.php?num_page==&page=delete_post&id_post=Исходный код гостевой книги: показать/спрятать [L]
#Редактирование
RewriteRule user/(.*)/page-(.*)/edit-(.*).html$ guestbook.php?user==&num_page=Исходный код гостевой книги: показать/спрятать&page=edit_post&id_post=
Файл .htaccess
AddDefaultCharset UTF-8
DirectoryIndex index.php
php_value register_globals 1
#php_value error_reporting 8191
php_flag display_errors 0
RewriteEngine on
#инсталляция
RewriteRule installation.html$ guestbook.php?page=install [L]
RewriteRule installation/step-(.*).html$ guestbook.php?page=install&step=$1 [L]
#админка
RewriteRule administration.html$ guestbook.php?page=admin [L]
#изображения
RewriteRule images/(.*)$ guestbook.php?page=image&image=$1 [L]
RewriteRule images_upload/(.*)$ guestbook.php?page=image&image_upload=$1&image=image_upload [L]
RewriteRule favicon.ico$ guestbook.php?page=image&image=favicon.ico [L]
#авторизация
RewriteRule auths.html$ guestbook.php?page=auths [L]
RewriteRule auths/administrator.html$ guestbook.php?page=auths&administrator=1 [L]
#Регистрация
RewriteRule reg_one.php$ guestbook.php?page=registr&step=1 [L]
RewriteRule registration/step-(.*).html$ guestbook.php?page=registr&step=$1 [L]
#Выход
RewriteRule exit.html$ guestbook.php?logout=yes [L]
#Удаление
RewriteRule user/(.*)/page-(.*)/delete-(.*).html$ guestbook.php?user=$1&num_page=$2&page=delete_post&id_post=$3 [L]
RewriteRule page-(.*)/delete-(.*).html$ guestbook.php?num_page=$1&page=delete_post&id_post=$2 [L]
#Редактирование
RewriteRule user/(.*)/page-(.*)/edit-(.*).html$ guestbook.php?user=$1&num_page=$2&page=edit_post&id_post=$3 [L]
RewriteRule page-(.*)/edit-(.*).html$ guestbook.php?num_page=$1&page=edit_post&id_post=$2 [L]
#посты
RewriteRule user/(.*)/page-(.*).html$ guestbook.php?user=$1&num_page=$2 [L]
RewriteRule page-(.*).html$ guestbook.php?num_page=$1 [L]
#загрузка файлов и отправка фармы
RewriteRule upload.php$ guestbook.php?page=add_post&upload=1 [L]
RewriteRule new_post.php$ guestbook.php?page=add_post&upload=0 [L]
RewriteRule edit_post/(.*).php$ guestbook.php?page=edit_post&id_post=$1 [L]
Файл guestbook.php
<?php //ни в коем случае не трогаем и не смещаем глобальные переменные!!!. изменяя их, вы рискуете потерять над ними контроль из админ панели. function globals() { //Глобализируем переменные подключения к бд $name_bd=""; $login=""; $password=""; $count_posts="10"; $install_complete="1"; return array($name_bd,$login,$password,$count_posts,$install_complete); } /* И так все по заданию я сделал: 1. Внешний вид должен быть удобным (usability), c использованием логотипа Softline (по моиму сделал неплохо, и все удобно. делал для дальнейшей возможности встраивания в любой шаблон сайта) a. Добавление записей добавляются как обычные комментарии с простенькой защитой от ботов b. Просмотр уже существующих записей с постраничной навигацией (по умолчанию 10 на страницу) по дефолту на главной странице отображаются все записи с постраничной навигацией, а их количество задается при установке и после натраивается в админке c. Поддержка редактируемых настроек продукта редактируемые настройки это данные от сервера и количество отображаемых записей на странице d. Инструкция по установке продукта инструкция по установке - в ней нет необходимости, установку сделал интерактивную поэтапную e. Проверка на валидность данных сделал, но боюсь что из за громоздкости скрипта мог случайно упустить какуюто входящую переменную, или не очень качественно ее обработать. 3. User friendly – функционал, является дополнительным: a. Авторизация пользователей сделал отдельно авторизацию и отдельно регистрацию, даже сделал отдельную форму авторизации для администратора, для доп защиты b. Добавление / Редактирование / Удаление своих записей каждый пользователь имеет право создать новую запись, отредактировать свою старую или ее удалить, а администратор имет право делать это со всеми записями. c. Редактирование настроек продукта через web интерфейс (в том числе и кол-во отображаемых записей на странице) через административную панель администратор может менять настройки от базы данных и изменять количество выводимых записей на странице d. Интерактивная инсталляция продукта (запуск одного файла, где пользователь следует указаниям инсталлятора) сделал, все понятно и просто - нажимай далее и вводи данные. e. Весь продукт (включая картинки) состоит только из одного(!) файла весь скрипт не считая ридми и настроек для сервера mod rewrite и уровня выводимых ошибок(файла .htaccess) находится в одном файле, картинки также поместил в него. f. Возможность прикрепления картинок к записи сделал возможность прикрепления png и jpg изображений, но они не загружаются на сервер, они хранятся в базе данных, таким образом получается что даже с загруженными картинками скрипт занимает 1 файл. Дополнительным плюсом будет: 1. Наличие комментариев phpDoc везде где мог писал комментарии, что конкретно делает та или иная строчка кода. 2. Объектно-ориентированный подход не понел что это значит, использование функций ятоле или с использованием классов и пр. я использовал только функции 3. Наличие модульных тестов тесты никакие отдельно не выписывал, но тестировать конечно тестировал, весь скрипт можно разбить на модули по кейсам. */ date_default_timezone_set('America/Los_Angeles');//всеравно какая зона, главное чтоб нотисы больше не появлялись. function error_bd($link) { //echo mysql_error(); if($link) { mysql_query('ROLLBACK'); mysql_close($link); } exit; } function connect_bd() { //начинаем подключение к бд $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд if( $link )//проверка удачного соединения с бд { if(!mysql_select_db ($name_bd))//проверка существования базы даных { echo"bd"; error_bd($link); } mysql_query("SET NAMES utf8");// задаем кодировку всех данных }else{ echo "bd"; error_bd($link); } } //функция авторизации function valid() { if(isset($_POST['login_name'])) { //дополнительная ращита ввода логина от админки if(isset($_GET['administrator'])) { //проверка вводимого логина для администратора if(mb_strlen($_POST['login_name'], 'UTF-8') <= 20 & mb_strlen($_POST['login_name'], 'UTF-8') >=5) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['login_name'])) { echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в логине';</script>"; exit; }else{ $loginuser = $_POST['login_name']; $loginuser = strtolower($loginuser); } }else{ echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в логине';</script>"; exit; } }else{ //проверка вводимого логина для простых смертных if(mb_strlen($_POST['login_name'], 'UTF-8') <= 20 & mb_strlen($_POST['login_name'], 'UTF-8') >=6) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['login_name'])) { echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в логине';</script>"; exit; }else{ $loginuser = $_POST['login_name']; $loginuser = strtolower($loginuser); } }else{ echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в логине';</script>"; exit; } } //проверка вводимого пароля if(mb_strlen($_POST['login_password'], 'UTF-8') <= 20 & mb_strlen($_POST['login_password'], 'UTF-8') >=6) { if (preg_match("/[^0-9a-zA-Z\-\_]/", $_POST['login_password'])) { echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в пароле';</script>"; exit; }else{ $passworduser = $_POST['login_password']; } }else{ echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в пароле';</script>"; exit; } }else{//далее если нет пост запроса то проверяем входящие куки if(mb_strlen($_COOKIE['username'], 'UTF-8') <= 20 & mb_strlen($_COOKIE['username'], 'UTF-8') >=5) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_COOKIE['username'])) { exit; }else{ $loginuser = $_COOKIE['username']; $loginuser = strtolower($loginuser); } }else{exit;} } //начинаем подключение к бд $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд if( $link )//проверка удачного соединения с бд { if(!mysql_select_db ($name_bd))//проверка существования базы даных { echo"<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Неизвестная ошибка';</script>"; error_bd($link); } mysql_query("SET NAMES utf8");// задаем кодировку всех данных $result = mysql_query("SELECT * FROM user WHERE name_user = '$loginuser'"); if(!$result) { echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Неизвестная ошибка';</script>"; error_bd($link); }else{ $row = mysql_fetch_array($result); $GLOBALS["members"] = array($loginuser=>$row['password']); $GLOBALS["user_id"] = $row['id']; $GLOBALS["user_password"] = $row['password']; $GLOBALS["data"] = $row['data_reg']; $GLOBALS["user_name"] = $row['name_user']; if($row['status_activate'] == 0) { $group='Не активированные пользователи'; }else if($row['status_activate'] == 1) { $group='Зарегистрированные пользователи'; } $GLOBALS["status_activate"] = $row['status_activate']; $GLOBALS["email"] = $row['email']; $GLOBALS["confirm"] = $row['confirm']; //echo$row[password]; //echo$row[email]; } }else{ echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка БД';</script>"; error_bd($link); } //if( $link ){mysql_close($link);}//закрываем соединение с бд } if (isset($_POST['auts']) && isset($_POST['login_name']) && isset($_POST['login_password']) ) { valid(); $username = get_magic_quotes_gpc() ? stripslashes($_POST['login_name']) : $_POST['login_name']; $username= strtolower($username); $password = get_magic_quotes_gpc() ? stripslashes($_POST['login_password']) : $_POST['login_password']; if ( array_key_exists($username, $members) && $members[$username] === $password ) { setcookie('username', $username, time()+5000,'/'); setcookie('password', $password, time()+5000,'/'); setcookie('message', $count_message, time()+5000,'/'); //вывод чегонить после авторизации echo "<script type='text/javascript'>window.parent.location.href = '/guestbook/page-0.html';</script>"; exit; }else{ echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Неверные данные';</script>"; exit; } }elseif(isset($_GET['logout'])) { setcookie('username','',0,'/'); setcookie('password','',0,'/'); setcookie('message','',0,'/'); echo "<script type='text/javascript'>window.parent.location.href = '/guestbook/auths.html';</script>"; exit; } $auth = '0'; if ( isset($_COOKIE['username']) && isset($_COOKIE['password']) ) { if($_COOKIE['username'] != '') { valid(); $username = get_magic_quotes_gpc() ? stripslashes($_COOKIE['username']) : $_COOKIE['username']; $username= strtolower($username); $password = get_magic_quotes_gpc() ? stripslashes($_COOKIE['password']) : $_COOKIE['password']; if ( array_key_exists($username, $members) && $members[$username] === $password ) { setcookie('username', $username, time()+5000,'/'); setcookie('password', $password, time()+5000,'/'); $auth = '1'; //в случае успешной авторизации в куках выполняем код } } } //if ($auth == '0'){echo'dno';} //генератор бредокода для подтверждений function generate_code($length) { $code = ''; $symbols = '0123456789abcdefghijklmnopqrstuvwxyz'; for( $i = 0; $i < (int)$length; $i++ ) { $num = rand(1, strlen($symbols)); $code .= substr( $symbols, $num, 1 ); } return $code; } //общий шаблон function sample($title,$text,$auth,$name) { if($auth != '1') { $auths_key=', для того чтобы оставить отзыв авторизуйтесь <a href="/guestbook/auths.html">Авторизация</a> | <a href="/guestbook/registration/step-1.html">Регистрация</a>'; }else{ if($name == 'admin') { $admin_url = '<br><a href="/guestbook/administration.html">Администрирование</a>'; }else{ $admin_url = ''; } $auths_key=', сейчас вы авторизованы как пользователь '.$name.' <a href="/guestbook/exit.html">Выйти</a> '.$admin_url; } $t='<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>'.$title.'</title> <style type="text/css"> body {color: #6B6B6B;font-family: "Trebuchet MS",Arial,Helvetica,sans-serif;font-size: 12px;width: 800px;} .art-post { position: relative; margin: 0px auto; min-width: 27px; min-height: 27px; } .art-post-body { position: relative; padding: 14px; } .art-post-tr, .art-post-tl, .art-post-br, .art-post-bl, .art-post-tc, .art-post-bc, .art-post-cr, .art-post-cl { position: absolute; } .art-post-tr, .art-post-tl, .art-post-br, .art-post-bl { width: 38px; height: 38px; background-image: url("images/post_s.png"); } .art-post-tl { top: 0px; left: 0px; clip: rect(auto, 19px, 19px, auto); } .art-post-tr { top: 0px; right: 0px; clip: rect(auto, auto, 19px, 19px); } .art-post-bl { bottom: 0px; left: 0px; clip: rect(19px, 19px, auto, auto); } .art-post-br { bottom: 0px; right: 0px; clip: rect(19px, auto, auto, 19px); } .art-post-tc, .art-post-bc { left: 19px; right: 19px; height: 38px; background-image: url("images/post_h.png"); } .art-post-tc { top: 0px; clip: rect(auto, auto, 19px, auto); } .art-post-bc { bottom: 0px; clip: rect(19px, auto, auto, auto); } .art-post-cr, .art-post-cl { top: 19px; bottom: 19px; width: 38px; background-image: url("images/post_v.png"); } .art-post-cr { right: 0px; clip: rect(auto, auto, auto, 19px); } .art-post-cl { left: 0px; clip: rect(auto, 19px, auto, auto); } .art-post-cc { position: absolute; top: 19px; left: 19px; right: 19px; bottom: 19px; background-image: url("images/post_c.png"); } .art-post { margin: 10px; } .news {background-color: #FFFFFF;border: 1px solid #B0B0B0;border-radius: 4px 4px 4px 4px;color: #3C3C3C;font-size: 13px;margin: 10px 0 30px;padding: 3px 10px 5px;} .news-title {border-bottom: 1px dotted #AAAAAA;color: #336699;font-size: 14px;font-weight: bold;} .news-date {background-color: #EAEAEA;border: 1px solid #B0B0B0;border-radius: 4px 4px 4px 4px;color: #3C3C3C;float: left;font-size: 12px;margin: 10px 0;padding: 3px 10px 5px;} .pages {background: none repeat scroll 0 0 #FBFBFB;border: 1px solid #DCDCDC;font: 12px arial;overflow: hidden;padding: 12px 8px 8px;} .pages a, .pages a:hover {font: 12px arial;cursor:pointer;} .prev {float: left;} .prev a, .prev a:hover {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;display: block;font-weight: bold;padding: 2px 7px;text-decoration: none;} .prev a:hover {background: none repeat scroll 0 0 #2D8599;color: #FFFFFF;} .prev span {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;color: #CCCCCC;font-weight: bold;padding: 2px 7px;} .next {float: right;} .next a, .next a:hover {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;display: block;font-weight: bold;padding: 2px 7px;text-decoration: none;} .next a:hover {background: none repeat scroll 0 0 #2D8599;color: #FFFFFF;} .next span {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;color: #CCCCCC;font-weight: bold;padding: 2px 7px;} .page-nums {margin: 0 44px;text-align: center;} .page-nums span {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;color: #CCCCCC;padding: 2px 7px;} .page-nums a, .page-nums a:hover {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;padding: 2px 7px;} .page-nums a:hover {background: none repeat scroll 0 0 #2D8599;color: #FFFFFF;} table {width: 240px;border: 1px solid #CDCDCD;background-color: #EFEFEF;color: #909090;} input{border-width: 1px;border-style: solid;border-top-color: #CDCDCD;border-left-color: #CDCDCD;background-color: #FFFFFF;} h3{margin:0;} .info{vertical-align: top;color: #E28D8D;font-size: 14px;} .right{text-align: right;vertical-align: top;width:70px;} </style> <script type="text/javascript"> function confirm_delete(pos) { if(document.getElementById(pos).style.display == "none") { document.getElementById(pos).style.display = "inline"; document.getElementById(pos + "del").style.display = "none"; }else{ document.getElementById(pos).style.display = "none"; document.getElementById(pos + "del").style.display = "inline"; } } function post_message(pos) { document.getElementById(pos + "gif").style.display = "inline"; document.getElementById(pos + "but").style.display = "none"; document.getElementById(pos + "inp").style.display = "none"; } </script> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> </head> <body> <div class="news-date" style="float: none;"><center><a href="/guestbook/page-0.html"><img style="width: 85px;margin-top:15px;margin-left: -56px;" src="images/logo.png"></a> Добро пожаловать в гостевую книгу'.$auths_key.'</center><br></div> <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> '.$text.' </div> </div> </div> <div class="cleared"></div> </div> </div> </body> </html>'; return $t; } //блок из шаблона function news_block($title,$text,$data,$name,$id,$auth,$url) { if($auth == '1') { //user=$1&num_page //guestbook/user/'.$name.'/page-0/delete-'.$id.'.html $admin_key=' | <a id="'.$name.$id.'" href="#" onClick="confirm_delete(\''.$name.$id.'\')">Удалить</a><div id="'.$name.$id.'del" style="display:none;">(<a href="/guestbook'.$url.'/delete-'.$id.'.html">Да Удалить</a> / <a onClick="confirm_delete(\''.$name.$id.'\')" href="#">Отменить</a>)</div> | <a href="/guestbook'.$url.'/edit-'.$id.'.html">Редактировать</a>'; }else{ $admin_key=''; } $t='<div class="news"> <div class="news-title">'.$title.'</div> '.$text.'<br> <div class="news-date">'.$data.' | '.$name.' | <a href="/guestbook/user/'.$name.'/page-0.html">Все сообщения этого автора</a>'.$admin_key.'<br></div> <br> </div>'; return $t; } function block_commentaries($title,$text,$user_name,$email,$auth) { //Формируем блок для постинга if($auth == '1') { $block_comment=' <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> <iframe id="iframepost" name="iframepost" style="display:none"></iframe> <form target="iframepost" name="comments-form" id="comments-form" style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" action="/guestbook/new_post.php" method="post"> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input readonly style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" maxlength="20" value="'.$user_name.'" name="name" id="comments-form-name" > <label for="comments-form-name">Имя</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input readonly style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="2" size="22" value="'.$email.'" name="email" id="comments-form-email"> <label for="comments-form-email">E-Mail</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" maxlength="20" value="'.$title.'" name="title" id="comments-form-name" > <label for="comments-form-name">Заголовок (Обязательное поле)</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <textarea style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" tabindex="5" rows="8" cols="65" name="comment" id="comments-form-comment">'.$text.'</textarea> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input type="checkbox" tabindex="5" value="1" name="subscribe" id="comments-form-subscribe" class="checkbox"> <label for="comments-form-subscribe">Отметьте чекбокс в подтверждение что вы человек</label><br> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input type="hidden" value="true" id="attached_Image" name="attached_Image"> <input type="submit" value="Отправить" name="object_group"> </p> <p id="attached_Image_p" style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"></p> </form> <form style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" target="iframepost" action="/guestbook/upload.php" method="post" enctype=multipart/form-data> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> Прикрепить изображение<br> <input id="uploadinp" type=file name=userfile> <input id="uploadbut" type=submit value=Загрузить onClick="post_message(\'upload\')"> <img id="uploadgif" style="display:none;" src="images/progress.gif"> </p> </form> </div> </div> </div> <div class="cleared"></div> </div> </div>'; }else{ $block_comment=''; } return $block_comment; } if (isset($_GET['page'])) { $get_page = $_GET['page']; }else{ $get_page = 'default'; } switch($get_page) { case 'auths'://авторизация if($auth == '1') { header('Location: /guestbook/page-0.html'); exit; } $forma = '<center> <iframe id="iframepost" name="iframepost" style="display:none"></iframe> <form method="post" target="iframepost"> <table> <tbody> <tr> <td colspan="2"><center><img src="images/logo.png" style="margin-top:15px;"></center></td> </tr> <tr> <td class="right" rowspan="2"><img src="images/admin_login.png"></td> <td><h3>Авторизация</h3></td> </tr> <tr> <td class="info" id="info"> </td> </tr> <tr> <td class="right">Логин:</td> <td><input type="text" name="login_name" id="login_name"></td> </tr> <tr> <td class="right">Пароль:</td> <td><input type="password" name="login_password" id="login_password"></td> </tr> <tr> <td class="right"></td> <td><input type="submit" id="button" name="sub" value="Войти"><br><br></td> </tr> </tbody></table> <input type="hidden" value="true" id="auts" name="auts"> </form> </center>'; echo sample('Авторизация',$forma,$auth,''); break; case 'registr'://регистрация if($auth == '1') { header('Location: /guestbook/page-0.html'); exit; } switch($_GET['step']) { case '1': if(count($_POST)) { //проверка вводимого логина if(mb_strlen($_POST['login_name'], 'UTF-8') <= 20 & mb_strlen($_POST['login_name'], 'UTF-8') >=6) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['login_name'])) { echo "<script type='text/javascript'>alert('Ошибка логина: Допустимы только латинские буквы и цифры');</script>"; exit; }else{ $loginuser = $_POST['login_name']; $loginuser = strtolower($loginuser); $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд if( $link )//проверка удачного соединения с бд { mysql_query("SET NAMES utf8");// задаем кодировку всех данных if(!mysql_select_db ($name_bd)) { die (mysql_error()); } //Проверка на совпадения $res = mysql_query("SELECT name_user FROM user WHERE name_user = '$loginuser'"); if(!$res) { echo "<script type='text/javascript'>alert('Ошибка логина: Введенный вами логин занят другим пользователем, ввести другой');</script>"; error_bd($link); } if(mysql_num_rows($res) > 0) { echo "<script type='text/javascript'>alert('Ошибка логина: Введенный вами логин занят другим пользователем, ввести другой');</script>"; error_bd($link); } //if(count(mysql_num_rows($res))) //{ // echo "<script type='text/javascript'>alert('Ошибка логина: Введенный вами логин занят другим пользователем, ввести другой');</script>"; // exit; //} }else{ echo "<script type='text/javascript'>alert('Критическая ошибка: Невозможно соединиться с базой данных, попробуйте зайти позже');</script>"; exit; } } }else{ if(mb_strlen($_POST['name'], 'UTF-8') <= 5) { echo "<script type='text/javascript'>alert('Ошибка логина: Должно быть минимум 6 вводимых знаков');</script>"; exit; }else{ echo "<script type='text/javascript'>alert('Ошибка логина: Превышен лимит вводимых знаков 20');</script>"; exit; } //exit; } //проверка вводимого пароля if(mb_strlen($_POST['login_password'], 'UTF-8') <= 20 & mb_strlen($_POST['login_password'], 'UTF-8') >=6) { if (preg_match("/[^0-9a-zA-Z\-\_]/", $_POST['login_password'])) { echo "<script type='text/javascript'>alert('Ошибка пароля: Допустимы только латинские буквы и цифры');</script>"; exit; }else{ $passworduser = $_POST['login_password']; } }else{ if(mb_strlen($_POST['login_password'], 'UTF-8') <= 5) { echo "<script type='text/javascript'>alert('Ошибка пароля: Должно быть минимум 6 вводимых знаков');</script>"; exit; }else{ echo "<script type='text/javascript'>alert('Ошибка пароля: Превышен лимит вводимых знаков 20');</script>"; exit; } //exit; } //проверка введеной почты if(mb_strlen($_POST['email'], 'UTF-8') <= 35 & mb_strlen($_POST['email'], 'UTF-8') >=3) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['email'])) { echo "<script type='text/javascript'>alert('Ошибка почты: Адрес электронной почты не корректен');</script>"; exit; //exit; }else{ $email = $_POST['email']; } }else{ echo "<script type='text/javascript'>alert('Ошибка почты: Адрес электронной почты не корректен');</script>"; exit; } if( $link )//проверка удачного соединения с бд { $confirm = generate_code(15);//генерируем 15 значный бредокод $sql="INSERT INTO user (name_user,data_reg,status_activate,email,password,confirm) VALUES ('".$loginuser."','".strtotime("now")."',0,'".$email."','".$passworduser."','".$confirm."');"; if(!mysql_query($sql)) { die (mysql_error()); echo "<script type='text/javascript'>alert('Неизвестная ошибка, попробуйте позже.');</script>"; } } echo "<script type='text/javascript'>window.parent.location.href = '/guestbook/auths.html';</script>"; }else{ $forma = '<center> <iframe id="iframepost" name="iframepost" style="display:none"></iframe> <form action="/guestbook/reg_one.php" method="post" target="iframepost"> <table> <tbody> <tr> <td colspan="2"><center><img src="images/logo.png" style="margin-top:15px;"></center></td> </tr> <tr> <td class="right" rowspan="2"><img src="images/admin_login.png"></td> <td><h3>Регистрация</h3></td> </tr> <tr> <td class="info" id="info"> </td> </tr> <tr> <td class="right">Логин:</td> <td><input type="text" name="login_name" id="login_name"></td> </tr> <tr> <td class="right">Пароль:</td> <td><input type="password" name="login_password" id="login_password"></td> </tr> <tr> <tr> <td class="right">Email@:</td> <td><input type="text" name="email" id="email"></td> </tr> <tr> <td class="right"></td> <td><input type="submit" id="button" name="sub" value="Регистрация"><br><br></td> </tr> </tbody></table> </form> </center>'; echo sample('Регистрация',$forma,$auth,''); } break; case '2': echo $_GET['step']; break; } break; case 'install'://инсталляция if(isset($_GET['step'])) { $step=$_GET['step']; }else{ $step='default'; } switch($step) { case '1': //начинаем подключение к бд $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд $error='Ошибок не обнаружено, все данные верны.'; $i=0; if($link )//проверка удачного соединения с бд { mysql_query("SET NAMES utf8");// задаем кодировку всех данных if(!mysql_select_db ($name_bd)) { $error=" Невозможно выбрать указанную базу даных, возможно неверно указано имя базы данных.<br>"; $i++; } }else{ $error=" Невозможно установить соединение с базой данных,возможно вы не верно указали логин или пароль.<br>"; $i++; } $text='<center><h3>Продолжение работы с мастером установки</h3><br><strong>Ниже указаны проблемы возникшие при тестировании соединения с базой данных, если ошибок нет, вы можете смело переходить к шагу 3.</strong></center>'; if($i>0) { $next_step='<input type="submit" value="Вернуться на предыдущий шаг">'; $step_url='installation.html'; }else{ $next_step='<input type="submit" value="Перейти на следующий шаг">'; $step_url='installation/step-2.html'; } $block=' <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> <form name="comments-form" id="comments-form" style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" action="/guestbook/'.$step_url.'" method="get"> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <label>'.$error.'</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> '.$next_step.' </p> </form> <br> <br> </div> </div> </div> <div class="cleared"></div> </div> </div>'; echo sample('Установка гостевой книги - шаг 2',$text.$block,$auth,''); break; case '2': if(count($_POST)) { if($_POST['complete'] = 'complete') { $file = 'guestbook.php'; $array=file( $file ); $array[9]='$install_complete="1";'. "\n"; file_put_contents( $file, $array ); header('Location: /guestbook/auths/administrator.html'); exit; } } //начинаем подключение к бд $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд $error=''; $i=0; if( $link )//проверка удачного соединения с бд { mysql_query("SET NAMES utf8");// задаем кодировку всех данных if(!mysql_select_db ($name_bd)) { $error='Ошибка выбора базы данных, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } //проверка существования таблицы. $x=mysql_query('SELECT * FROM user LIMIT 1'); if($x) { $error='Таблица уже существует, для повторной установки необходимо очистите базу данных, если вы удачно прошли все 3 этапа но не нажали на кнопку сохранить изменения, сделайте это сейчас и доступ к этой странице будет заблокирован'; mysql_close($link);//закрываем соединение с бд }else{ $sql = "CREATE TABLE IF NOT EXISTS user ( id int NOT NULL AUTO_INCREMENT PRIMARY KEY, name_user VARCHAR(60) NOT NULL, data_reg int NOT NULL, status_activate int NOT NULL, email VARCHAR(60) NOT NULL, password VARCHAR(60) NOT NULL, confirm VARCHAR(60) NOT NULL)TYPE=MyISAM;"; if(!mysql_query($sql)) { $error='Ошибка создания таблицы базы данных, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } $sql = "CREATE TABLE IF NOT EXISTS post ( id int NOT NULL AUTO_INCREMENT PRIMARY KEY, id_user VARCHAR(60) NOT NULL, name_user VARCHAR(60) NOT NULL, pub_data int NOT NULL, list_modifiet int NOT NULL, title VARCHAR(60) NOT NULL, text TEXT)TYPE=MyISAM;"; if(!mysql_query($sql)) { $error='Ошибка создания таблицы базы данных, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } $sql = "CREATE TABLE IF NOT EXISTS images ( id int NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(60) NOT NULL, id_user int, text TEXT NOT NULL, type VARCHAR(60) NOT NULL)TYPE=MyISAM;"; if(!mysql_query($sql)) { $error='Ошибка создания таблицы базы данных, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } $sql="INSERT INTO user (id,name_user,data_reg,status_activate,email,password,confirm) VALUES (1,'admin','".strtotime("now")."',1,'trulander@mail.ru','password','".$confirm."');"; if(!mysql_query($sql)) { $error='Ошибка создания записи в таблице, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } $sql="INSERT INTO post (id,id_user,name_user,pub_data,list_modifiet,title,text) VALUES (1,'1','admin','".strtotime("now")."','".strtotime("now")."','Добро пожаловать в гостевую книгу','Добро пожаловать в гостевую книгу, если вы выдите это сообщение значит вы все сделали правильно. Для того чтобы удалить или отредактировать запись нажмине на ссылку (Редактировать запись) , или (Удалить запись)');"; if(!mysql_query($sql)) { $error='Ошибка создания записи в таблице, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } mysql_close($link);//закрываем соединение с бд } }else{ echo mysql_error(); } $text='<center><h3>Продолжение работы с мастером установки</h3><br><strong>Ниже указаны проблемы возникшие при записи данных, если ошибок нет, вы можете сохранить параметры и завершить установку.</strong></center>'; if($i>0) { $next_step='<input type="submit" value="Вернуться на предыдущий шаг">'; $step_url='installation/step-1.html'; $method='get'; }else{ $next_step='<input type="hidden" value="complete" id="complete" name="complete"><input type="submit" value="Сохранить и завершить установку">'; $step_url='installation/step-2.html'; $method='post'; } $block=' <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> <form name="comments-form" id="comments-form" style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" action="/guestbook/'.$step_url.'" method="'.$method.'"> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <label>'.$error.'</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> '.$next_step.' </p> </form> <br> <br> </div> </div> </div> <div class="cleared"></div> </div> </div>'; echo sample('Установка гостевой книги - шаг 3',$text.$block,$auth,''); break; default: if($auth == '1') { header('Location: /guestbook/page-0.html'); exit; } //проверяю может мы уже все установили. $perem = globals(); if($perem[4] == '1') { header('Location: /guestbook/page-0.html'); exit; } if(count($_POST)) { if(mb_strlen($_POST['namebd'], 'UTF-8') <= 50 & mb_strlen($_POST['namebd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['namebd'])) { echo "Вы ввели недопустимые символы в поле имени базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле имени базы данных"; exit; } if(mb_strlen($_POST['loginbd'], 'UTF-8') <= 50 & mb_strlen($_POST['loginbd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['loginbd'])) { echo "Вы ввели недопустимые символы в поле логина от базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле логина от базы данных"; exit; } if(mb_strlen($_POST['passwordbd'], 'UTF-8') <= 50 & mb_strlen($_POST['passwordbd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['passwordbd'])) { echo "Вы ввели недопустимые символы в поле пароля от базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле пароля от базы данных"; exit; } if (!preg_match("/[^0-9]/", $_POST['countpost']) & (mb_strlen($_POST['countpost'], 'UTF-8') <= 3)) { }else{ echo 'Вы ввели недопустимые символы в поле количества постов на странице, либо превысели допустимый лимит постов.'; exit; } $file = 'guestbook.php'; $array=file( $file ); $array[5]='$name_bd="'.$_POST["namebd"]."\";\n"; $array[6]='$login="'.$_POST["loginbd"]."\";\n"; $array[7]='$password="'.$_POST["passwordbd"]."\";\n"; $array[8]='$count_posts="'.$_POST["countpost"]."\";\n"; file_put_contents( $file, $array ); header('Location: /guestbook/installation/step-1.html'); exit; } $perem = globals(); $namebd=$perem[0]; $loginbd=$perem[1]; $passwordbd=$perem[2]; $countpost=$perem[3]; $text='<center><h3>Вас привтствует мастер установки</h3><br><strong>Для продолжения, заполните все поля *все поля являются обязательными.</strong></center>'; $block=' <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> <form name="comments-form" id="comments-form" style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" action="/guestbook/installation.html" method="post"> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="2" size="22" value="'.$namebd.'" name="namebd"> <label for="comments-form-email">Имя базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$loginbd.'" name="loginbd" > <label for="comments-form-name">Логин базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$passwordbd.'" name="passwordbd"> <label for="comments-form-name">Пароль базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$countpost.'" name="countpost"> <label for="comments-form-name">Количество отображаемых записей на странице</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input type="submit" value="Сохранить и перейти на следующий шаг" name="object_group"> </p> </form> <br> <br> </div> </div> </div> <div class="cleared"></div> </div> </div>'; echo sample('Установка гостевой книги.',$text.$block,$auth,''); } break; case 'admin'://админка if($auth != '1') { header('Location: /guestbook/page-0.html'); exit; } if($user_name != 'admin') { header('Location: /guestbook/page-0.html'); exit; } if(count($_POST)) { if(mb_strlen($_POST['namebd'], 'UTF-8') <= 50 & mb_strlen($_POST['namebd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['namebd'])) { echo "Вы ввели недопустимые символы в поле имени базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле имени базы данных"; exit; } if(mb_strlen($_POST['loginbd'], 'UTF-8') <= 50 & mb_strlen($_POST['loginbd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['loginbd'])) { echo "Вы ввели недопустимые символы в поле логина от базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле логина от базы данных"; exit; } if(mb_strlen($_POST['passwordbd'], 'UTF-8') <= 50 & mb_strlen($_POST['passwordbd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['passwordbd'])) { echo "Вы ввели недопустимые символы в поле пароля от базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле пароля от базы данных"; exit; } if (!preg_match("/[^0-9]/", $_POST['countpost']) & (mb_strlen($_POST['countpost'], 'UTF-8') <= 3)) { }else{ echo 'Вы ввели недопустимые символы в поле количества постов на странице, либо превысели допустимый лимит постов.'; exit; } $file = 'guestbook.php'; $array=file( $file ); $array[5]='$name_bd="'.$_POST["namebd"]."\";\n"; $array[6]='$login="'.$_POST["loginbd"]."\";\n"; $array[7]='$password="'.$_POST["passwordbd"]."\";\n"; $array[8]='$count_posts="'.$_POST["countpost"]."\";\n"; file_put_contents( $file, $array ); header('Location: /guestbook/administration.html'); exit; } $perem = globals(); $namebd=$perem[0]; $loginbd=$perem[1]; $passwordbd=$perem[2]; $countpost=$perem[3]; $text='<center><h3>Настройки гостевой книги</h3><br><strong>редактируйте только те поля которые хотите изменить.</strong></center>'; $block=' <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> <form name="comments-form" id="comments-form" style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" action="/guestbook/administration.html" method="post"> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="2" size="22" value="'.$namebd.'" name="namebd"> <label for="comments-form-email">Имя базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$loginbd.'" name="loginbd" > <label for="comments-form-name">Логин базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$passwordbd.'" name="passwordbd"> <label for="comments-form-name">Пароль базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$countpost.'" name="countpost"> <label for="comments-form-name">Количество отображаемых записей на странице</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input type="submit" value="Применить" name="object_group"> </p> </form> </div> </div> </div> <div class="cleared"></div> </div> </div>'; echo sample('Админ панель: Настройки',$text.$block,$auth,$user_name); break; case 'add_post'://добавить запись if($auth != '1') { header('Location: /guestbook/page-0.html'); exit; } if($_GET['upload'] == '1') { $blacklist = array(".php", ".phtml", ".php3", ".php4"); foreach ($blacklist as $item) { if(preg_match("/$item\$/i", $_FILES['userfile']['name'])) { echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image_p').innerHTML = 'Неверные данные, загрузке подлежать только файлы изображений png и jpeg.';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadgif').style.display = 'none';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadbut').style.display = 'inline';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadinp').style.display = 'inline';</script>"; exit; } $imageinfo = getimagesize($_FILES['userfile']['tmp_name']); if($imageinfo['mime'] != 'image/png' && $imageinfo['mime'] != 'image/jpeg') { echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image_p').innerHTML = 'Неверные данные, загрузке подлежать только файлы изображений png и jpeg.';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadgif').style.display = 'none';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadbut').style.display = 'inline';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadinp').style.display = 'inline';</script>"; exit; } if($_FILES["userfile"]["size"] > 1024*3*1024) { echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image_p').innerHTML = 'Загружаемый файл слишклм велик, он превышает 3 мегабайта.';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadgif').style.display = 'none';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadbut').style.display = 'inline';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadinp').style.display = 'inline';</script>"; exit; } } $new_filename = generate_code(5).$_FILES['userfile']['name']; $sql="INSERT INTO images (name,id_user,text,type) VALUES ('".$new_filename."','".$user_id."','".base64_encode(file_get_contents($_FILES['userfile']["tmp_name"]))."','".$imageinfo['mime']."');"; if(!mysql_query($sql)) { echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image_p').innerHTML = 'Ошибка БД';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadgif').style.display = 'none';</script>"; exit; } echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image').value = '".$new_filename."';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image_p').innerHTML = 'Прикрепленное изображение: ".$_FILES['userfile']['name']."';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadgif').style.display = 'none';</script>"; }else if($_GET['upload'] == '0') { if(isset($_POST['subscribe'])) { if ((mb_strlen($_POST['title'], 'UTF-8') <= 50) & (mb_strlen($_POST['title'], 'UTF-8') >= 5)) { if ((mb_strlen($_POST['comment'], 'UTF-8') <= 2000) & (mb_strlen($_POST['comment'], 'UTF-8') >= 5)) { if ((mb_strlen($_POST['attached_Image'], 'UTF-8') <= 50) & (mb_strlen($_POST['attached_Image'], 'UTF-8') >= 8)) { $images = '<br><img src="images_upload/'.$_POST['attached_Image'].'">'; }else{ $images=''; } $sql="INSERT INTO post (id_user,name_user,pub_data,list_modifiet,title,text) VALUES ('".$user_id."','".$user_name."','".strtotime("now")."','".strtotime("now")."','".mysql_real_escape_string($_POST['title'])."','".mysql_real_escape_string($_POST['comment'].$images)."');"; if(!mysql_query($sql)) { echo "<script type='text/javascript'>alert('Ошибка БД, попробуйте позже.')</script>"; } echo "<script type='text/javascript'>window.parent.location.href = '/guestbook/page-0.html';</script>"; }else{ echo "<script type='text/javascript'>alert('Текст должен содержать от 5 до 2000символов.')</script>"; } }else{ echo "<script type='text/javascript'>alert('Текст заголовка должен содержать от 5 до 50символов.')</script>"; } }else{ echo "<script type='text/javascript'>alert('Вы не отметили чекбокс, подтвердите что вы человек, а не бот.')</script>"; } } break; case 'edit_post'://редактировать запись if($auth != '1') { header('Location: /guestbook/page-0.html'); exit; } //проверка входящих данных if (!preg_match("/[^0-9]/", $_GET['id_post']) & (mb_strlen($_GET['id_post'], 'UTF-8') <= 4))//искуственное ограничение в количестве записей { }else{ mysql_close($link); echo'Неизвестная ошибка'; exit; } if(!count($_POST)) { //mysql_query("SET NAMES utf8");// задаем кодировку всех данных $result = mysql_query("SELECT * FROM post WHERE id = ".$_GET['id_post']." LIMIT 1"); if(!$result) { echo'Ошибка: Такой страницы не существует.'; error_bd($link); } if(mysql_num_rows($result) < 1) { echo'Ошибка: Такой страницы не существует.'; error_bd($link); } $row = mysql_fetch_row($result); if(($row['1'] == $user_id) || ($user_name == 'admin')){ $key='1'; }else{ $key='0'; } if($key == '1') { //выводим контент в шаблоне echo sample('Редактирование записи',block_commentaries($row['5'],$row['6'],$user_name,$email,$auth,$user_name).'<script type="text/javascript">window.parent.document.getElementById("comments-form").action = "/guestbook/edit_post/'.$_GET['id_post'].'.php";</script>',$auth,''); }else{ //ошибка доступа } }else{ if(isset($_POST['subscribe'])) { if ((mb_strlen($_POST['title'], 'UTF-8') <= 50) & (mb_strlen($_POST['title'], 'UTF-8') >= 5)) { if ((mb_strlen($_POST['comment'], 'UTF-8') <= 2000) & (mb_strlen($_POST['comment'], 'UTF-8') >= 5)) { $_POST['comment'] = stripslashes($_POST['comment']); if ((mb_strlen($_POST['attached_Image'], 'UTF-8') <= 50) & (mb_strlen($_POST['attached_Image'], 'UTF-8') >= 8)) { $images = '<br><img src="images_upload/'.$_POST['attached_Image'].'">'; }else{ $images=''; } $result = mysql_query("UPDATE post SET id_user = '".$user_id."',name_user = '".$user_name."',list_modifiet = '".strtotime("now")."',title = '".mysql_real_escape_string($_POST['title'])."',text = '".mysql_real_escape_string($_POST['comment'].$images)."' WHERE id ='".$_GET['id_post']."';"); if(!$result) { echo "<script type='text/javascript'>alert('Ошибка при выполнении операции.');</script>";; error_bd($link); } echo "<script type='text/javascript'>window.parent.location.href = '/guestbook/page-0.html';</script>"; }else{ echo "<script type='text/javascript'>alert('Текст должен содержать от 5 до 2000символов.')</script>"; } }else{ echo "<script type='text/javascript'>alert('Текст заголовка должен содержать от 5 до 50символов.')</script>"; } }else{ echo "<script type='text/javascript'>alert('Вы не отметили чекбокс, подтвердите что вы человек, а не бот.')</script>"; } } exit; //формируем урл для возврата if($_GET['user'] != '') { $ul='/user/'.$_GET['user'].'/page-'.$_GET['num_page'].'.html'; }else{ $ul='/page-'.$_GET['num_page'].'.html'; } header('Location: /guestbook'.$ul); break; case 'delete_post'://удалить запись if($auth != '1') { header('Location: /guestbook/page-0.html'); exit; } //проверка входящих данных if (!preg_match("/[^0-9]/", $_GET['id_post']) & (mb_strlen($_GET['id_post'], 'UTF-8') <= 4))//искуственное ограничение в количестве записей { }else{ mysql_close($link); echo'Неизвестная ошибка'; exit; } //проверяю на права к редактированию записи $result = mysql_query("SELECT * FROM post WHERE id = '".$_GET['id_post']."' LIMIT 1"); if(!$result) { error_bd($link); } $row = mysql_fetch_row($result); if(($row['1'] == $user_id) || ($user_name == 'admin')){ $key='1'; }else{ $key='0'; } if($key == '1') { $sql="DELETE FROM post WHERE id = ".$_GET['id_post']." LIMIT 1"; if(!mysql_query($sql)) { die (mysql_error()); } }else{ //ошибка доступа } //формируем урл для возврата if (isset($_GET['user'])) { $ul='/user/'.$_GET['user'].'/page-'.$_GET['num_page'].'.html'; }else{ $ul='/page-'.$_GET['num_page'].'.html'; } header('Location: /guestbook'.$ul); break; case 'image'://блок со стационарными картинками switch($_GET['image']) { case 'post_s.png': Header("Content-type: image/png"); echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACGklEQVRYR+2YPUvDUBSG+6UuXUQUN0HsouDgICriUuyX+U/9DV36Azp2dpVOpTg0pTVNb5M2hQoVMhQCGQqF1vvK7YfaNIncFocbONNNTp7z3nND3hMIiGuzCgRpel7xN9LpdBpqNBqn3W77WtPUBA2JUyR0Xb2VZTmWy+X2KF2IFesOqqrqQadD4qY5SFuWJY3HY2kymXAJ5EJO0/x4MgwtUSo9H1OiMAN0htM0+bDX01Oj0YgLyLqCANnv91Ll8ssJJYo4wmH7ul31kadCbkrjXWiVbDYbdYRTFOXMNM2MWzLe65Y1lOr1+hUF22HbigO2uNCU2H/eL3bLh7YhpBmnJDgMgMOBWFy04dPb3MZlYJx4J7AgFt2q29T6DzCc0vn1X8B2WZ8JsLVtsrSVQjFPB0oo5vezIhQTivlVwO/9oseEYn4V8Hu/6DGuinU6za0bkVkBa7ey3W4+2Lbt6W/AryJu/hIWjv3z//4fUxT5fDg0tw4GZ6aq9RsnsECxWIwaRivJUw0vuQxDTxYKhSNH+wY/V6lUYoPBe9pLQh730PlIplqtXjKo1b6SLsIBh2u11wtUwXugMisE3tW2LQnvWAGFGcZ3J878ElxwJJ/P77dab3e6TlKcxk/zMRYhJE2Icr+0fVAKTe88WFmGY3YdD206MBYAFIzuSrVmJhOLX8oxODyIingH8s6gvA/wGD0eQKCaTcRKoE8oZIuMLx1J9wAAAABJRU5ErkJggg=='); break; case 'post_h.png': Header("Content-type: image/png"); echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAADIAAAAmCAYAAACGeMg8AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAeElEQVRYR+2ZwQ3AIAwDjSqV5Zi/D4aJGhbor4JYh+Q/JvGBiMQ67wRabqm+5nyGgxQRw0EYOa2KVISK/AQXWovWorW+L24yQkbICBmp9byHWlALakEtqLXlVwb8gl/wC37B7x78OowUloc1duom0p1GHKQrjZTXCzdATj8BVGrbAAAAAElFTkSuQmCC'); break; case 'post_v.png': Header("Content-type: image/png"); echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAACYAAAAyCAYAAAAweqkjAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAhElEQVRYR+3SMQqAMBAF0RUhXs7zW+Qwi2tlijRThcAI6T4kPCfi/47enzszl5zv7nrKVafVOYd3hQ+b/RXFaKuKKUYF6N7GFKMCdG9jilEBurcxxagA3duYYlSA7m1MMSpA9zamGBWgextTjArQvY0pRgXo3sYUowJ0b2OKUQG636axFw/STj+hvo9CAAAAAElFTkSuQmCC'); break; case 'post_c.png': Header("Content-type: image/png"); echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAjUlEQVRoQ+3YwQ2AMAwEwRRI/+VYiAb4nE6BaB48bcm38QZYM3Od8KwThnhmMMjXSCKCSMmSjpaj5Wi9v4HYETtiR+zIv75TWIu1WIu1WGvL7yX6pV/6pV/6pd/EhO6RJL1GLSKNVJOeiCTpNWoRaaSa9EQkSa9Ri0gj1aQnIkl6jVpEGqkmPRFJ0mvU3hw8+WpwlKMzAAAAAElFTkSuQmCC'); break; case 'logo.png': Header("Content-type: image/png"); echo base64_decode('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'); break; case 'admin_login.png': Header("Content-type: image/png"); echo base64_decode('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'); break; case 'favicon.ico': Header("Content-type: image/x-icon"); echo base64_decode('AAABAAEAEBAAAAAAAABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAQAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOv+6GYNVJEMBJEMBJEMBJEMCScNnbz/IAAAC7uLewraywraza2dgAAAAAAADbz/JJEMBJEMBJEMBJEMBJEMBJEMBJEMBJEMDn3/e7uLewraywraza2dgAAAAAAACGYNVJEMBJEMBtQM3z7/v///96UNFJEMBJEMCqj+K7uLewraywraza2dgAAAAAAAAAAAAAAAAAAADOv+6qj+Kqj+JJEMBJEMBJEMC2n+a7uLewraywraza2dgAAAAAAAAAAACqj+JJEMBJEMBJEMBJEMBJEMBJEMCGYNUAAAC7uLewraywraza2dgAAAAAAADOv+5JEMBJEMBJEMBhMMiqj+Kqj+Lbz/IAAAAAAAC7uLewraywraza2dgAAAAAAACqj+JJEMBJEMCGYNX////Ov+5JEMBJEMBJEMAAAAC7uLewraywraza2dgAAAAAAADn3/dJEMBJEMBJEMBJEMBJEMBJEMBJEMCegN0AAAC7uLewraywraza2dgAAAAAAAAAAADOv+6GYNVJEMBJEMBJEMBJEMCqj+IAAAAAAAC7uLewraywraza2dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7uLewraywraza2dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7uLewraywraza2dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7uLewraywraza2dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//8Ks//8AAMAhAACAAQAAgAEAAPABAADAIQAAgGEAAIAhAACAIQAAwGEAAP/hAAD/4QAA/+EAAP//AAD//wAA'); break; case 'progress.gif': Header("Content-type: image/gif"); echo base64_decode('R0lGODlhGQAZAOZAANDQ0Pj4+NPT097e3vz8/Pf39/b29vPz8+Li4vT09N/f39fX1+jo6K6urvDw8ODg4Pv7+/n5+erq6q+vr/X19bCwsLe3t7Ozs+Pj48fHx9nZ2fHx8ba2tvr6+srKytXV1eTk5MLCwrKyssnJybGxsbq6urS0tMbGxsDAwLu7u729vcjIyLm5ubW1tdvb28PDw83Nzby8vN3d3dzc3Li4uMXFxb6+vv39/dHR0f7+/unp6a2treHh4dLS0tTU1P///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgBAACwAAAAAGQAZAAAH9IA/goOEASs7FiCEi4yFKDuQJA+NlIOHkJAmlYsBAYINmJg/BDoKDASMNzwCAjw3HKE7Ezk8AD0APDmLOjg+Pjg6PKCYJwY9vj49noQDx8kDPzwsDRceAQXOycuDvL7AjbS2uLqEqgI+rpSkAzrkjAbbmz8FBoPr7fKCqj6tNzkI4nLl6/ZLwgFk2vI189XjwUFkygb2KvgvoLtK5vqNYqAAXz5BBQo0CrmJlKmL+lZpZBTulkBCBL8xCpAtIjNnPaCt43HghzGI8X7EbFerx7EELcctMofuxk+GPEbpYIeqUYAIIGtG/Uio5VGui0g9wJBgUyAAIfkEBQoAQAAsCQAAAA4ACQAAB1SAPz8RDgeCh4g/Gxo+Hwg3iYIQCz0+Pjg6PwEeOzQgPxQ4lj49AwEvO6kiCB2UlpgjqbIWPw6UAjw3DbKpDZIFAYIcvDsVkT88u7Inxz8KwyQeAYEAIfkEBQoAQAAsEAACAAkADwAAB1WAP4KDhAQ6CgwEgzk8AD0APDmCBj0+lj0BggWVl5k/jI6QkoKGAzqjhJoGqQYoOyIAN4IBKju2Ez6CI7a8F4ITvLyCFsE7FYI8wLwZP4YwHA0XHgGBACH5BAUKAEAALBAACgAJAA0AAAdOgD+CNzw+Ajw3gj86OD4+OBKKAz2OPQ+KjI6QioQCh4mKPwUFihQhOy0gigUpO64VPIIZrrQcgg20rg2CFrk7FYI8E7kZijwlDRceAYKBACH5BAUKAEAALAkAEAAOAAkAAAdKgD+Cg4IEOgoMOYSEOTwAPQA8ios/AT0+mD0BPxQhOyYzPwaXmQEFKTupFS6Nj5E5J6myFz+GAzoEPw2yspQ/Frw7Fb48E7wZvoEAIfkEBQoAQAAsAgARAA4ACAAAB02APwYoOyIANz+Jij8BKjuPEz6LiiOPlhc/BDoDPAc/E5aWOTwAPT0+CRahOxUGpz4+PTw8oJYZBa+xPD88JQ0XHgGjpacJk4qaDxjGgQAh+QQFCgBAACwAAAoACQAOAAAHT4A/FCE7LSA/iAUxO4wVPIg1jJIciA2SjA2IFpc7FYg8E5cZiD88JQ0XGQ6kiDc8AgI8N6Q6OD4+ODqkAz23PQO0tri6ra8+sqw/ARHJzYEAIfkEBQoAQAAsAAAEAAoADQAAB1OAP4I3Mik7Jhgdgj8gFjuPJAiLNo+VFosNlY8NixyaOxWLPBOaGT8EOgMCLA0XHgE5CAA9ADw5iwc+uj49Abi7vL6CsbO1t4sEDAo6x4vOBQWLgQA7'); break; //кейс загрузки изображений из бд case 'image_upload': if((mb_strlen($_GET['image_upload'], 'UTF-8') <= 50 & mb_strlen($_GET['image_upload'], 'UTF-8') >=8)) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я.\-\_]+$#u", $_GET['image_upload'])) { exit; }else{ $image_upload = $_GET['image_upload']; //начинаем подключение к бд $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд if( $link )//проверка удачного соединения с бд { mysql_query("SET NAMES utf8");// задаем кодировку всех данных if(!mysql_select_db ($name_bd)) { die (mysql_error()); } $result = mysql_query("SELECT * FROM images WHERE name = '".$image_upload."'"); if(!$result) { error_bd($link); } $row = mysql_fetch_row($result); Header("Content-type: ".$row['4']); echo base64_decode($row['3']); } } }else{ exit; } break; } break; default: if($auth != '1')//принудитльное соединение к бд в случае неудачной авторизации, для подгрузки постов { connect_bd(); } if( $link )//проверка удачного соединения с бд { //пагинация страниц if(isset($_GET['user'])) { if(mb_strlen($_GET['user'], 'UTF-8') <= 20 & mb_strlen($_GET['user'], 'UTF-8') >=1) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я.\-\_]+$#u", $_GET['user'])) { mysql_close($link); echo'Неизвестная ошибка'; exit; }else{ $name_user = $_GET['user']; $name_user = strtolower($name_user ); $where_id = 'WHERE name_user = "'.$name_user .'"'; $navi_x = '/user/'.$name_user.'/'; } }else{ $where_id=''; $navi_x = '/'; } }else{ $where_id=''; $navi_x = '/'; } $result = mysql_query("SELECT COUNT(*) FROM post ".$where_id." ORDER BY id DESC"); if(!$result) { //echo mysql_error(); mysql_close($link); //echo$raz; //echo"SELECT COUNT(*) FROM page WHERE razdel=blog ORDER BY id DESC"; echo'Данный раздел пока не содержит ни одной страницы1'; exit; } $row = mysql_fetch_row($result); //print_r($row); $allpage = $row[0]; if($allpage < 1) { echo'Данный раздел пока не содержит ни одной страницы.0'; error_bd($link); } //считываем настройки количества отображаемых сообщений $connect_bd=globals(); $count_posts=$connect_bd[3]; $limit = $count_posts; if (isset($_GET['num_page'])) { if (!preg_match("/[^0-9]/", $_GET['num_page']) & (mb_strlen($_GET['num_page'], 'UTF-8') <= 3)) { $start_list=$_GET['num_page'] * $limit; }else{ mysql_close($link); echo'Неизвестная ошибка'; exit; } }else{ $start_list = 0; } $pageCount = ceil( $allpage / $limit); $sss = ''; for( $i = 0; $i < $pageCount; $i++ ) { if(($start_list / $limit) == $i) { $sss = $sss.'<span>'.$i.'</span>'; if($i+1 != $pageCount) { $nav_next = '<a href="/guestbook'.$navi_x.'page-'.($i+1).'.html">Дальше >></a>'; }else{ $nav_next = '<span>Дальше >></span>'; } if($i-1 >= 0) { $nav_prev = '<a href="/guestbook'.$navi_x.'page-'.($i-1).'.html"><< Назад</a>'; }else{ $nav_prev = '<span><< Назад</span>'; } }else{ $sss =$sss.'<a href="/guestbook'.$navi_x.'page-'.$i.'.html">'.$i.'</a>'; } } $result = mysql_query("SELECT * FROM post ".$where_id." ORDER BY id DESC LIMIT ".$start_list.",".$limit.""); if(!$result) { mysql_close($link); echo$text_error; exit; } $block = ''; while($row = mysql_fetch_row($result)) { if (isset($user_id)) { //проверяю на права к редактированию записи if(($row['1'] == $user_id) || ($user_name == 'admin')){ $key='1'; }else{ $key='0'; } }else{ $key='0'; } $block = $block.news_block($row['5'],$row['6'],$row['3'],$row['2'],$row['0'],$key,$navi_x.'page-'.$start_list / $limit); } mysql_close($link);//закрываем соединение с бд }else{echo$text_error;exit;} //формируем блок навигации $navigation=' <div class="pages"> <div class="prev">'.$nav_prev.'</div> <div class="next">'.$nav_next.'</div> <div class="page-nums">'.$sss.'</div> </div>'; //выводим контент в шаблоне if(!isset($user_name)) { $user_name=''; } if(!isset($email)) { $email=''; } echo sample('Гостевая книга',$block.block_commentaries('','',$user_name,$email,$auth).$navigation,$auth,$user_name); } ?>
[L]
RewriteRule page-(.*)/edit-(.*).html$ guestbook.php?num_page==&page=edit_post&id_post=Исходный код гостевой книги: показать/спрятать [L]
#посты
RewriteRule user/(.*)/page-(.*).html$ guestbook.php?user==&num_page=Исходный код гостевой книги: показать/спрятать [L]
RewriteRule page-(.*).html$ guestbook.php?num_page== [L]
#загрузка файлов и отправка фармы
RewriteRule upload.php$ guestbook.php?page=add_post&upload=1 [L]
RewriteRule new_post.php$ guestbook.php?page=add_post&upload=0 [L]
RewriteRule edit_post/(.*).php$ guestbook.php?page=edit_post&id_post== [L]
Файл guestbook.php
<?php //ни в коем случае не трогаем и не смещаем глобальные переменные!!!. изменяя их, вы рискуете потерять над ними контроль из админ панели. function globals() { //Глобализируем переменные подключения к бд $name_bd=""; $login=""; $password=""; $count_posts="10"; $install_complete="1"; return array($name_bd,$login,$password,$count_posts,$install_complete); } /* И так все по заданию я сделал: 1. Внешний вид должен быть удобным (usability), c использованием логотипа Softline (по моиму сделал неплохо, и все удобно. делал для дальнейшей возможности встраивания в любой шаблон сайта) a. Добавление записей добавляются как обычные комментарии с простенькой защитой от ботов b. Просмотр уже существующих записей с постраничной навигацией (по умолчанию 10 на страницу) по дефолту на главной странице отображаются все записи с постраничной навигацией, а их количество задается при установке и после натраивается в админке c. Поддержка редактируемых настроек продукта редактируемые настройки это данные от сервера и количество отображаемых записей на странице d. Инструкция по установке продукта инструкция по установке - в ней нет необходимости, установку сделал интерактивную поэтапную e. Проверка на валидность данных сделал, но боюсь что из за громоздкости скрипта мог случайно упустить какуюто входящую переменную, или не очень качественно ее обработать. 3. User friendly – функционал, является дополнительным: a. Авторизация пользователей сделал отдельно авторизацию и отдельно регистрацию, даже сделал отдельную форму авторизации для администратора, для доп защиты b. Добавление / Редактирование / Удаление своих записей каждый пользователь имеет право создать новую запись, отредактировать свою старую или ее удалить, а администратор имет право делать это со всеми записями. c. Редактирование настроек продукта через web интерфейс (в том числе и кол-во отображаемых записей на странице) через административную панель администратор может менять настройки от базы данных и изменять количество выводимых записей на странице d. Интерактивная инсталляция продукта (запуск одного файла, где пользователь следует указаниям инсталлятора) сделал, все понятно и просто - нажимай далее и вводи данные. e. Весь продукт (включая картинки) состоит только из одного(!) файла весь скрипт не считая ридми и настроек для сервера mod rewrite и уровня выводимых ошибок(файла .htaccess) находится в одном файле, картинки также поместил в него. f. Возможность прикрепления картинок к записи сделал возможность прикрепления png и jpg изображений, но они не загружаются на сервер, они хранятся в базе данных, таким образом получается что даже с загруженными картинками скрипт занимает 1 файл. Дополнительным плюсом будет: 1. Наличие комментариев phpDoc везде где мог писал комментарии, что конкретно делает та или иная строчка кода. 2. Объектно-ориентированный подход не понел что это значит, использование функций ятоле или с использованием классов и пр. я использовал только функции 3. Наличие модульных тестов тесты никакие отдельно не выписывал, но тестировать конечно тестировал, весь скрипт можно разбить на модули по кейсам. */ date_default_timezone_set('America/Los_Angeles');//всеравно какая зона, главное чтоб нотисы больше не появлялись. function error_bd($link) { //echo mysql_error(); if($link) { mysql_query('ROLLBACK'); mysql_close($link); } exit; } function connect_bd() { //начинаем подключение к бд $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд if( $link )//проверка удачного соединения с бд { if(!mysql_select_db ($name_bd))//проверка существования базы даных { echo"bd"; error_bd($link); } mysql_query("SET NAMES utf8");// задаем кодировку всех данных }else{ echo "bd"; error_bd($link); } } //функция авторизации function valid() { if(isset($_POST['login_name'])) { //дополнительная ращита ввода логина от админки if(isset($_GET['administrator'])) { //проверка вводимого логина для администратора if(mb_strlen($_POST['login_name'], 'UTF-8') <= 20 & mb_strlen($_POST['login_name'], 'UTF-8') >=5) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['login_name'])) { echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в логине';</script>"; exit; }else{ $loginuser = $_POST['login_name']; $loginuser = strtolower($loginuser); } }else{ echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в логине';</script>"; exit; } }else{ //проверка вводимого логина для простых смертных if(mb_strlen($_POST['login_name'], 'UTF-8') <= 20 & mb_strlen($_POST['login_name'], 'UTF-8') >=6) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['login_name'])) { echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в логине';</script>"; exit; }else{ $loginuser = $_POST['login_name']; $loginuser = strtolower($loginuser); } }else{ echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в логине';</script>"; exit; } } //проверка вводимого пароля if(mb_strlen($_POST['login_password'], 'UTF-8') <= 20 & mb_strlen($_POST['login_password'], 'UTF-8') >=6) { if (preg_match("/[^0-9a-zA-Z\-\_]/", $_POST['login_password'])) { echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в пароле';</script>"; exit; }else{ $passworduser = $_POST['login_password']; } }else{ echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка в пароле';</script>"; exit; } }else{//далее если нет пост запроса то проверяем входящие куки if(mb_strlen($_COOKIE['username'], 'UTF-8') <= 20 & mb_strlen($_COOKIE['username'], 'UTF-8') >=5) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_COOKIE['username'])) { exit; }else{ $loginuser = $_COOKIE['username']; $loginuser = strtolower($loginuser); } }else{exit;} } //начинаем подключение к бд $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд if( $link )//проверка удачного соединения с бд { if(!mysql_select_db ($name_bd))//проверка существования базы даных { echo"<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Неизвестная ошибка';</script>"; error_bd($link); } mysql_query("SET NAMES utf8");// задаем кодировку всех данных $result = mysql_query("SELECT * FROM user WHERE name_user = '$loginuser'"); if(!$result) { echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Неизвестная ошибка';</script>"; error_bd($link); }else{ $row = mysql_fetch_array($result); $GLOBALS["members"] = array($loginuser=>$row['password']); $GLOBALS["user_id"] = $row['id']; $GLOBALS["user_password"] = $row['password']; $GLOBALS["data"] = $row['data_reg']; $GLOBALS["user_name"] = $row['name_user']; if($row['status_activate'] == 0) { $group='Не активированные пользователи'; }else if($row['status_activate'] == 1) { $group='Зарегистрированные пользователи'; } $GLOBALS["status_activate"] = $row['status_activate']; $GLOBALS["email"] = $row['email']; $GLOBALS["confirm"] = $row['confirm']; //echo$row[password]; //echo$row[email]; } }else{ echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Ошибка БД';</script>"; error_bd($link); } //if( $link ){mysql_close($link);}//закрываем соединение с бд } if (isset($_POST['auts']) && isset($_POST['login_name']) && isset($_POST['login_password']) ) { valid(); $username = get_magic_quotes_gpc() ? stripslashes($_POST['login_name']) : $_POST['login_name']; $username= strtolower($username); $password = get_magic_quotes_gpc() ? stripslashes($_POST['login_password']) : $_POST['login_password']; if ( array_key_exists($username, $members) && $members[$username] === $password ) { setcookie('username', $username, time()+5000,'/'); setcookie('password', $password, time()+5000,'/'); setcookie('message', $count_message, time()+5000,'/'); //вывод чегонить после авторизации echo "<script type='text/javascript'>window.parent.location.href = '/guestbook/page-0.html';</script>"; exit; }else{ echo "<script type='text/javascript'>window.parent.document.getElementById('info').innerHTML = 'Неверные данные';</script>"; exit; } }elseif(isset($_GET['logout'])) { setcookie('username','',0,'/'); setcookie('password','',0,'/'); setcookie('message','',0,'/'); echo "<script type='text/javascript'>window.parent.location.href = '/guestbook/auths.html';</script>"; exit; } $auth = '0'; if ( isset($_COOKIE['username']) && isset($_COOKIE['password']) ) { if($_COOKIE['username'] != '') { valid(); $username = get_magic_quotes_gpc() ? stripslashes($_COOKIE['username']) : $_COOKIE['username']; $username= strtolower($username); $password = get_magic_quotes_gpc() ? stripslashes($_COOKIE['password']) : $_COOKIE['password']; if ( array_key_exists($username, $members) && $members[$username] === $password ) { setcookie('username', $username, time()+5000,'/'); setcookie('password', $password, time()+5000,'/'); $auth = '1'; //в случае успешной авторизации в куках выполняем код } } } //if ($auth == '0'){echo'dno';} //генератор бредокода для подтверждений function generate_code($length) { $code = ''; $symbols = '0123456789abcdefghijklmnopqrstuvwxyz'; for( $i = 0; $i < (int)$length; $i++ ) { $num = rand(1, strlen($symbols)); $code .= substr( $symbols, $num, 1 ); } return $code; } //общий шаблон function sample($title,$text,$auth,$name) { if($auth != '1') { $auths_key=', для того чтобы оставить отзыв авторизуйтесь <a href="/guestbook/auths.html">Авторизация</a> | <a href="/guestbook/registration/step-1.html">Регистрация</a>'; }else{ if($name == 'admin') { $admin_url = '<br><a href="/guestbook/administration.html">Администрирование</a>'; }else{ $admin_url = ''; } $auths_key=', сейчас вы авторизованы как пользователь '.$name.' <a href="/guestbook/exit.html">Выйти</a> '.$admin_url; } $t='<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>'.$title.'</title> <style type="text/css"> body {color: #6B6B6B;font-family: "Trebuchet MS",Arial,Helvetica,sans-serif;font-size: 12px;width: 800px;} .art-post { position: relative; margin: 0px auto; min-width: 27px; min-height: 27px; } .art-post-body { position: relative; padding: 14px; } .art-post-tr, .art-post-tl, .art-post-br, .art-post-bl, .art-post-tc, .art-post-bc, .art-post-cr, .art-post-cl { position: absolute; } .art-post-tr, .art-post-tl, .art-post-br, .art-post-bl { width: 38px; height: 38px; background-image: url("images/post_s.png"); } .art-post-tl { top: 0px; left: 0px; clip: rect(auto, 19px, 19px, auto); } .art-post-tr { top: 0px; right: 0px; clip: rect(auto, auto, 19px, 19px); } .art-post-bl { bottom: 0px; left: 0px; clip: rect(19px, 19px, auto, auto); } .art-post-br { bottom: 0px; right: 0px; clip: rect(19px, auto, auto, 19px); } .art-post-tc, .art-post-bc { left: 19px; right: 19px; height: 38px; background-image: url("images/post_h.png"); } .art-post-tc { top: 0px; clip: rect(auto, auto, 19px, auto); } .art-post-bc { bottom: 0px; clip: rect(19px, auto, auto, auto); } .art-post-cr, .art-post-cl { top: 19px; bottom: 19px; width: 38px; background-image: url("images/post_v.png"); } .art-post-cr { right: 0px; clip: rect(auto, auto, auto, 19px); } .art-post-cl { left: 0px; clip: rect(auto, 19px, auto, auto); } .art-post-cc { position: absolute; top: 19px; left: 19px; right: 19px; bottom: 19px; background-image: url("images/post_c.png"); } .art-post { margin: 10px; } .news {background-color: #FFFFFF;border: 1px solid #B0B0B0;border-radius: 4px 4px 4px 4px;color: #3C3C3C;font-size: 13px;margin: 10px 0 30px;padding: 3px 10px 5px;} .news-title {border-bottom: 1px dotted #AAAAAA;color: #336699;font-size: 14px;font-weight: bold;} .news-date {background-color: #EAEAEA;border: 1px solid #B0B0B0;border-radius: 4px 4px 4px 4px;color: #3C3C3C;float: left;font-size: 12px;margin: 10px 0;padding: 3px 10px 5px;} .pages {background: none repeat scroll 0 0 #FBFBFB;border: 1px solid #DCDCDC;font: 12px arial;overflow: hidden;padding: 12px 8px 8px;} .pages a, .pages a:hover {font: 12px arial;cursor:pointer;} .prev {float: left;} .prev a, .prev a:hover {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;display: block;font-weight: bold;padding: 2px 7px;text-decoration: none;} .prev a:hover {background: none repeat scroll 0 0 #2D8599;color: #FFFFFF;} .prev span {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;color: #CCCCCC;font-weight: bold;padding: 2px 7px;} .next {float: right;} .next a, .next a:hover {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;display: block;font-weight: bold;padding: 2px 7px;text-decoration: none;} .next a:hover {background: none repeat scroll 0 0 #2D8599;color: #FFFFFF;} .next span {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;color: #CCCCCC;font-weight: bold;padding: 2px 7px;} .page-nums {margin: 0 44px;text-align: center;} .page-nums span {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;color: #CCCCCC;padding: 2px 7px;} .page-nums a, .page-nums a:hover {background: none repeat scroll 0 0 #F9F9F9;border: 1px solid #E6E6E6;padding: 2px 7px;} .page-nums a:hover {background: none repeat scroll 0 0 #2D8599;color: #FFFFFF;} table {width: 240px;border: 1px solid #CDCDCD;background-color: #EFEFEF;color: #909090;} input{border-width: 1px;border-style: solid;border-top-color: #CDCDCD;border-left-color: #CDCDCD;background-color: #FFFFFF;} h3{margin:0;} .info{vertical-align: top;color: #E28D8D;font-size: 14px;} .right{text-align: right;vertical-align: top;width:70px;} </style> <script type="text/javascript"> function confirm_delete(pos) { if(document.getElementById(pos).style.display == "none") { document.getElementById(pos).style.display = "inline"; document.getElementById(pos + "del").style.display = "none"; }else{ document.getElementById(pos).style.display = "none"; document.getElementById(pos + "del").style.display = "inline"; } } function post_message(pos) { document.getElementById(pos + "gif").style.display = "inline"; document.getElementById(pos + "but").style.display = "none"; document.getElementById(pos + "inp").style.display = "none"; } </script> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> </head> <body> <div class="news-date" style="float: none;"><center><a href="/guestbook/page-0.html"><img style="width: 85px;margin-top:15px;margin-left: -56px;" src="images/logo.png"></a> Добро пожаловать в гостевую книгу'.$auths_key.'</center><br></div> <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> '.$text.' </div> </div> </div> <div class="cleared"></div> </div> </div> </body> </html>'; return $t; } //блок из шаблона function news_block($title,$text,$data,$name,$id,$auth,$url) { if($auth == '1') { //user==&num_page //guestbook/user/'.$name.'/page-0/delete-'.$id.'.html $admin_key=' | <a id="'.$name.$id.'" href="#" onClick="confirm_delete(\''.$name.$id.'\')">Удалить</a><div id="'.$name.$id.'del" style="display:none;">(<a href="/guestbook'.$url.'/delete-'.$id.'.html">Да Удалить</a> / <a onClick="confirm_delete(\''.$name.$id.'\')" href="#">Отменить</a>)</div> | <a href="/guestbook'.$url.'/edit-'.$id.'.html">Редактировать</a>'; }else{ $admin_key=''; } $t='<div class="news"> <div class="news-title">'.$title.'</div> '.$text.'<br> <div class="news-date">'.$data.' | '.$name.' | <a href="/guestbook/user/'.$name.'/page-0.html">Все сообщения этого автора</a>'.$admin_key.'<br></div> <br> </div>'; return $t; } function block_commentaries($title,$text,$user_name,$email,$auth) { //Формируем блок для постинга if($auth == '1') { $block_comment=' <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> <iframe id="iframepost" name="iframepost" style="display:none"></iframe> <form target="iframepost" name="comments-form" id="comments-form" style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" action="/guestbook/new_post.php" method="post"> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input readonly style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" maxlength="20" value="'.$user_name.'" name="name" id="comments-form-name" > <label for="comments-form-name">Имя</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input readonly style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="2" size="22" value="'.$email.'" name="email" id="comments-form-email"> <label for="comments-form-email">E-Mail</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" maxlength="20" value="'.$title.'" name="title" id="comments-form-name" > <label for="comments-form-name">Заголовок (Обязательное поле)</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <textarea style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" tabindex="5" rows="8" cols="65" name="comment" id="comments-form-comment">'.$text.'</textarea> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input type="checkbox" tabindex="5" value="1" name="subscribe" id="comments-form-subscribe" class="checkbox"> <label for="comments-form-subscribe">Отметьте чекбокс в подтверждение что вы человек</label><br> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input type="hidden" value="true" id="attached_Image" name="attached_Image"> <input type="submit" value="Отправить" name="object_group"> </p> <p id="attached_Image_p" style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"></p> </form> <form style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" target="iframepost" action="/guestbook/upload.php" method="post" enctype=multipart/form-data> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> Прикрепить изображение<br> <input id="uploadinp" type=file name=userfile> <input id="uploadbut" type=submit value=Загрузить onClick="post_message(\'upload\')"> <img id="uploadgif" style="display:none;" src="images/progress.gif"> </p> </form> </div> </div> </div> <div class="cleared"></div> </div> </div>'; }else{ $block_comment=''; } return $block_comment; } if (isset($_GET['page'])) { $get_page = $_GET['page']; }else{ $get_page = 'default'; } switch($get_page) { case 'auths'://авторизация if($auth == '1') { header('Location: /guestbook/page-0.html'); exit; } $forma = '<center> <iframe id="iframepost" name="iframepost" style="display:none"></iframe> <form method="post" target="iframepost"> <table> <tbody> <tr> <td colspan="2"><center><img src="images/logo.png" style="margin-top:15px;"></center></td> </tr> <tr> <td class="right" rowspan="2"><img src="images/admin_login.png"></td> <td><h3>Авторизация</h3></td> </tr> <tr> <td class="info" id="info"> </td> </tr> <tr> <td class="right">Логин:</td> <td><input type="text" name="login_name" id="login_name"></td> </tr> <tr> <td class="right">Пароль:</td> <td><input type="password" name="login_password" id="login_password"></td> </tr> <tr> <td class="right"></td> <td><input type="submit" id="button" name="sub" value="Войти"><br><br></td> </tr> </tbody></table> <input type="hidden" value="true" id="auts" name="auts"> </form> </center>'; echo sample('Авторизация',$forma,$auth,''); break; case 'registr'://регистрация if($auth == '1') { header('Location: /guestbook/page-0.html'); exit; } switch($_GET['step']) { case '1': if(count($_POST)) { //проверка вводимого логина if(mb_strlen($_POST['login_name'], 'UTF-8') <= 20 & mb_strlen($_POST['login_name'], 'UTF-8') >=6) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['login_name'])) { echo "<script type='text/javascript'>alert('Ошибка логина: Допустимы только латинские буквы и цифры');</script>"; exit; }else{ $loginuser = $_POST['login_name']; $loginuser = strtolower($loginuser); $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд if( $link )//проверка удачного соединения с бд { mysql_query("SET NAMES utf8");// задаем кодировку всех данных if(!mysql_select_db ($name_bd)) { die (mysql_error()); } //Проверка на совпадения $res = mysql_query("SELECT name_user FROM user WHERE name_user = '$loginuser'"); if(!$res) { echo "<script type='text/javascript'>alert('Ошибка логина: Введенный вами логин занят другим пользователем, ввести другой');</script>"; error_bd($link); } if(mysql_num_rows($res) > 0) { echo "<script type='text/javascript'>alert('Ошибка логина: Введенный вами логин занят другим пользователем, ввести другой');</script>"; error_bd($link); } //if(count(mysql_num_rows($res))) //{ // echo "<script type='text/javascript'>alert('Ошибка логина: Введенный вами логин занят другим пользователем, ввести другой');</script>"; // exit; //} }else{ echo "<script type='text/javascript'>alert('Критическая ошибка: Невозможно соединиться с базой данных, попробуйте зайти позже');</script>"; exit; } } }else{ if(mb_strlen($_POST['name'], 'UTF-8') <= 5) { echo "<script type='text/javascript'>alert('Ошибка логина: Должно быть минимум 6 вводимых знаков');</script>"; exit; }else{ echo "<script type='text/javascript'>alert('Ошибка логина: Превышен лимит вводимых знаков 20');</script>"; exit; } //exit; } //проверка вводимого пароля if(mb_strlen($_POST['login_password'], 'UTF-8') <= 20 & mb_strlen($_POST['login_password'], 'UTF-8') >=6) { if (preg_match("/[^0-9a-zA-Z\-\_]/", $_POST['login_password'])) { echo "<script type='text/javascript'>alert('Ошибка пароля: Допустимы только латинские буквы и цифры');</script>"; exit; }else{ $passworduser = $_POST['login_password']; } }else{ if(mb_strlen($_POST['login_password'], 'UTF-8') <= 5) { echo "<script type='text/javascript'>alert('Ошибка пароля: Должно быть минимум 6 вводимых знаков');</script>"; exit; }else{ echo "<script type='text/javascript'>alert('Ошибка пароля: Превышен лимит вводимых знаков 20');</script>"; exit; } //exit; } //проверка введеной почты if(mb_strlen($_POST['email'], 'UTF-8') <= 35 & mb_strlen($_POST['email'], 'UTF-8') >=3) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['email'])) { echo "<script type='text/javascript'>alert('Ошибка почты: Адрес электронной почты не корректен');</script>"; exit; //exit; }else{ $email = $_POST['email']; } }else{ echo "<script type='text/javascript'>alert('Ошибка почты: Адрес электронной почты не корректен');</script>"; exit; } if( $link )//проверка удачного соединения с бд { $confirm = generate_code(15);//генерируем 15 значный бредокод $sql="INSERT INTO user (name_user,data_reg,status_activate,email,password,confirm) VALUES ('".$loginuser."','".strtotime("now")."',0,'".$email."','".$passworduser."','".$confirm."');"; if(!mysql_query($sql)) { die (mysql_error()); echo "<script type='text/javascript'>alert('Неизвестная ошибка, попробуйте позже.');</script>"; } } echo "<script type='text/javascript'>window.parent.location.href = '/guestbook/auths.html';</script>"; }else{ $forma = '<center> <iframe id="iframepost" name="iframepost" style="display:none"></iframe> <form action="/guestbook/reg_one.php" method="post" target="iframepost"> <table> <tbody> <tr> <td colspan="2"><center><img src="images/logo.png" style="margin-top:15px;"></center></td> </tr> <tr> <td class="right" rowspan="2"><img src="images/admin_login.png"></td> <td><h3>Регистрация</h3></td> </tr> <tr> <td class="info" id="info"> </td> </tr> <tr> <td class="right">Логин:</td> <td><input type="text" name="login_name" id="login_name"></td> </tr> <tr> <td class="right">Пароль:</td> <td><input type="password" name="login_password" id="login_password"></td> </tr> <tr> <tr> <td class="right">Email@:</td> <td><input type="text" name="email" id="email"></td> </tr> <tr> <td class="right"></td> <td><input type="submit" id="button" name="sub" value="Регистрация"><br><br></td> </tr> </tbody></table> </form> </center>'; echo sample('Регистрация',$forma,$auth,''); } break; case '2': echo $_GET['step']; break; } break; case 'install'://инсталляция if(isset($_GET['step'])) { $step=$_GET['step']; }else{ $step='default'; } switch($step) { case '1': //начинаем подключение к бд $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд $error='Ошибок не обнаружено, все данные верны.'; $i=0; if($link )//проверка удачного соединения с бд { mysql_query("SET NAMES utf8");// задаем кодировку всех данных if(!mysql_select_db ($name_bd)) { $error=" Невозможно выбрать указанную базу даных, возможно неверно указано имя базы данных.<br>"; $i++; } }else{ $error=" Невозможно установить соединение с базой данных,возможно вы не верно указали логин или пароль.<br>"; $i++; } $text='<center><h3>Продолжение работы с мастером установки</h3><br><strong>Ниже указаны проблемы возникшие при тестировании соединения с базой данных, если ошибок нет, вы можете смело переходить к шагу 3.</strong></center>'; if($i>0) { $next_step='<input type="submit" value="Вернуться на предыдущий шаг">'; $step_url='installation.html'; }else{ $next_step='<input type="submit" value="Перейти на следующий шаг">'; $step_url='installation/step-2.html'; } $block=' <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> <form name="comments-form" id="comments-form" style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" action="/guestbook/'.$step_url.'" method="get"> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <label>'.$error.'</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> '.$next_step.' </p> </form> <br> <br> </div> </div> </div> <div class="cleared"></div> </div> </div>'; echo sample('Установка гостевой книги - шаг 2',$text.$block,$auth,''); break; case '2': if(count($_POST)) { if($_POST['complete'] = 'complete') { $file = 'guestbook.php'; $array=file( $file ); $array[9]='$install_complete="1";'. "\n"; file_put_contents( $file, $array ); header('Location: /guestbook/auths/administrator.html'); exit; } } //начинаем подключение к бд $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд $error=''; $i=0; if( $link )//проверка удачного соединения с бд { mysql_query("SET NAMES utf8");// задаем кодировку всех данных if(!mysql_select_db ($name_bd)) { $error='Ошибка выбора базы данных, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } //проверка существования таблицы. $x=mysql_query('SELECT * FROM user LIMIT 1'); if($x) { $error='Таблица уже существует, для повторной установки необходимо очистите базу данных, если вы удачно прошли все 3 этапа но не нажали на кнопку сохранить изменения, сделайте это сейчас и доступ к этой странице будет заблокирован'; mysql_close($link);//закрываем соединение с бд }else{ $sql = "CREATE TABLE IF NOT EXISTS user ( id int NOT NULL AUTO_INCREMENT PRIMARY KEY, name_user VARCHAR(60) NOT NULL, data_reg int NOT NULL, status_activate int NOT NULL, email VARCHAR(60) NOT NULL, password VARCHAR(60) NOT NULL, confirm VARCHAR(60) NOT NULL)TYPE=MyISAM;"; if(!mysql_query($sql)) { $error='Ошибка создания таблицы базы данных, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } $sql = "CREATE TABLE IF NOT EXISTS post ( id int NOT NULL AUTO_INCREMENT PRIMARY KEY, id_user VARCHAR(60) NOT NULL, name_user VARCHAR(60) NOT NULL, pub_data int NOT NULL, list_modifiet int NOT NULL, title VARCHAR(60) NOT NULL, text TEXT)TYPE=MyISAM;"; if(!mysql_query($sql)) { $error='Ошибка создания таблицы базы данных, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } $sql = "CREATE TABLE IF NOT EXISTS images ( id int NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(60) NOT NULL, id_user int, text TEXT NOT NULL, type VARCHAR(60) NOT NULL)TYPE=MyISAM;"; if(!mysql_query($sql)) { $error='Ошибка создания таблицы базы данных, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } $sql="INSERT INTO user (id,name_user,data_reg,status_activate,email,password,confirm) VALUES (1,'admin','".strtotime("now")."',1,'trulander@mail.ru','password','".$confirm."');"; if(!mysql_query($sql)) { $error='Ошибка создания записи в таблице, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } $sql="INSERT INTO post (id,id_user,name_user,pub_data,list_modifiet,title,text) VALUES (1,'1','admin','".strtotime("now")."','".strtotime("now")."','Добро пожаловать в гостевую книгу','Добро пожаловать в гостевую книгу, если вы выдите это сообщение значит вы все сделали правильно. Для того чтобы удалить или отредактировать запись нажмине на ссылку (Редактировать запись) , или (Удалить запись)');"; if(!mysql_query($sql)) { $error='Ошибка создания записи в таблице, вернитесь на предыдущий шаг и проверьте валидность введеных данных'; $i++; } mysql_close($link);//закрываем соединение с бд } }else{ echo mysql_error(); } $text='<center><h3>Продолжение работы с мастером установки</h3><br><strong>Ниже указаны проблемы возникшие при записи данных, если ошибок нет, вы можете сохранить параметры и завершить установку.</strong></center>'; if($i>0) { $next_step='<input type="submit" value="Вернуться на предыдущий шаг">'; $step_url='installation/step-1.html'; $method='get'; }else{ $next_step='<input type="hidden" value="complete" id="complete" name="complete"><input type="submit" value="Сохранить и завершить установку">'; $step_url='installation/step-2.html'; $method='post'; } $block=' <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> <form name="comments-form" id="comments-form" style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" action="/guestbook/'.$step_url.'" method="'.$method.'"> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <label>'.$error.'</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> '.$next_step.' </p> </form> <br> <br> </div> </div> </div> <div class="cleared"></div> </div> </div>'; echo sample('Установка гостевой книги - шаг 3',$text.$block,$auth,''); break; default: if($auth == '1') { header('Location: /guestbook/page-0.html'); exit; } //проверяю может мы уже все установили. $perem = globals(); if($perem[4] == '1') { header('Location: /guestbook/page-0.html'); exit; } if(count($_POST)) { if(mb_strlen($_POST['namebd'], 'UTF-8') <= 50 & mb_strlen($_POST['namebd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['namebd'])) { echo "Вы ввели недопустимые символы в поле имени базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле имени базы данных"; exit; } if(mb_strlen($_POST['loginbd'], 'UTF-8') <= 50 & mb_strlen($_POST['loginbd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['loginbd'])) { echo "Вы ввели недопустимые символы в поле логина от базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле логина от базы данных"; exit; } if(mb_strlen($_POST['passwordbd'], 'UTF-8') <= 50 & mb_strlen($_POST['passwordbd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['passwordbd'])) { echo "Вы ввели недопустимые символы в поле пароля от базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле пароля от базы данных"; exit; } if (!preg_match("/[^0-9]/", $_POST['countpost']) & (mb_strlen($_POST['countpost'], 'UTF-8') <= 3)) { }else{ echo 'Вы ввели недопустимые символы в поле количества постов на странице, либо превысели допустимый лимит постов.'; exit; } $file = 'guestbook.php'; $array=file( $file ); $array[5]='$name_bd="'.$_POST["namebd"]."\";\n"; $array[6]='$login="'.$_POST["loginbd"]."\";\n"; $array[7]='$password="'.$_POST["passwordbd"]."\";\n"; $array[8]='$count_posts="'.$_POST["countpost"]."\";\n"; file_put_contents( $file, $array ); header('Location: /guestbook/installation/step-1.html'); exit; } $perem = globals(); $namebd=$perem[0]; $loginbd=$perem[1]; $passwordbd=$perem[2]; $countpost=$perem[3]; $text='<center><h3>Вас привтствует мастер установки</h3><br><strong>Для продолжения, заполните все поля *все поля являются обязательными.</strong></center>'; $block=' <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> <form name="comments-form" id="comments-form" style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" action="/guestbook/installation.html" method="post"> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="2" size="22" value="'.$namebd.'" name="namebd"> <label for="comments-form-email">Имя базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$loginbd.'" name="loginbd" > <label for="comments-form-name">Логин базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$passwordbd.'" name="passwordbd"> <label for="comments-form-name">Пароль базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$countpost.'" name="countpost"> <label for="comments-form-name">Количество отображаемых записей на странице</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input type="submit" value="Сохранить и перейти на следующий шаг" name="object_group"> </p> </form> <br> <br> </div> </div> </div> <div class="cleared"></div> </div> </div>'; echo sample('Установка гостевой книги.',$text.$block,$auth,''); } break; case 'admin'://админка if($auth != '1') { header('Location: /guestbook/page-0.html'); exit; } if($user_name != 'admin') { header('Location: /guestbook/page-0.html'); exit; } if(count($_POST)) { if(mb_strlen($_POST['namebd'], 'UTF-8') <= 50 & mb_strlen($_POST['namebd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['namebd'])) { echo "Вы ввели недопустимые символы в поле имени базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле имени базы данных"; exit; } if(mb_strlen($_POST['loginbd'], 'UTF-8') <= 50 & mb_strlen($_POST['loginbd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['loginbd'])) { echo "Вы ввели недопустимые символы в поле логина от базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле логина от базы данных"; exit; } if(mb_strlen($_POST['passwordbd'], 'UTF-8') <= 50 & mb_strlen($_POST['passwordbd'], 'UTF-8') >=2) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я@.\-\_]+$#u", $_POST['passwordbd'])) { echo "Вы ввели недопустимые символы в поле пароля от базы данных'"; exit; } }else{ echo "Вы впревысели допустимое количество знаков или, не ввели ничего в поле пароля от базы данных"; exit; } if (!preg_match("/[^0-9]/", $_POST['countpost']) & (mb_strlen($_POST['countpost'], 'UTF-8') <= 3)) { }else{ echo 'Вы ввели недопустимые символы в поле количества постов на странице, либо превысели допустимый лимит постов.'; exit; } $file = 'guestbook.php'; $array=file( $file ); $array[5]='$name_bd="'.$_POST["namebd"]."\";\n"; $array[6]='$login="'.$_POST["loginbd"]."\";\n"; $array[7]='$password="'.$_POST["passwordbd"]."\";\n"; $array[8]='$count_posts="'.$_POST["countpost"]."\";\n"; file_put_contents( $file, $array ); header('Location: /guestbook/administration.html'); exit; } $perem = globals(); $namebd=$perem[0]; $loginbd=$perem[1]; $passwordbd=$perem[2]; $countpost=$perem[3]; $text='<center><h3>Настройки гостевой книги</h3><br><strong>редактируйте только те поля которые хотите изменить.</strong></center>'; $block=' <div class="art-post"> <div class="art-post-tl"></div><div class="art-post-tr"></div><div class="art-post-bl"></div><div class="art-post-br"></div><div class="art-post-tc"></div><div class="art-post-bc"></div><div class="art-post-cl"></div><div class="art-post-cr"></div><div class="art-post-cc"></div> <div class="art-post-body"> <div class="art-post-inner"> <div class="art-postcontent"> <div class="art-article"> <form name="comments-form" id="comments-form" style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;" action="/guestbook/administration.html" method="post"> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="2" size="22" value="'.$namebd.'" name="namebd"> <label for="comments-form-email">Имя базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$loginbd.'" name="loginbd" > <label for="comments-form-name">Логин базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$passwordbd.'" name="passwordbd"> <label for="comments-form-name">Пароль базы данных</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input style="background-color: #FFFFFF;border: 1px solid #CCCCCC;color: #444444;margin: 0;padding: 0 !important;" type="text" tabindex="1" size="22" value="'.$countpost.'" name="countpost"> <label for="comments-form-name">Количество отображаемых записей на странице</label> </p> <p style="font: 1em Verdana,Arial,Sans-Serif;margin-bottom: 8px;margin-left: 20px !important;margin-top: 10px;overflow: hidden;padding: 0;"> <input type="submit" value="Применить" name="object_group"> </p> </form> </div> </div> </div> <div class="cleared"></div> </div> </div>'; echo sample('Админ панель: Настройки',$text.$block,$auth,$user_name); break; case 'add_post'://добавить запись if($auth != '1') { header('Location: /guestbook/page-0.html'); exit; } if($_GET['upload'] == '1') { $blacklist = array(".php", ".phtml", ".php3", ".php4"); foreach ($blacklist as $item) { if(preg_match("/$item$/i", $_FILES['userfile']['name'])) { echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image_p').innerHTML = 'Неверные данные, загрузке подлежать только файлы изображений png и jpeg.';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadgif').style.display = 'none';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadbut').style.display = 'inline';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadinp').style.display = 'inline';</script>"; exit; } $imageinfo = getimagesize($_FILES['userfile']['tmp_name']); if($imageinfo['mime'] != 'image/png' && $imageinfo['mime'] != 'image/jpeg') { echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image_p').innerHTML = 'Неверные данные, загрузке подлежать только файлы изображений png и jpeg.';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadgif').style.display = 'none';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadbut').style.display = 'inline';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadinp').style.display = 'inline';</script>"; exit; } if($_FILES["userfile"]["size"] > 1024*3*1024) { echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image_p').innerHTML = 'Загружаемый файл слишклм велик, он превышает 3 мегабайта.';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadgif').style.display = 'none';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadbut').style.display = 'inline';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadinp').style.display = 'inline';</script>"; exit; } } $new_filename = generate_code(5).$_FILES['userfile']['name']; $sql="INSERT INTO images (name,id_user,text,type) VALUES ('".$new_filename."','".$user_id."','".base64_encode(file_get_contents($_FILES['userfile']["tmp_name"]))."','".$imageinfo['mime']."');"; if(!mysql_query($sql)) { echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image_p').innerHTML = 'Ошибка БД';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadgif').style.display = 'none';</script>"; exit; } echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image').value = '".$new_filename."';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('attached_Image_p').innerHTML = 'Прикрепленное изображение: ".$_FILES['userfile']['name']."';</script>"; echo "<script type='text/javascript'>window.parent.document.getElementById('uploadgif').style.display = 'none';</script>"; }else if($_GET['upload'] == '0') { if(isset($_POST['subscribe'])) { if ((mb_strlen($_POST['title'], 'UTF-8') <= 50) & (mb_strlen($_POST['title'], 'UTF-8') >= 5)) { if ((mb_strlen($_POST['comment'], 'UTF-8') <= 2000) & (mb_strlen($_POST['comment'], 'UTF-8') >= 5)) { if ((mb_strlen($_POST['attached_Image'], 'UTF-8') <= 50) & (mb_strlen($_POST['attached_Image'], 'UTF-8') >= 8)) { $images = '<br><img src="images_upload/'.$_POST['attached_Image'].'">'; }else{ $images=''; } $sql="INSERT INTO post (id_user,name_user,pub_data,list_modifiet,title,text) VALUES ('".$user_id."','".$user_name."','".strtotime("now")."','".strtotime("now")."','".mysql_real_escape_string($_POST['title'])."','".mysql_real_escape_string($_POST['comment'].$images)."');"; if(!mysql_query($sql)) { echo "<script type='text/javascript'>alert('Ошибка БД, попробуйте позже.')</script>"; } echo "<script type='text/javascript'>window.parent.location.href = '/guestbook/page-0.html';</script>"; }else{ echo "<script type='text/javascript'>alert('Текст должен содержать от 5 до 2000символов.')</script>"; } }else{ echo "<script type='text/javascript'>alert('Текст заголовка должен содержать от 5 до 50символов.')</script>"; } }else{ echo "<script type='text/javascript'>alert('Вы не отметили чекбокс, подтвердите что вы человек, а не бот.')</script>"; } } break; case 'edit_post'://редактировать запись if($auth != '1') { header('Location: /guestbook/page-0.html'); exit; } //проверка входящих данных if (!preg_match("/[^0-9]/", $_GET['id_post']) & (mb_strlen($_GET['id_post'], 'UTF-8') <= 4))//искуственное ограничение в количестве записей { }else{ mysql_close($link); echo'Неизвестная ошибка'; exit; } if(!count($_POST)) { //mysql_query("SET NAMES utf8");// задаем кодировку всех данных $result = mysql_query("SELECT * FROM post WHERE id = ".$_GET['id_post']." LIMIT 1"); if(!$result) { echo'Ошибка: Такой страницы не существует.'; error_bd($link); } if(mysql_num_rows($result) < 1) { echo'Ошибка: Такой страницы не существует.'; error_bd($link); } $row = mysql_fetch_row($result); if(($row['1'] == $user_id) || ($user_name == 'admin')){ $key='1'; }else{ $key='0'; } if($key == '1') { //выводим контент в шаблоне echo sample('Редактирование записи',block_commentaries($row['5'],$row['6'],$user_name,$email,$auth,$user_name).'<script type="text/javascript">window.parent.document.getElementById("comments-form").action = "/guestbook/edit_post/'.$_GET['id_post'].'.php";</script>',$auth,''); }else{ //ошибка доступа } }else{ if(isset($_POST['subscribe'])) { if ((mb_strlen($_POST['title'], 'UTF-8') <= 50) & (mb_strlen($_POST['title'], 'UTF-8') >= 5)) { if ((mb_strlen($_POST['comment'], 'UTF-8') <= 2000) & (mb_strlen($_POST['comment'], 'UTF-8') >= 5)) { $_POST['comment'] = stripslashes($_POST['comment']); if ((mb_strlen($_POST['attached_Image'], 'UTF-8') <= 50) & (mb_strlen($_POST['attached_Image'], 'UTF-8') >= 8)) { $images = '<br><img src="images_upload/'.$_POST['attached_Image'].'">'; }else{ $images=''; } $result = mysql_query("UPDATE post SET id_user = '".$user_id."',name_user = '".$user_name."',list_modifiet = '".strtotime("now")."',title = '".mysql_real_escape_string($_POST['title'])."',text = '".mysql_real_escape_string($_POST['comment'].$images)."' WHERE id ='".$_GET['id_post']."';"); if(!$result) { echo "<script type='text/javascript'>alert('Ошибка при выполнении операции.');</script>";; error_bd($link); } echo "<script type='text/javascript'>window.parent.location.href = '/guestbook/page-0.html';</script>"; }else{ echo "<script type='text/javascript'>alert('Текст должен содержать от 5 до 2000символов.')</script>"; } }else{ echo "<script type='text/javascript'>alert('Текст заголовка должен содержать от 5 до 50символов.')</script>"; } }else{ echo "<script type='text/javascript'>alert('Вы не отметили чекбокс, подтвердите что вы человек, а не бот.')</script>"; } } exit; //формируем урл для возврата if($_GET['user'] != '') { $ul='/user/'.$_GET['user'].'/page-'.$_GET['num_page'].'.html'; }else{ $ul='/page-'.$_GET['num_page'].'.html'; } header('Location: /guestbook'.$ul); break; case 'delete_post'://удалить запись if($auth != '1') { header('Location: /guestbook/page-0.html'); exit; } //проверка входящих данных if (!preg_match("/[^0-9]/", $_GET['id_post']) & (mb_strlen($_GET['id_post'], 'UTF-8') <= 4))//искуственное ограничение в количестве записей { }else{ mysql_close($link); echo'Неизвестная ошибка'; exit; } //проверяю на права к редактированию записи $result = mysql_query("SELECT * FROM post WHERE id = '".$_GET['id_post']."' LIMIT 1"); if(!$result) { error_bd($link); } $row = mysql_fetch_row($result); if(($row['1'] == $user_id) || ($user_name == 'admin')){ $key='1'; }else{ $key='0'; } if($key == '1') { $sql="DELETE FROM post WHERE id = ".$_GET['id_post']." LIMIT 1"; if(!mysql_query($sql)) { die (mysql_error()); } }else{ //ошибка доступа } //формируем урл для возврата if (isset($_GET['user'])) { $ul='/user/'.$_GET['user'].'/page-'.$_GET['num_page'].'.html'; }else{ $ul='/page-'.$_GET['num_page'].'.html'; } header('Location: /guestbook'.$ul); break; case 'image'://блок со стационарными картинками switch($_GET['image']) { case 'post_s.png': Header("Content-type: image/png"); echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACGklEQVRYR+2YPUvDUBSG+6UuXUQUN0HsouDgICriUuyX+U/9DV36Azp2dpVOpTg0pTVNb5M2hQoVMhQCGQqF1vvK7YfaNIncFocbONNNTp7z3nND3hMIiGuzCgRpel7xN9LpdBpqNBqn3W77WtPUBA2JUyR0Xb2VZTmWy+X2KF2IFesOqqrqQadD4qY5SFuWJY3HY2kymXAJ5EJO0/x4MgwtUSo9H1OiMAN0htM0+bDX01Oj0YgLyLqCANnv91Ll8ssJJYo4wmH7ul31kadCbkrjXWiVbDYbdYRTFOXMNM2MWzLe65Y1lOr1+hUF22HbigO2uNCU2H/eL3bLh7YhpBmnJDgMgMOBWFy04dPb3MZlYJx4J7AgFt2q29T6DzCc0vn1X8B2WZ8JsLVtsrSVQjFPB0oo5vezIhQTivlVwO/9oseEYn4V8Hu/6DGuinU6za0bkVkBa7ey3W4+2Lbt6W/AryJu/hIWjv3z//4fUxT5fDg0tw4GZ6aq9RsnsECxWIwaRivJUw0vuQxDTxYKhSNH+wY/V6lUYoPBe9pLQh730PlIplqtXjKo1b6SLsIBh2u11wtUwXugMisE3tW2LQnvWAGFGcZ3J878ElxwJJ/P77dab3e6TlKcxk/zMRYhJE2Icr+0fVAKTe88WFmGY3YdD206MBYAFIzuSrVmJhOLX8oxODyIingH8s6gvA/wGD0eQKCaTcRKoE8oZIuMLx1J9wAAAABJRU5ErkJggg=='); break; case 'post_h.png': Header("Content-type: image/png"); echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAADIAAAAmCAYAAACGeMg8AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAeElEQVRYR+2ZwQ3AIAwDjSqV5Zi/D4aJGhbor4JYh+Q/JvGBiMQ67wRabqm+5nyGgxQRw0EYOa2KVISK/AQXWovWorW+L24yQkbICBmp9byHWlALakEtqLXlVwb8gl/wC37B7x78OowUloc1duom0p1GHKQrjZTXCzdATj8BVGrbAAAAAElFTkSuQmCC'); break; case 'post_v.png': Header("Content-type: image/png"); echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAACYAAAAyCAYAAAAweqkjAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAhElEQVRYR+3SMQqAMBAF0RUhXs7zW+Qwi2tlijRThcAI6T4kPCfi/47enzszl5zv7nrKVafVOYd3hQ+b/RXFaKuKKUYF6N7GFKMCdG9jilEBurcxxagA3duYYlSA7m1MMSpA9zamGBWgextTjArQvY0pRgXo3sYUowJ0b2OKUQG636axFw/STj+hvo9CAAAAAElFTkSuQmCC'); break; case 'post_c.png': Header("Content-type: image/png"); echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAjUlEQVRoQ+3YwQ2AMAwEwRRI/+VYiAb4nE6BaB48bcm38QZYM3Od8KwThnhmMMjXSCKCSMmSjpaj5Wi9v4HYETtiR+zIv75TWIu1WIu1WGvL7yX6pV/6pV/6pd/EhO6RJL1GLSKNVJOeiCTpNWoRaaSa9EQkSa9Ri0gj1aQnIkl6jVpEGqkmPRFJ0mvU3hw8+WpwlKMzAAAAAElFTkSuQmCC'); break; case 'logo.png': Header("Content-type: image/png"); echo base64_decode('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'); break; case 'admin_login.png': Header("Content-type: image/png"); echo base64_decode('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'); break; case 'favicon.ico': Header("Content-type: image/x-icon"); echo base64_decode('AAABAAEAEBAAAAAAAABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAQAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOv+6GYNVJEMBJEMBJEMBJEMCScNnbz/IAAAC7uLewraywraza2dgAAAAAAADbz/JJEMBJEMBJEMBJEMBJEMBJEMBJEMBJEMDn3/e7uLewraywraza2dgAAAAAAACGYNVJEMBJEMBtQM3z7/v///96UNFJEMBJEMCqj+K7uLewraywraza2dgAAAAAAAAAAAAAAAAAAADOv+6qj+Kqj+JJEMBJEMBJEMC2n+a7uLewraywraza2dgAAAAAAAAAAACqj+JJEMBJEMBJEMBJEMBJEMBJEMCGYNUAAAC7uLewraywraza2dgAAAAAAADOv+5JEMBJEMBJEMBhMMiqj+Kqj+Lbz/IAAAAAAAC7uLewraywraza2dgAAAAAAACqj+JJEMBJEMCGYNX////Ov+5JEMBJEMBJEMAAAAC7uLewraywraza2dgAAAAAAADn3/dJEMBJEMBJEMBJEMBJEMBJEMBJEMCegN0AAAC7uLewraywraza2dgAAAAAAAAAAADOv+6GYNVJEMBJEMBJEMBJEMCqj+IAAAAAAAC7uLewraywraza2dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7uLewraywraza2dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7uLewraywraza2dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7uLewraywraza2dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//8Ks//8AAMAhAACAAQAAgAEAAPABAADAIQAAgGEAAIAhAACAIQAAwGEAAP/hAAD/4QAA/+EAAP//AAD//wAA'); break; case 'progress.gif': Header("Content-type: image/gif"); echo base64_decode('R0lGODlhGQAZAOZAANDQ0Pj4+NPT097e3vz8/Pf39/b29vPz8+Li4vT09N/f39fX1+jo6K6urvDw8ODg4Pv7+/n5+erq6q+vr/X19bCwsLe3t7Ozs+Pj48fHx9nZ2fHx8ba2tvr6+srKytXV1eTk5MLCwrKyssnJybGxsbq6urS0tMbGxsDAwLu7u729vcjIyLm5ubW1tdvb28PDw83Nzby8vN3d3dzc3Li4uMXFxb6+vv39/dHR0f7+/unp6a2treHh4dLS0tTU1P///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgBAACwAAAAAGQAZAAAH9IA/goOEASs7FiCEi4yFKDuQJA+NlIOHkJAmlYsBAYINmJg/BDoKDASMNzwCAjw3HKE7Ezk8AD0APDmLOjg+Pjg6PKCYJwY9vj49noQDx8kDPzwsDRceAQXOycuDvL7AjbS2uLqEqgI+rpSkAzrkjAbbmz8FBoPr7fKCqj6tNzkI4nLl6/ZLwgFk2vI189XjwUFkygb2KvgvoLtK5vqNYqAAXz5BBQo0CrmJlKmL+lZpZBTulkBCBL8xCpAtIjNnPaCt43HghzGI8X7EbFerx7EELcctMofuxk+GPEbpYIeqUYAIIGtG/Uio5VGui0g9wJBgUyAAIfkEBQoAQAAsCQAAAA4ACQAAB1SAPz8RDgeCh4g/Gxo+Hwg3iYIQCz0+Pjg6PwEeOzQgPxQ4lj49AwEvO6kiCB2UlpgjqbIWPw6UAjw3DbKpDZIFAYIcvDsVkT88u7Inxz8KwyQeAYEAIfkEBQoAQAAsEAACAAkADwAAB1WAP4KDhAQ6CgwEgzk8AD0APDmCBj0+lj0BggWVl5k/jI6QkoKGAzqjhJoGqQYoOyIAN4IBKju2Ez6CI7a8F4ITvLyCFsE7FYI8wLwZP4YwHA0XHgGBACH5BAUKAEAALBAACgAJAA0AAAdOgD+CNzw+Ajw3gj86OD4+OBKKAz2OPQ+KjI6QioQCh4mKPwUFihQhOy0gigUpO64VPIIZrrQcgg20rg2CFrk7FYI8E7kZijwlDRceAYKBACH5BAUKAEAALAkAEAAOAAkAAAdKgD+Cg4IEOgoMOYSEOTwAPQA8ios/AT0+mD0BPxQhOyYzPwaXmQEFKTupFS6Nj5E5J6myFz+GAzoEPw2yspQ/Frw7Fb48E7wZvoEAIfkEBQoAQAAsAgARAA4ACAAAB02APwYoOyIANz+Jij8BKjuPEz6LiiOPlhc/BDoDPAc/E5aWOTwAPT0+CRahOxUGpz4+PTw8oJYZBa+xPD88JQ0XHgGjpacJk4qaDxjGgQAh+QQFCgBAACwAAAoACQAOAAAHT4A/FCE7LSA/iAUxO4wVPIg1jJIciA2SjA2IFpc7FYg8E5cZiD88JQ0XGQ6kiDc8AgI8N6Q6OD4+ODqkAz23PQO0tri6ra8+sqw/ARHJzYEAIfkEBQoAQAAsAAAEAAoADQAAB1OAP4I3Mik7Jhgdgj8gFjuPJAiLNo+VFosNlY8NixyaOxWLPBOaGT8EOgMCLA0XHgE5CAA9ADw5iwc+uj49Abi7vL6CsbO1t4sEDAo6x4vOBQWLgQA7'); break; //кейс загрузки изображений из бд case 'image_upload': if((mb_strlen($_GET['image_upload'], 'UTF-8') <= 50 & mb_strlen($_GET['image_upload'], 'UTF-8') >=8)) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я.\-\_]+$#u", $_GET['image_upload'])) { exit; }else{ $image_upload = $_GET['image_upload']; //начинаем подключение к бд $connect_bd=globals(); $name_bd=$connect_bd[0]; $login=$connect_bd[1]; $password=$connect_bd[2]; $GLOBALS["link"] = $link = mysql_connect("localhost", $login, $password);//открываем соединение с бд if( $link )//проверка удачного соединения с бд { mysql_query("SET NAMES utf8");// задаем кодировку всех данных if(!mysql_select_db ($name_bd)) { die (mysql_error()); } $result = mysql_query("SELECT * FROM images WHERE name = '".$image_upload."'"); if(!$result) { error_bd($link); } $row = mysql_fetch_row($result); Header("Content-type: ".$row['4']); echo base64_decode($row['3']); } } }else{ exit; } break; } break; default: if($auth != '1')//принудитльное соединение к бд в случае неудачной авторизации, для подгрузки постов { connect_bd(); } if( $link )//проверка удачного соединения с бд { //пагинация страниц if(isset($_GET['user'])) { if(mb_strlen($_GET['user'], 'UTF-8') <= 20 & mb_strlen($_GET['user'], 'UTF-8') >=1) { if (!preg_match("#^[0-9a-zA-Zа-яА-Я.\-\_]+$#u", $_GET['user'])) { mysql_close($link); echo'Неизвестная ошибка'; exit; }else{ $name_user = $_GET['user']; $name_user = strtolower($name_user ); $where_id = 'WHERE name_user = "'.$name_user .'"'; $navi_x = '/user/'.$name_user.'/'; } }else{ $where_id=''; $navi_x = '/'; } }else{ $where_id=''; $navi_x = '/'; } $result = mysql_query("SELECT COUNT(*) FROM post ".$where_id." ORDER BY id DESC"); if(!$result) { //echo mysql_error(); mysql_close($link); //echo$raz; //echo"SELECT COUNT(*) FROM page WHERE razdel=blog ORDER BY id DESC"; echo'Данный раздел пока не содержит ни одной страницы1'; exit; } $row = mysql_fetch_row($result); //print_r($row); $allpage = $row[0]; if($allpage < 1) { echo'Данный раздел пока не содержит ни одной страницы.0'; error_bd($link); } //считываем настройки количества отображаемых сообщений $connect_bd=globals(); $count_posts=$connect_bd[3]; $limit = $count_posts; if (isset($_GET['num_page'])) { if (!preg_match("/[^0-9]/", $_GET['num_page']) & (mb_strlen($_GET['num_page'], 'UTF-8') <= 3)) { $start_list=$_GET['num_page'] * $limit; }else{ mysql_close($link); echo'Неизвестная ошибка'; exit; } }else{ $start_list = 0; } $pageCount = ceil( $allpage / $limit); $sss = ''; for( $i = 0; $i < $pageCount; $i++ ) { if(($start_list / $limit) == $i) { $sss = $sss.'<span>'.$i.'</span>'; if($i+1 != $pageCount) { $nav_next = '<a href="/guestbook'.$navi_x.'page-'.($i+1).'.html">Дальше >></a>'; }else{ $nav_next = '<span>Дальше >></span>'; } if($i-1 >= 0) { $nav_prev = '<a href="/guestbook'.$navi_x.'page-'.($i-1).'.html"><< Назад</a>'; }else{ $nav_prev = '<span><< Назад</span>'; } }else{ $sss =$sss.'<a href="/guestbook'.$navi_x.'page-'.$i.'.html">'.$i.'</a>'; } } $result = mysql_query("SELECT * FROM post ".$where_id." ORDER BY id DESC LIMIT ".$start_list.",".$limit.""); if(!$result) { mysql_close($link); echo$text_error; exit; } $block = ''; while($row = mysql_fetch_row($result)) { if (isset($user_id)) { //проверяю на права к редактированию записи if(($row['1'] == $user_id) || ($user_name == 'admin')){ $key='1'; }else{ $key='0'; } }else{ $key='0'; } $block = $block.news_block($row['5'],$row['6'],$row['3'],$row['2'],$row['0'],$key,$navi_x.'page-'.$start_list / $limit); } mysql_close($link);//закрываем соединение с бд }else{echo$text_error;exit;} //формируем блок навигации $navigation=' <div class="pages"> <div class="prev">'.$nav_prev.'</div> <div class="next">'.$nav_next.'</div> <div class="page-nums">'.$sss.'</div> </div>'; //выводим контент в шаблоне if(!isset($user_name)) { $user_name=''; } if(!isset($email)) { $email=''; } echo sample('Гостевая книга',$block.block_commentaries('','',$user_name,$email,$auth).$navigation,$auth,$user_name); } ?>
Ссылку на оригинал гостевой книги я прикреплю в конце поста, в файле guestbook.php подробнейшие комментарии по работе скрипта и описание функций выполненных в задании.
Вообщем на следующий день позвонили и пригласили на собеседование.
На собеседовании ни слова небыло об моем образовании, и о том какие я курсы заканчивал и не имею ли я какие либо корочки подтверждающие мои знания, все вопросы были направлены на то, чтобы выявить что я знаю, а что нет или не очень.
Как выяснилось у меня огромный пробел в знаниях которые им были необходимы, хотя я не вижу здесь никаких проблем, ведь я знаю только то что мне было необходимо при написании той или иной программы я всегда обходился помощью интернета в поисках новых знаний, или более рациональных решений тех или иных задач. Всегда все давалось легко, но им требовались видишь ли действующие программисты, а мне нужен был слишком большой входной порог знаний, поэтому сне сказали что, пока я не подтяну свои знания в тех областях какие они спрашивали, они не будут меня брать к себе, но предупредили что у них периодически открываются новые вакансии на разработчиков, так как они постоянно расширяют свои ряды.
На самом деле то чем они занимаются, несколько различается от того чем я занимался. Они поддерживают и дорабатывают уже существующих софт и сервисы, поэтому им требуются программисты с более обширными знаниями чем у меня. Но меня досих пор бесит то, что все эти требования они не указали когда звали программистов на работу.
Как и обещал прикрепляю файл: Гостевая книга на php 2025
Оставьте комментарий!