Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Снова вставка изображений в базу
 
 автор: bibika   (24.03.2010 в 16:08)   письмо автору
 
 

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


<html>
<head>
  <title>Загрузка файлов на сервер</title>
</head>
<body>
      <h2><p><b> Форма для загрузки файлов </b></p></h2>
      <form action="upload.php" method="post" enctype="multipart/form-data">
      <input type="file" name="filename"><br> 
      <input type="submit" value="Загрузить"><br>
      </form>
</body>
</html>



<html>
<head>
  <title>Результат загрузки файла</title>
</head>
<body>

<?php
   
if($_FILES["filename"]["size"] > 1024*3*1024)
   {
     echo (
"Размер файла превышает три мегабайта");
     exit;
   }
   if(
copy($_FILES["filename"]["tmp_name"],
     
"c:/temp/".$_FILES["filename"]["name"]))
   {
     echo(
"Файл успешно загружен <br>");
     echo(
"Характеристики файла: <br>");
     echo(
"Имя файла: ");
     echo(
$_FILES["filename"]["name"]);
     echo(
"<br>Размер файла: ");
     echo(
$_FILES["filename"]["size"]);
     echo(
"<br>Каталог для загрузки: ");
     echo(
$_FILES["filename"]["tmp_name"]);
     echo(
"<br>Тип файла: ");
     echo(
$_FILES["filename"]["type"]);
   } else {
      echo(
"Ошибка загрузки файла");
   }
?>


</body>
</html>

а как к этому прикрутить вставку в базу и вывод картинки не знаю

Спасибо

  Ответить  
 
 автор: sim5   (24.03.2010 в 16:19)   письмо автору
 
   для: bibika   (24.03.2010 в 16:08)
 

"c:/temp/" - это вы щитаете относительным путем? Не будет на сервер такого пути.
Не copy() надо использовать, а move_uploaded_file().
Не храните пути в таблице, храните имя файла, а путь в либо в файле конфигурации, либо в таблице конфигурации, так будет более гибко.

  Ответить  
 
 автор: bibika   (24.03.2010 в 16:27)   письмо автору
 
   для: sim5   (24.03.2010 в 16:19)
 

>"c:/temp/" - это вы щитаете относительным путем? Не будет на сервер такого пути.
>Не copy() надо использовать, а move_uploaded_file().
>Не храните пути в таблице, храните имя файла, а путь в либо в файле конфигурации, либо в таблице конфигурации, так будет более гибко.

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

Спасибо

  Ответить  
 
 автор: baston   (24.03.2010 в 16:35)   письмо автору
 
   для: bibika   (24.03.2010 в 16:27)
 

По второму совету:
if(move_uploaded_file($_FILES['uploaded']['tmp_name'],$target)) echo "OK!";//$chmod o+rw galleries

Это как пример (взято из комментариев на оф.сайте по данной функции (http://ru.php.net/manual/en/function.move-uploaded-file.php))

  Ответить  
 
 автор: sim5   (24.03.2010 в 16:42)   письмо автору
 
   для: bibika   (24.03.2010 в 16:27)
 

Дело не в локалном компьютере - c:/temp/... это не относительный путь, а абсолютный. У вас есть виртуальный хост на локальном компьютере, вот с его путями и работайте - абсолютными, относительными...

  Ответить  
 
 автор: Trianon   (24.03.2010 в 20:50)   письмо автору
 
   для: bibika   (24.03.2010 в 16:27)
 

>пока все вертится ... так проще.


C таким подходом Вы далеко не уйдете.
Не как проще надо делать, а как правильно.
Проще тогда оно само станет.

  Ответить  
 
 автор: bibika   (25.03.2010 в 12:08)   письмо автору
 
   для: Trianon   (24.03.2010 в 20:50)
 

Да я с Вами согласен, все поправил, поставил относительные пути в скрипте. И что делать дальше.

  Ответить  
 
 автор: Usta   (25.03.2010 в 12:56)   письмо автору
 
   для: bibika   (24.03.2010 в 16:08)
 


<?php
   
if($_FILES["filename"]["size"] > 1024*3*1024)
   {
     echo (
"Размер файла превышает три мегабайта");
     exit;
   }
   if(
copy($_FILES["filename"]["tmp_name"],
     
"c:/temp/".$_FILES["filename"]["name"]))
   {
     echo(
"Файл успешно загружен <br>");
     echo(
"Характеристики файла: <br>");
     echo(
"Имя файла: ");
     echo(
$_FILES["filename"]["name"]);
     echo(
"<br>Размер файла: ");
     echo(
$_FILES["filename"]["size"]);
     echo(
"<br>Каталог для загрузки: ");
     echo(
$_FILES["filename"]["tmp_name"]);
     echo(
"<br>Тип файла: ");
     echo(
$_FILES["filename"]["type"]);
$query mysql_query("INSERT INTO `image` VALUES(NULL,'".$_FILES["filename"]["name"]."','".$_FILES["filename"]["size"]."','".$_FILES["filename"]["type"]."')");
if(
$query) { echo 'Файл успешно добавлен'; }
   } else {
      echo(
"Ошибка загрузки файла");
   }
?> 

  Ответить  
 
 автор: sim5   (25.03.2010 в 13:04)   письмо автору
 
   для: Usta   (25.03.2010 в 12:56)
 

Нельзя так!

  Ответить  
 
 автор: Usta   (25.03.2010 в 13:09)   письмо автору
 
   для: sim5   (25.03.2010 в 13:04)
 

>Нельзя так!
Согласен, тут нужно обезопаситься про SQL инъекции:)) Ну это всего лишь пример выполнения.
Переменная $_FILES["filename"]["name"] - нужно обработать.

  Ответить  
 
 автор: sim5   (25.03.2010 в 13:12)   письмо автору
 
   для: Usta   (25.03.2010 в 13:09)
 

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

  Ответить  
 
 автор: Trianon   (25.03.2010 в 14:48)   письмо автору
 
   для: Usta   (25.03.2010 в 13:09)
 

Элемент $_FILES["filename"]["name"] вообще нет смысла (читай - не должно) применять для целевого именования файла на серверной стороне.

и copy тут традиционно не в дугу.

  Ответить  
 
 автор: bibika   (26.03.2010 в 13:10)   письмо автору
 
   для: Trianon   (25.03.2010 в 14:48)
 

Всем спасибо за ответы. Насчет SQL иньекций я не боюсь, поскольку этот скрипт пишется только для работы в внутри нашей сети, а у нас на счастья нет кому развлекатся с иньекциями.

Еще раз спасибо

  Ответить  
 
 автор: Саня   (26.03.2010 в 13:21)   письмо автору
 
   для: bibika   (26.03.2010 в 13:10)
 

А потом это войдёт в привычку и переползёт на "внешние" скрипты...

  Ответить  
 
 автор: Trianon   (26.03.2010 в 17:24)   письмо автору
 
   для: bibika   (26.03.2010 в 13:10)
 

я ни слова не сказал про инъекции.
Да и , откровенно говоря, в контексте Вашей проблемы - даже не задумался о них.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования