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

Форум PHP

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

 

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

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

тема: Сокрытие настоящего места расположения
 
 автор: chexov   (08.04.2008 в 06:18)   письмо автору
 
 

Происходит UPLOAD файла, меня интересует в частности картинки, при просмотре свойства картинки показывается адрес где она лежит...
как сокрыть его месторасположение от пользователей?

   
 
 автор: CassIO   (08.04.2008 в 06:22)   письмо автору
 
   для: chexov   (08.04.2008 в 06:18)
 

Сделай отдачу картинки через php скрипт. Тока понадобится база с названиями картинок, или путями куда они загрузились. И тогда адрес твоей картинки будет не такой: http://www.somesite.ru/images/images.gif а допустим http://www.somesite.ru/image.php?id=10

   
 
 автор: chexov   (08.04.2008 в 06:35)   письмо автору
 
   для: CassIO   (08.04.2008 в 06:22)
 

не понял как это осуществить?
название картинок записывается в БД, дальше что?

   
 
 автор: CassIO   (08.04.2008 в 06:53)   письмо автору
 
   для: chexov   (08.04.2008 в 06:35)
 

Смотри...допустим я выбрал картинку для загрузки ее на сервер...она загрузилась допустим в папку uploads/users/someimage.gif или jpeg

Название файла записалось в базу данных.

Далее мы пишем код:

<?

    $id 
$_REQUEST['id'];

    if (!empty(
$id)) {
    
        
$sql "SELECT * FROM `images` WHERE `id` = '$id'";
        
$result mysql_query ($sql);
        
        if (
mysql_num_rows ($result) == 0) {
        
            echo 
"Ошибка! Изображение не существует!";
        
        } else {
        
            
$data mysql_fetch_array($result);
            
            
$link "uploads/".$data['file_name'];
            
            if (
preg_match("gif"$data['file_name']) {
            
                
$img imagecreatefromgif($link);
                
            } elseif ((
preg_match("jpg"$data['file_name'])) OR (preg_match("jpeg"$data['file_name']))) {
            
                
$img imagecreatefromjpeg($link);
                
            }
            
        }
        
        
header("Content-type: image/png");
        
imagepng($img);
        
imagedestroy($img);
        
    } else {
    
        echo 
"Вы не выбрали изображение";
        
    }
    
?>


Самый простой пример отдачи картинки через PHP скрипт. А там можно его переделывать как хочешь. накладывать водяные знаки, тексты, перекрашивать и пр.

   
 
 автор: chexov   (08.04.2008 в 07:03)   письмо автору
 
   для: CassIO   (08.04.2008 в 06:53)
 

сейчас попробую, спасибо

   
 
 автор: chexov   (08.04.2008 в 08:41)   письмо автору
 
   для: chexov   (08.04.2008 в 07:03)
 

ваш код вообще не работает
я сделал так:

<?
  $_GET
['pic']// номер картинки передаваемый из другого файла
   
$result mysql_query ("SELECT `image".$_GET['pic']."` FROM `table`"); 
   if (
mysql_num_rows ($result) == '0')
     { 
     echo 
"Ошибка! Изображение не существует!"
     }
   else 
     {
     
$data mysql_fetch_array($result); 
     
$ext strtolower(strrchr($data['image'.$_GET['pic'].''], "."));
     
$links "upload/".$data['image'.$_GET['pic'].''];
     if (
in_array($ext, array(".jpg"".jpeg")) ) 
       {
       
$img imagecreatefromjpeg($links);
       
header("Content-type: image/jpeg"); 
       
imagejpeg($img); 
       
imagedestroy($img);
       }
     elseif (
$ext === ".gif")
       {
       
$img imagecreatefromgif($links);
       
header("Content-type: image/gif"); 
       
imagegif($img); 
       
imagedestroy($img);
       } 
     } 
   } 
else 
  { 
  echo 
"Вы не выбрали изображение"
  }
?>

