Php урок 5. Загрузка файла и отправка email

Автор: | 25.08.2015

Создаем форму для загрузки изображения

Добавляем форму загрузки файла, в которой пользователь сможет выбрать файл изображения который ему необходимо загрузить на сервер:

 

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

Правила, которые следует соблюдать при создании формы для загрузки файлов:

Используйте метод пост для формы — method=»post»
У формы обязательно должен быть задан атрибут : enctype=»multipart/form-data». Этот атрибут используется при загрузке фалов.
Без указания данного атрибута загрузка не будет работать.

Замечание:

В форме необходимо указать атрибут type=»file» для тега <input>. В этом случае в форме отобразится поле загрузки файла, с кнопкой нажав которую вы сможете выбрать загружаемый файл. Необходимо задать имя тега input для последующего получения данных о файле. В нашем примере имя тега будет fileToUpload.
После загрузки файла вся информация о нем будет передаваться не как обычно через $_POST, а в суперглобальном массиве $_FILE.

Pathinfo

(PHP 4 >= 4.0.3, PHP 5, PHP 7)

pathinfo — Возвращает информацию о пути к файлу

Описание

mixed pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )

pathinfo() возвращает информацию о path в виде ассоциативного массива или строки в зависимости от options.

Список параметров

Path — aнализируемый путь.

Options — eсли указан, то задает для возврата отдельный элемент: один из следующих PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION и PATHINFO_FILENAME.

Если options не указан, то возвращаются все доступные элементы.

Возвращаемые значения

Если параметр options не передан, то возвращаемый ассоциативный массив (array) будет содержать следующие элементы: dirname, basename, extension (если есть) и filename.

Замечание:
Если path содержит больше одного расширения, то PATHINFO_EXTENSION возвращает только последнее и PATHINFO_FILENAME отрезает только последнее расширение. (смотрите пример ниже).
Замечание:
Если path не содержит расширения, то не будет возвращен элемент extension (см. ниже второй пример).
Если указан параметр options, будет возвращена строка (string), содержащая указанный элемент.

Пример Пример использования функции pathinfo()

 

<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');

echo “$path_parts['dirname']<br />”;
echo $path_parts['basename'] <br />”;
echo $path_parts['extension'] <br />”;
echo $path_parts['filename'] <br />”; // начиная с PHP 5.2.0
?>

Результат выполнения данного примера:

/www/htdocs/inc
lib.inc.php
php
lib.inc

File_exists

(PHP 4, PHP 5, PHP 7)
file_exists — Проверяет наличие указанного файла или каталога

Описание

bool file_exists ( string $filename )
Проверяет наличие указанного файла или каталога.

Список параметров

filename
Путь к файлу или каталогу.

На платформах Windows, для проверки наличия файлов на сетевых ресурсах, используйте имена, подобные //computername/share/filename или \\computername\share\filename.

Возвращаемые значения

Возвращает TRUE, если файл или каталог, указанный параметром filename, существует, иначе возвращает FALSE.

Замечание:
Данная функция возвращает FALSE для символических ссылок, указывающих на несуществующие файлы.

Внимание
Если файлы недоступны из-за ограничений, налагаемых безопасным режимом, то данная функция вернет FALSE. Однако, эти файлы все еще могут быть подключены, если они располагаются в каталоге safe_mode_include_dir.

Замечание:
Проверка происходит с помощью реальных UID/GID, а не эффективных идентификаторов.
Замечание: Так как тип integer в PHP является целым числом со знаком и многие платформы используют 32-х битные целые числа, то некоторые функции файловых систем могут возвращать неожиданные результаты для файлов размером больше 2ГБ.

Пример Проверка существования файла

 

<?php
$filename = '/path/to/foo.txt';

if (file_exists($filename)) {
echo "Файл $filename существует";
} else {
echo "Файл $filename не существует";
}
?>

Ошибки

В случае неудачного завершения работы генерируется ошибка уровня E_WARNING.

Рассмотрим более детально суперглобальный массив $_FILES

Для каждого загруженного файла массив $_FILES содержит массив, со следующими данными:
$_FILES[‘fileToUpload’][‘name’] — исходное имя файла, такое, каким его видел пользователь, выбирая файл;
$_FILES[‘fileToUpload ‘][‘type’] — mime/type файла, к примеру, может быть image/gif; это поле полезно сохранить, если Вы хотите предоставлять интерфейс для скачивания загруженных файлов;
$_FILES[‘fileToUpload’][‘size’] — размер загруженного файла в байтах;
$_FILES[‘fileToUpload’][‘tmp_name’] — полный путь к временному файлу на диске;
$_FILES[‘fileToUpload’][‘error’] — Начиная с версии 4.2.0, содержит код ошибки, который равен 0, если операция прошла успешно
.
Где [‘fileToUpload’] имя тега <input> через который загружается файл.

