Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   как узнать откуда пришел запрос (https://javascript.ru/forum/server/64007-kak-uznat-otkuda-prishel-zapros.html)

psiklop 14.07.2016 02:58

как узнать откуда пришел запрос
 
как тут узнается откуда пришел запрос?
в теге img изображение, а при переходе по ссылке html страница
получил массив getallheaders() в php, но разницы не заметил

<img src="http://s019.radikal.ru/i600/1607/e1/85f3491e0b56t.jpg">
<a href="http://s019.radikal.ru/i600/1607/e1/85f3491e0b56t.jpg">ссылка</a>

psiklop 14.07.2016 03:16

хотя разница есть, сразу не заметил
при запросе из тега img браузеры не пишут в заголовке Accept что понимают html, вот так "text/html"

Botik21 14.07.2016 08:52

В данной случае никак.
С заголовком просто повезло, что разработчики браузера сделали именно так.

psiklop 14.07.2016 14:34

Rise, нет, ты исправил ссылки
нужно сделать чтобы определялось без параметров
в радикале же определяется

Botik21, я не думаю что это везение, совершенно нелогично, что браузер запрашивая ресурс для тега img будет писать что понимает html, бог с ним в этом случае

способ нормальный если браузер пишет что понимает html в заголовке выдать страницу, не пишет значит картинку, разве нет?

laimas 14.07.2016 15:26

psiklop,
какое отношение к src="http://s019.radikal.ru/i600/1607/e1/85f3491e0b56t.jpg" имеет РНР?

psiklop 15.07.2016 03:39

laimas, тут ответ генерирует скрипт php, mod rewrite перенаправляет все jpg на php скрипт

Rise, в моем примере ссылке в <img> и <a> совершенно одинаковые, а вообще "t" на радикале по моему просто добавляется к имени файла и создается превью(маленькая картинка)

psiklop 15.07.2016 03:41

а вообще проверил все работает

эта строка работает идеально во всех браузерах что я попробовал, определяет запрос из img или нет
if (strpos($_SERVER['HTTP_ACCEPT'], "text/html")!== false)

laimas 15.07.2016 05:12

Цитата:

Сообщение от psiklop
mod rewrite перенаправляет все jpg на php скрипт

Зачем?

psiklop 16.07.2016 21:41

laimas, потому что картинок на сервере не будет, их будет выдавать php скрипт
а вторая причина в самой теме, чтобы определить что выдать картинку либо страницу

rise, ссылки одинаковые и работает на радикале, если у тебя не работает значит браузер закешировал картинку
работает все четко в теге картинка, просто перейти - страничка
ссылки ОДИНАКОВЫЕ, вот так понятней будет ===

laimas 17.07.2016 04:26

Цитата:

Сообщение от psiklop
потому что картинок на сервере не будет, их будет выдавать php скрипт

И откуда же он их будет брать?

psiklop 17.07.2016 17:40

на одном сервисе, где все быстро, всего много, и все бесплатно

psiklop 17.07.2016 21:42

laimas, вот это точно к php как относится?
если действительно так интересно, напиши в личку, я отвечу без проблем

laimas 18.07.2016 01:49

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

psiklop 18.07.2016 17:07

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

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

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

<img onclick="window.location.assign(this.src)" src='<?php echo $base64img ?>'>

P.S. карма все ниже, я что обидел кого-то?

laimas 18.07.2016 17:55

Цитата:

Сообщение от psiklop
Потому что у меня нет сервера своего

Тогда о чьем РНР, на который перенаправление, шла речь?

Можно иметь свой сервер, который не содержит медиа данных, они на бесплатном хосте располагаются. В этом случае медиа контент подгружается с них, не нагружая основной сервер запросами.

Если такие данные грузятся также с другого сервера, но по разрешениям на доступ, то тогда перенаправление с основоного сервера на другой, но и в этом случае РНР сбоку, все решается средствами Апач.

Если же перенаправление/РНР, это забота как раз другого сервера, то никоим образом не получится "распознать", если это другой не принимает параметров с соответствующей реакцией на них.

С другой стороны src='<?php echo $base64img ?>' - это говорит о том, что все таки и сервер свой есть, и интерпретатор - обрабатывайте параметры. Правда base64 для изображения это слишком, тем более для больших изображений.

psiklop 18.07.2016 18:17

нет сервера, есть просто аккаунт на хостинге beget
что значит слишком base64? а какой есть вариант?
если есть вариант напиши пожалуйста, если нету просто типа все плохо без своего сервера, не грузи пожалуйста

psiklop 18.07.2016 18:26

тут плохо именно base64 или то что это выводит в тело страницы echo?

если хранить в облаке уже base64 и img.src выдавать просто прямую ссылку на облако так будет лучше?

psiklop 18.07.2016 18:44

ну да, тут я облажался, зачем base64 вообще тут нужен
когда можно просто запросить по api прямую ссылку из облака и ее и вставить в img.src

psiklop 18.07.2016 18:47

Rise, в смысле сколько страниц? каком url?

laimas 18.07.2016 18:54

base64 - это в три раза больше исходного объема, что не есть хорошо, когда большой потребности в этом нет.

То что в процесс выдачи изображения вклинивается интерпретатор, в чем тоже необходимости нет, это тоже не лучшее, что можно придумать.

psiklop 18.07.2016 20:45

вот так: /имя файла
нисколько в длину, сразу в корне, а что?

psiklop 18.07.2016 22:46

Rise, проц и память то что надо, это мой игровой комп, а играть я люблю и денег не пожалею

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

warren buffet 26.07.2016 17:10

Например чтобы не хранить все размеры. Дофига сайтов выдают картинки скриптами, в частности imdb


Часовой пояс GMT +3, время: 00:02.