выводит пустой рисунок: смотрю свойства расширение 0х0 но вес файла верный, что не так?

   
 
 автор: Diplex   (08.04.2008 в 08:59)   письмо автору
 
   для: chexov   (08.04.2008 в 08:41)
 

Что за извращения с созданием картинки?

Всё должно свестись к простым дейсвиям:
1) Знать номер картинки
2) Соединиться с базой и в зависимости от номера, взять путь до картинки, который заранее записали в бд.

Если у введеного номера есть запись в бд, то картинка выводится, если нет такой записи, то запретить вывод.

   
 
 автор: chexov   (08.04.2008 в 09:00)   письмо автору
 
   для: Diplex   (08.04.2008 в 08:59)
 

у меня не записывается путь в БД, а записывается только название файла, который лежит в папке uploads(в данном случае)

   
 
 автор: Diplex   (08.04.2008 в 09:05)   письмо автору
 
   для: chexov   (08.04.2008 в 09:00)
 

Тогда какое же это скрытие адреса? Если вычислят один адрес, то по аналогии и другие картинки вычислят. Хотя, если нет надобности нормально скрывать картинки, то вообще БД не нужна.

Информацию методом гет передавать в скрипт, а скриптом проверять (скрытую скриптом) дирректорию на наличие такого файла.

   
 
 автор: chexov   (08.04.2008 в 09:09)   письмо автору
 
   для: Diplex   (08.04.2008 в 09:05)
 

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

   
 
 автор: CassIO   (08.04.2008 в 09:15)   письмо автору
 
   для: chexov   (08.04.2008 в 09:09)
 

Короче ставь LihgtHttpd и там есть такая фитча, все файлообменники на нем работают...

   
 
 автор: chexov   (08.04.2008 в 09:20)   письмо автору
 
   для: CassIO   (08.04.2008 в 09:15)
 