php коды ошибок передаваемые через $_FILES[‘fileToUpload’][‘error’]

UPLOAD_ERR_OK
Значение: 0; Ошибок не возникало, файл был успешно загружен на сервер.

UPLOAD_ERR_INI_SIZE
Значение: 1; Размер принятого файла превысил максимально допустимый размер, который задан директивой upload_max_filesize конфигурационного файла php.ini.

UPLOAD_ERR_FORM_SIZE
Значение: 2; Размер загружаемого файла превысил значение MAX_FILE_SIZE, указанное в HTML-форме.

UPLOAD_ERR_PARTIAL
Значение: 3; Загружаемый файл был получен только частично.

UPLOAD_ERR_NO_FILE
Значение: 4; Файл не был загружен.

UPLOAD_ERR_NO_TMP_DIR
Значение: 6; отсутствует временная папка.

UPLOAD_ERR_CANT_WRITE
Value: 7;ошибка записи на диск. С версии PHP 5.1.0.

UPLOAD_ERR_EXTENSION
Value: 8; Загрузка остановлена. Модуль PHP не имеет возможности загрузить файл; проверьте список загруженных модулей через phpinfo(). С версии PHP 5.2.0.

Создайте файл «upload.php», И добавьте в него скрипт приведенный ниже.
Необходимо создать папку uploads, в которую будет копироваться загружаемый файл.

Первая часть скрипта. Первоначальная проверка файла. В этом скрипте мы проверим, что файл является картинкой.

<?php
$target_dir = "uploads/"; //Задаем папку в которую загружается файл.
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Проверяем, что файл является картинкой.
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "Файл является картинкой - " . $check["mime"] . "";
$uploadOk = 1;
} else {
echo "Файл не является картинкой допустимого формата.";
$uploadOk = 0;
}
}
?>

Описание PHP скрипта проверки типа файла:

$target_dir = «uploads/» – задаем папку, в которую будем сохранять загружаемый файл
$target_file в этой переменной хранится полный путь файла.
$uploadOk=1 переменная в которой будет храниться статус ошибки. 1- ошибок нет.
$imageFileType в этой переменной мы храним расширение файла
Теперь проверим файл на соответствие заявленному расширению. Проверим соответствует ли расширение содержимому файла.
Замечание: Вам необходимо создать каталог «uploads» в том каталоге в котором создан файл «upload.php». Все загружаемые файл будут храниться там.

Проверим, существует ли такой файл.
Для начала проверим существует ли файл и если он существует обнулим переменную $uploadOk:

// Проверка существует ли файл.
if (file_exists($target_file)) {
echo "Файл уже существует.";
$uploadOk = 0;
}

Ограничим размер файла.
Не очень хорошо загружать фалы большого размера и отображать их на страницах сайта. В этом случае страница будет загружаться очень долго.
Проверим если размер картинки больше 500kb, в случае если фал большой, то мы обнулим $uploadOk и выведем сообщение файл слишком большой:

// Проверим размер файла
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Извините, ваш файл слишком большой.";
$uploadOk = 0;
}

Разберем следующую часть скрипта которая проверяет расширение файла.
Код приведенный ниже позволяет загружать только JPG, JPEG, PNG и GIF файлы. Все остальные не будут загружаться и выдадут сообщение об ошибке и обнулят $uploadOk :

// Разрешаем только определенные форматы фалов. Проверяем значение переменной $imageFileType в которой хранится расширение файлов.
if($imageFileType != "jpg" and $imageFileType != "png" and $imageFileType != "jpeg" and $imageFileType != "gif" ) {
echo "Загрузка разрешена только JPG, JPEG, PNG & GIF файлов. Неверный формат файла";
$uploadOk = 0;
}

Полный скрипт загрузки файла изображения.
Полный скрипт «upload.php» теперь выглядит следующим образом:

 

move_uploaded_file — Перемещает загруженный файл в новое место

Описание

bool move_uploaded_file ( string $filename , string $destination )

Эта функция проверяет, является ли файл filename загруженным на сервер (переданным по протоколу HTTP POST). Если файл действительно загружен на сервер, он будет перемещён в место, указанное в аргументе destination.

