<?php /* *хранение изображений в базе данных *взято из книги "Головоломки на PHP для хакера" *автор: http://softtime.ru *25.08.07 * //структура таблицы CREATE TABLE image ( id_image int(11) NOT NULL auto_increment, name tinytext NOT NULL, content longblob NOT NULL, PRIMARY KEY (id_image) ) TYPE=MyISAM; */ ?> <form enctype='multipart/form-data' method=post> <input type="file" name="image"><br> <input type=submit value='Загрузить'> </form> <?php // Число изображений на странице $pnumber = 3; // Устанавливаем соединение с базой данных // Сетевой адрес MySQL-сервера $dblocation = "localhost"; // Имя базы данных $dbname = "book"; // Пользователь $dbuser = "root"; // Его пароль $dbpasswd = ""; // Устанавливаем соединение с базой данных $dbcnx = mysql_connect($dblocation,$dbuser,$dbpasswd); if (!$dbcnx) exit ("К сожалению, не доступен сервер MySQL : ".mysql_error()); // Выбираем базу данных if (!@mysql_select_db($dbname,$dbcnx)) exit("К сожалению, не доступна база данных : ".mysql_error()); // Обработчик HTML-формы if(!empty($_FILES)) { // Проверяем является ли переданный файл картинкой if(substr($_FILES['image']['type'],0,5) == 'image') { // Читаем содержимое файла $content = file_get_contents($_FILES['image']['tmp_name']); // Уничтожаем файл во временной директории unlink($_FILES['image']['tmp_name']); // Экранируем спец-символы в бинарном содержимом файла $content = mysql_escape_string($content); // Формируем запрос на добавление файла в таблицу $query = "INSERT INTO image VALUES(NULL, '".$_FILES['image']['name']."', '$content')"; if(mysql_query($query)) { // Осуществляем автоматическую перезагрузку страницы echo "<HTML><HEAD> <META HTTP-EQUIV='Refresh' CONTENT='0; URL=$_SERVER[PHP_SELF]'> </HEAD></HTML>"; } else exit(mysql_error()); } } ?> Для вывода файла можно воспользоваться таким скриптом: <?php // Устанавливаем соединение с базой данных require_once("config.php"); // Провряем передан ли параметр id_image // и является ли он целым числом, чтобы // предотвратить SQL-инъекцию if(!preg_match("|^[\d]+$|",$_GET['id_image'])) { exit("Недопустимый формат URL-запроса"); } // Извлекаем файл из базы данных $query = "SELECT * FROM image WHERE id_image = $_GET[id_image]"; $img = mysql_query($query); if(!$img) exit(mysql_error()); $image = mysql_fetch_array($img); // Отсылаем заголовки на загрузку файла header("Content-type: image/*"); // Отправляем файл пользователю echo $image['content']; ?>