это не решение:(

<a href='script.php?pic=1'>Картинка1</a>
<a href='script.php?pic=2'>Картинка2</a>
<a href='script.php?pic=3'>Картинка3</a>

Нужно чтобы пользователь нажал на ссылку, открылась картинка соответствующая ссылке, но при просмотре юзером ее места нахождения, адрес был не настоящий
Объяснил проблему более подробно

   
 
 автор: mechanic   (08.04.2008 в 09:35)   письмо автору
 
   для: chexov   (08.04.2008 в 09:20)
 

СassIO привел верный код! а твой вообще бред! что за запрос "select `image" .$_GET['pic']."` from table" ???? у тебя что по столбцу на каждую картинку и всего 1 строка в таблице??? взялся портить чужой код, так не говори потом что "ВАШ КОД не работает"!!

   
 
 автор: chexov   (08.04.2008 в 09:40)   письмо автору
 
   для: mechanic   (08.04.2008 в 09:35)
 

у меня 3 столбца для картинок, в каждую по одной
я тебе говорю значит не работает, возьми и проверь
называются image1, image2, image3
параметр $_GET['pic'] передает номер image<-(1,2,3)
так что все верно

   
 
 автор: mechanic   (08.04.2008 в 09:48)   письмо автору
 
   для: chexov   (08.04.2008 в 09:40)
 

так у тя еще и таблица спроектирована ужасно.. расчитывается, что будет доступно всего 3 картинки?
я даже проверять не стану, я уверен что код рабочий!
вообще-то предполагалось, что таблица будет иметь вид
id, file_name
хотя бы так.. передаешь id (script.php?id=1), а в script.php вставляешь код от CassIO, и все!

а твой код нерабочий хотя бы потому. что ты во второй строке перед комментарием забыл ; поставить
и вообще неясно что там делает одинокое $_GET['pic']

   
 
 автор: chexov   (08.04.2008 в 09:56)   письмо автору
 
   для: mechanic   (08.04.2008 в 09:48)
 

не вникай для чего мне это, 3 или 100 файлов сейчас не суть
насчет ; это опечатка, модераторы поправят
$_GET['pic'] не одинаковое!!!!!!!! она варьирует от 1 до 3
какая разница что написал CasslO?? я делаю свой скрипт со своей базой, зачем мне под кого то подстраиваться? у меня вместо file_name - выборка из таблицы

   
 
 автор: KPETuH   (08.04.2008 в 09:58)   письмо автору
 
   для: chexov   (08.04.2008 в 06:18)
 

использовать библиотеку работы с графикой GD2?

   
 
 автор: chexov   (08.04.2008 в 09:59)   письмо автору
 
   для: KPETuH   (08.04.2008 в 09:58)
 

как использовать и где взять? а если на хосте нету ее?

   
 
 автор: mechanic   (08.04.2008 в 10:02)   письмо автору
 
   для: chexov   (08.04.2008 в 09:59)
 

> как использовать и где взять? а если на хосте нету ее?

как использовать тебе рассказали в 4 посте..
если либы нет - обычно пишут хостеру с просьбой установить, либо кнопочка "Установить" есть где то на просторах панели управления хостингом..

если хостер посылает нафиг - лучше найти нормального.. их щас столько, хоть лопатой греби

   
 
 автор: chexov   (08.04.2008 в 10:10)   письмо автору
 
   для: mechanic   (08.04.2008 в 10:02)
 

а на локале?

   
 
 автор: mechanic   (08.04.2008 в 10:47)   письмо автору
 
   для: chexov   (08.04.2008 в 10:10)
 

<?php
var_dump(extension_loaded('gd'));
?>

если true, значит загружена, если нет - надо править php.ini..
там есть длинный список ";extension=...", вот надо раскомментировать все нужные расширения
не думаю что сам файл либы придется искать, обычно они идут в комплекте, так что остается только поправить php.ini

   
 
 автор: mihdan   (08.04.2008 в 10:48)   письмо автору
 
   для: chexov   (08.04.2008 в 10:10)
 

в PHP.INI раскоментируйте


extension=php_gd2.dll

   
 
 автор: chexov   (08.04.2008 в 15:23)   письмо автору
 
   для: mihdan   (08.04.2008 в 10:48)
 

раскоментировано а скрпит все арвно не робит

   
 
 автор: mechanic   (08.04.2008 в 16:39)   письмо автору
 
   для: chexov   (08.04.2008 в 15:23)
 

если ты юзал тот код, который приводил здесь, то как я уже сказал, он выдаст PARSE ERROR, из-за отсутствующей ; после $_GET['pic']

   
 
 автор: chexov   (08.04.2008 в 17:28)   письмо автору
 
   для: mechanic   (08.04.2008 в 16:39)
 

да забей ты на это GET. Это опечатка, я хотел написать

<?
//$_GET['pic'] это параметр перадваемый из другого скрипта
?>

у меня не работает не знаю почему...картинку не выводит

   
 
 автор: deman-b   (08.04.2008 в 18:19)   письмо автору
 
   для: chexov   (08.04.2008 в 17:28)
 

>использовать библиотеку работы с графикой GD2
А смвсел какой использовать ее. Если нет надобности работать с графикой... только доп. нагрузка на сервер.
проще и быстрей использовать
<?
file_get_contents
();
header("content-type: /*MIME-type*/");   
file_put_contents();
?>

   
 
 автор: chexov   (08.04.2008 в 18:26)   письмо автору
 
   для: deman-b   (08.04.2008 в 18:19)
 

как ЭТО решит мою задачу?

   
 
 автор: chexov   (08.04.2008 в 19:59)   письмо автору
 
   для: chexov   (08.04.2008 в 18:26)
 

Есть идеи?

   
 
 автор: mechanic   (08.04.2008 в 21:48)   письмо автору
 
   для: chexov   (08.04.2008 в 19:59)
 

навтыкай везде отладочных echo'в. поставь в самом начале скрипта

error_reporting(E_ALL);
ini_set('display_errors', 1);

и пробуй..

   
 
 автор: mihdan   (09.04.2008 в 13:40)   письмо автору
 
   для: chexov   (08.04.2008 в 06:18)
 

http://softtime.ru/forum/read.php?id_forum=1&id_theme=51948

   
Rambler's Top100
вверх

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