Такая проверка особенно важна в том случае, если существует шанс того, что какие-либо действия, производимые над загруженным файлом, могут открыть его содержимое пользователю или даже другим пользователям системы.

<meta charset="utf-8">
<?
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
if(isset($_POST["submit"])) {
 $uploadOk = 1;
 echo '<pre>';
 print_r ($_FILES);
 echo '</pre>';
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "Файл является изображением - " . $check["mime"] . "";
$uploadOk = 1;
} else {
echo "Файл не является изображением или поврежден.";
$uploadOk = 0;
}

if (file_exists($target_file)) {
echo "Извините файл уже существует.";
$uploadOk = 0;
}
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Файл слишком большой.";
$uploadOk = 0;
}
if($imageFileType != "jpg" and $imageFileType != "png" and $imageFileType != "jpeg" and $imageFileType != "gif" ) {
echo "Только JPG, JPEG, PNG & GIF можно загружать. Неверное расширение файла";
$uploadOk = 0;
}
if ($uploadOk == 0) {
echo "Ошибка загрузки файла.";
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "Файл ". basename( $_FILES["fileToUpload"]["name"]). " загружен.";
} else {
echo "Ошибка копирования файла.";
}
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>

Php Отправка Email

Функция mail отправляет сообщение на почту.

function utf8mail($to,$s,$body,$from_name="x",$from_a = "info@x.com", $reply="info@x.com")
{
$s= "=?utf-8?b?".base64_encode($s)."?=";
$headers = "MIME-Version: 1.0\r\n";
$headers.= "From: =?utf-8?b?".base64_encode($from_name)."?= <".$from_a.">\r\n";
$headers.= "Content-Type: text/html;charset=utf-8\r\n";
$headers.= "Reply-To: $reply\r\n";
$headers.= "X-Mailer: PHP/" . phpversion();
mail($to, $s, $body, $headers);
}

 

 

<?function send_email($name = 'Аноним', $message = 'Я дефолтное сообщение, кажется мой хозяйн забыл меня исправить :с') {
  $subject = 'Регистрация';
  $name = "=?UTF-8?B?".base64_encode($name)."?=";
  $subject = "=?UTF-8?B?".base64_encode($subject)."?=";
  $to = 'mail@my-site.ru';
  $headers = "From: $name\r\n";
  $headers .= "MIME-Version: 1.0" . "\r\n";
  $headers .= "Content-type: text/html; charset=UTF-8" . "\r\n";
  //var_dump($to, $subject, $message);
  $message = wordwrap($message, 70);
  $send = mail($to, $subject, $message, $headers);
}?>




Active.php

<meta charset="utf-8">
<?
mysql_connect("localhost","root","");
mysql_select_db('baza');

$res=mysql_query("SELECT * from `users` where `email`='{$_GET['email']}'");
$data=mysql_fetch_array($res);
echo "SELECT * from `users` where `email`='{$_GET['email']}'" . "<br>";
if($data['id']){
 $auth=md5($_GET['email']).md5($data['id']);
 echo $auth;
 if($auth==$_GET['auth']){
 $upd=mysql_query("update `users` set `auth`='1' where`email`='{$_GET['email']}'"); 
 if($upd='TRUE'){
 echo 'Поздравляем, регистрация прошла успешно!';
 }
 } 
 else {echo 'Возникла ошибка, попробуйте зарегистрироваться заново!';}
}

?>

 

База данных

 

-- phpMyAdmin SQL Dump
-- version 4.0.10.6
-- http://www.phpmyadmin.net
--
-- Хост: 127.0.0.1:3306
-- Время создания: Мар 16 2016 г., 17:11
-- Версия сервера: 5.5.41-log
-- Версия PHP: 5.3.29

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- База данных: `iweb`
--

-- --------------------------------------------------------

--
-- Структура таблицы `posts`
--

CREATE TABLE IF NOT EXISTS `posts` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `title` text NOT NULL,
  `content` text NOT NULL,
  `author` varchar(50) NOT NULL DEFAULT 'Жарова Салтанат',
  `img` varchar(200) NOT NULL DEFAULT 'default.jpg',
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ;

--
-- Дамп данных таблицы `posts`
--

