Несколько месяцев назад я начал кодировать свою первую динамическую страницу ... изучая все, начиная с нуля и заканчивая нулями.Вставить картинки в базу данных - PHP - MySQL С именем пользователя
Получил несколько ударов здесь и там, так что это еще один.
Это страница с недвижимостью, на которой люди могут добавлять списки и как таковые. Я прочитал некоторые известные темы справа here и there о проблеме с картинками внутри базы данных. Я просто решил использовать БД, потому что мне нужно что-то начать.
Я использовал это tutorial для начала. Через несколько часов, вуаля, я смог вставить картинки на реальном сервере. Очень счастлив.
Но тогда возникает проблема. Фотографии должны быть прикреплены к имени пользователя (или электронной почте). На сайте есть защищенные страницы с именем пользователя, когда вы пытаетесь вставить материал.
Это основной файл для вставки фотографий в БД. Заметьте, я добавил имя пользователя в код, но имя пользователя не вставлено, просто изображение. Мне нужно знать, кто что вставляет.
Существует вопрос, который вы можете просто пропустить: фотографии должны быть прикреплены к адресу. Когда пользователь выбрал фото и нажал кнопку загрузки, могу ли я иметь поле ввода с адресом, где одна и та же кнопка будет выполнять две функции одновременно? (если у меня есть две кнопки, пользователь не может обойти оба. Таким образом, мы получаем изображения и адрес в одно и то же время, а в обратной стороне - имя пользователя). Я бы знал, как иметь две кнопки, два запроса.
Большое вам спасибо за вашу помощь. Мне это действительно нужно.
$query = sprintf(
"insert into images (filename, mime_type, file_size, file_data, username)
values ('%s', '%s', %d, '%s','%s')",
mysql_real_escape_string($image['name']),
mysql_real_escape_string($info['mime']),
$image['size'],
mysql_real_escape_string(
file_get_contents($image['tmp_name'])),
mysql_real_escape_string(
file_get_contents($_SESSION['user'])
)
);
вот полный код.
<?php
//error_reporting(E_ALL);
//ini_set("display_errors", 1);
require("common.php");
if(empty($_SESSION['user']))
{
header("Location: ../index.php");
die("Redirecting to .../index.php");
}
?>
Эта первая часть приведенного выше кода предназначена только для проверки того, вошел ли пользователь в систему. Затем код.
<?php
require_once('globalsConfigPic1.php');
function assertValidUpload($code)
{
if ($code == UPLOAD_ERR_OK) {
return;
}
switch ($code) {
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
$msg = 'Image is too large';
break;
case UPLOAD_ERR_PARTIAL:
$msg = 'Image was only partially uploaded';
break;
case UPLOAD_ERR_NO_FILE:
$msg = 'No image was uploaded';
break;
case UPLOAD_ERR_NO_TMP_DIR:
$msg = 'Upload folder not found';
break;
case UPLOAD_ERR_CANT_WRITE:
$msg = 'Unable to write uploaded file';
break;
case UPLOAD_ERR_EXTENSION:
$msg = 'Upload failed due to extension';
break;
default:
$msg = 'Unknown error';
}
throw new Exception($msg);
}
$errors = array();
try {
if (!array_key_exists('image', $_FILES)) {
throw new Exception('Image not found in uploaded data');
}
$image = $_FILES['image'];
// ensure the file was successfully uploaded
assertValidUpload($image['error']);
if (!is_uploaded_file($image['tmp_name'])) {
throw new Exception('File is not an uploaded file');
}
$info = getImageSize($image['tmp_name']);
if (!$info) {
throw new Exception('File is not an image');
}
}
catch (Exception $ex) {
$errors[] = $ex->getMessage();
}
if (count($errors) == 0) {
// no errors, so insert the image
$query = sprintf(
"insert into images (filename, mime_type, file_size, file_data, username)
values ('%s', '%s', %d, '%s','%s')",
mysql_real_escape_string($image['name']),
mysql_real_escape_string($info['mime']),
$image['size'],
mysql_real_escape_string(
file_get_contents($image['tmp_name'])),
mysql_real_escape_string(
file_get_contents($_SESSION['user'])
)
);
mysql_query($query, $db);
$id = (int) mysql_insert_id($db);
// finally, redirect the user to view the new image
header('Location: view.php?id=' . $id);
exit;
}
?>
<html>
<head>
<title>Error</title>
</head>
<body>
<div>
<p>
The following errors occurred:
</p>
<ul>
<?php foreach ($errors as $error) { ?>
<li>
<?php echo htmlSpecialChars($error) ?>
</li>
<?php } ?>
</ul>
<p>
<a href="upload.php">Try again</a>
</p>
</div>
</body>
</html>
-1 для самой идеи хранения изображений в базе данных. –