INSERT INTO `posts` (`id`, `title`, `content`, `author`, `img`, `date`) VALUES
(2, 'Lorem Ipsum', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry''s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.', 'Жарова Салтанат', 'images/default.jpg', '2016-03-04 11:42:22'),
(6, 'long established fact', 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using ''Content here, content here'', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for ''lorem ipsum'' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).', 'Жарова Салтанат', 'images/default.jpg', '2016-03-04 11:46:47'),
(7, 'Contrary to popular belief', 'Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.', 'Жарова Салтанат', 'images/default.jpg', '2016-03-04 11:48:08'),
(9, 'Lorem Ipsum', '<b>There are many</b> variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don''t look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn''t anything embarrassing hidden in the middle of text. <p style="color:red;">All the Lorem Ipsum </p>generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.', 'Жарова Салтанат', 'images/default.jpg', '2016-03-04 11:48:50'),
(10, 'The point of using', 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using ''Content here, content here'', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for ''lorem ipsum'' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).', 'Жарова Салтанат', 'images/default.jpg', '2016-03-04 11:49:09'),
(11, 'default model', '<strong>It is a long established</strong> fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using ''Content here, content here'', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for ''lorem ipsum'' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).', 'Жарова Салтанат', 'images/default.jpg', '2016-03-04 11:49:19'),
(14, 'Lorem Ipsum - это текст-"рыба"', 'Lorem Ipsum - это текст-"рыба", часто используемый в печати и вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на латинице с начала XVI века. В то время некий безымянный печатник создал большую коллекцию размеров и форм шрифтов, используя Lorem Ipsum для распечатки образцов. Lorem Ipsum не только успешно пережил без заметных изменений пять веков, но и перешагнул в электронный дизайн. Его популяризации в новое время послужили публикация листов Letraset с образцами Lorem Ipsum в 60-х годах и, в более недавнее время, программы электронной вёрстки типа Aldus PageMaker, в шаблонах которых используется Lorem Ipsum.', 'Жарова Салтанат', 'images/default.jpg', '2016-03-07 10:10:01'),
(15, 'заполнение шаблона 11145', 'Давно выяснено, что при оценке дизайна и композиции читаемый текст мешает сосредоточиться. Lorem Ipsum используют потому, что тот обеспечивает более или менее стандартное заполнение шаблона, а также реальное распределение букв и пробелов в абзацах, которое не получается при простой дубликации "Здесь ваш текст.. Здесь ваш текст.. Здесь ваш текст.." Многие программы электронной вёрстки и редакторы HTML используют Lorem Ipsum в качестве текста по умолчанию, так что поиск по ключевым словам "lorem ipsum" сразу показывает, как много веб-страниц всё ещё дожидаются своего настоящего рождения. За прошедшие годы текст Lorem Ipsum получил много версий. Некоторые версии появились по ошибке, некоторые - намеренно (например, юмористические варианты).', 'Жарова Салтанат', 'images/default.jpg', '2016-03-07 10:10:26'),
(16, 'Есть много вариантов Lorem Ipsum', 'Есть много вариантов Lorem Ipsum, но большинство из них имеет не всегда приемлемые модификации, например, юмористические вставки или слова, которые даже отдалённо не напоминают латынь. Если вам нужен Lorem Ipsum для серьёзного проекта, вы наверняка не хотите какой-нибудь шутки, скрытой в середине абзаца. Также все другие известные генераторы Lorem Ipsum используют один и тот же текст, который они просто повторяют, пока не достигнут нужный объём. Это делает предлагаемый здесь генератор единственным настоящим Lorem Ipsum генератором. Он использует словарь из более чем 200 латинских слов, а также набор моделей предложений. В результате сгенерированный Lorem Ipsum выглядит правдоподобно, не имеет повторяющихся абзацей или "невозможных" слов.,hj,hj,h', 'Жарова Салтанат', 'images/default.jpg', '2016-03-07 10:10:45'),
(17, 'ugkj,m', 'sdxfcghjbkml;,./uo;jkm.,', 'Жарова Салтанат', 'images/default.jpg', '2016-03-14 10:14:16'),
(18, 'sfdsfsdfds', 'fdsfdsfsdsdfsdfsdfdfsdfdsfd', 'Жарова Салтанат', 'images/uploads/user.png', '2016-03-14 10:29:59'),
(19, 'sfdsfsdfds', 'fdsfdsfsdsdfsdfsdfdfsdfdsfd', 'Жарова Салтанат', 'uploads/user.png', '2016-03-14 10:35:51'),
(20, 'sdfsdfsdf', 'sdfsdf sdfsdfsdf sdfsdf sdfsdfsdfsdfsdf sdfsdfsdfsdfsdf sdfsdfsdfsdfsdf sdfsdfsdfsdfsdf sdfsdfsdfsdfsdf sdfsdfsdfsdfsdf sdfsdfsdfsdfsdf sdfsdfsdf sdfsdf sdfsdfsdfsdfsdf sdfsdfsdfsdfsdf sdfsdfsdfsdfsdf sdfsdfsdf sdfsdf sdfsdfsdfsdfsdf sdfsdfsdfsdfsdf sdfsdfsdf', 'Жарова Салтанат', 'images/uploads/balkon_dver.jpg', '2016-03-14 13:40:22');

-- --------------------------------------------------------

--
-- Структура таблицы `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(200) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `email` varchar(20) NOT NULL,
  `pass` varchar(255) NOT NULL,
  `auth` int(1) NOT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ;

--
-- Дамп данных таблицы `users`
--

INSERT INTO `users` (`id`, `name`, `email`, `pass`, `auth`, `date`) VALUES
(16, 'saltik', 'saltik91@mail.ru', '698d51a19d8a121ce581499d7b701668', 1, '0000-00-00 00:00:00'),
(17, 'ddd', 'ddd@ddd.ti', '202cb962ac59075b964b07152d234b70', 1, '0000-00-00 00:00:00'),
(19, 'Salta', 'aaa@aaa.aaa', '202cb962ac59075b964b07152d234b70', 1, '2016-03-14 16:18:19');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

 

Результат 10 уроков можно скачать по этой ссылке 

 

Пример простой админки

<?
session_start();//запустили работу с сессиями
if($_GET['exit']==1)
  unset($_SESSION['login']);
if($_SESSION['login']!='admin')
  {
  header("location: login.php");
  }
mysql_connect("localhost","root","");//соединились с базой данных
mysql_select_db("users");//выбрали базу данных с которой будем работать

if($_GET['spam']>0)
  mysql_query("update `posts` set 
    `status`='spm' where `id` = '{$_GET['spam']}'");
if($_GET['ok']>0)
  mysql_query("update `posts` set 
    `status`='ok' where `id` = '{$_GET['ok']}'");
if($_GET['new']>0)
  mysql_query("update `posts` set 
    `status`='new' where `id` = '{$_GET['new']}'");

if(isset($_POST['h1']))
{
  if($_GET['edit']>0)
    {
    mysql_query("update `posts` set `h1`='{$_POST['h1']}',
    `text`='{$_POST['text']}' where `id`={$_GET['edit']} 
    ");	
    header("location: index.php");
    }
  else
    {
    do{
      $n=rand(0,1000000000000);
    }while(file_exists("../images/{$n}.jpg"));
    move_uploaded_file($_FILES['myfile']['tmp_name'],"../images/{$n}.jpg");	
    mysql_query("insert into `posts` (`h1`,`text`,`img`) 
    values ('{$_POST['h1']}','{$_POST['text']}','{$n}.jpg');
    ");	
  }
  
}
if($_GET['edit']>0)
{
$t=mysql_query("select * from `posts` where 
  `id`={$_GET['edit']}");	
$r=mysql_fetch_array($t);	
}
if($_GET['del']>0)
{
mysql_query("delete from `posts` where `id`='{$_GET['del']}'");
}
?>
<meta charset='utf-8'>
<h1>Вы находитесь в админ панели сайта</h1>
<a href='?exit=1'>Выход</a>
<form method='post' enctype='multipart/form-data'>
<input name="h1" style='Width:400px' value='<?=$r['h1'];?>'><br>
<textarea name="text" style='Width:400px;height:400px;'>
<?=$r['text'];?>
</textarea><br>
<input type='file' name='myfile'><br>
<input type='submit' value='Сохранить'>
</form>
<hr>
<?
$table=mysql_query("select * from posts");
while($r=mysql_fetch_array($table))
{
echo "<h1>{$r['h1']}</h1>";
echo "<img src='../images/{$r['img']}' height='300px'>";
echo "<p>{$r['text']}</p>";
echo "<p style='color:green'>Текущий статус: {$r['status']}</p>";
echo "Поменять статус: <a href='?spam={$r['id']}'>Спам</a> | ";
echo "<a href='?new={$r['id']}'>Новая</a> | ";
echo "<a href='?ok={$r['id']}'>Утвердить</a><br>";

echo "<a href='?del={$r['id']}'>Удалить</a> | ";
echo "<a href='?edit={$r['id']}'>Редактировать</a><hr>";

}

?>