как передать изображение на сервер?
использую jquery post.
к форме со всякими параметрами, названиями и описаниями приделал поле в которое вставлять картинку <input size='30' name='file' type='file' > думал картинка передастся, но колбэк php код - if(!isset($_POST['file'])){echo"ok";} пишет ок, значит не пришла переменная. jquery post не умеет кидать картинки? есть ли какое то решение чтобы одновременно шла форма с текстом и картинкой? в найденных примерах в инете отдельно отправка изображения, а мне надо чтобы вместе с другими текстовыми полями отправлялось |
AJAX'ом (кроссбраузерно) нельзя передавать файлы. Используйте невидимый фрейм для этого.
Если Вы реализуете функционал под какой-то определенный браузер, Вам может помочь статья о FileAPI. |
А валидация?
|
Что "валидация"?
|
Цитата:
Вообще мне совершенно не понятно из-за чего разработчики браузеров (или разработчики стандартов, которым создатели браузеров должны следовать) запрещают некоторые удобства, причем эти запреты относительно легко обходятся. В пример можно привести кроссдоменный аякс, веб сокеты в опере, и вот передача файлов. |
FINoM, FileAPI
|
Цитата:
|
Цитата:
Для сокетов — флеш. Для передачи файлов — айфрейм. |
Цитата:
Цитата:
Цитата:
|
Цитата:
Сервер A (a.com) - поставщик данных Сервер B (b.com) - один из серверов который имеет право на доступ к данным Сервер E (e.com) - не имеющий доступа к данным. Пытаюсь придумать, как реализовать поддержку всех пунктов вместе: 1. Дать возможность пользователю, зашедшему на b.com использовать данные с сервера a.com через ajax 2. Разрешить серверу b.com получать данные на стророне сервера, например с помощью php 3. Запретить пользователю, зашедшему на e.com пользоваться данными, которы поставляет a.com 4. Запретить серверу e.com получение данных со стороны сервера Цитата:
Цитата:
Цитата:
|
Цитата:
Нужно фильтровать запросы по http-заголовкам. Браузер всегда сообщает адрес страницы с которой был совершен запрос (HTTP referer). И если этот запрос пришел со страницы расположенной на сервере b.com то в ответ возвращаем данные, иначе сообщение об ошибке или на свое усмотрение. Конечно это не позволяет реализовать кроссдоменный AJAX но это вполне подойдет к Script и XhrIframeProxy В случае когда запросы приходят с серверных скриптов то отфильтровывать их еще проще. Можно фильтровать по IP, также можно придумать собственный заголовок для общения между серверными скриптами расположенными на разных серверах. |
Цитата:
Цитата:
Цитата:
|
Напоминает: "Смотрю в книгу - вижу фигу".
По IP фильтруем только обращения с других серверов. Причем здесь IP пользователей. Цитата:
|
Цитата:
Цитата:
|
использование $_SESSION , мне кажется, будет хорошей идеей
|
Цитата:
|
тогда заюзайте куки,как в вконтакте
коротко: там есть кука, UID (неважно) , коотрая является md5-хешем чего-то , чего-то и IP-адреса если куку в ВК перехватывают и пытаются залогиниться под ней, то конечный md5 вашего IP (или что там еще) не совпадает, далее хакера кидает на главную страницу можно так сделать: при заходе на страницу отправки файлов юзверю присваивается его UID, в котором хранится md5 IP, соли, USERAGENT`a ( ведь он не будет менять браузер или ОС, когда будет загружать файл) этот UID будет в куке. на PHP проверяем всё это , собирая такой же md5 того же списка. хеш не совпал? какой ужас, пишем , что возникла ошибка. попробуйте повторить ещё |
melky, снова повторюсь, сервер злоумышленника может отсылать куки, юзерагент, ip так же как и клиент.
|
если он будет "злоумышленничать" через прогу, Javascript все равно не будет исполняться
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
x-yuri, я плохо объяснил задачу. Если сильно упростить, сервер A имеет php файл, в котором прописано:
echo '{"x":"5", "y":"21"}' Сам пользователь может открыть у себя в браузере эту страничку и посмотреть эти данные. Ну или не может, тут разницы нету. Владелец сервера A предоставляет услугу веб сервиса по раздаче информации об "x" и "y" платно и поддерживает актуальность этих данных, например, каждую минуту (то есть данные динамичны, постоянно заходить и копипастить нету смысла). Владелец сервера B заплатил денег владельцу сервера A, чтоб иметь возможность размещать у себя информацию, что на данную минуту x = 5, а y = 21 (может использоваться ajax или обращение из серверного скрипта). В своё время владелец сервера E зажмотился заплатить денег, значит ему нельзя обращаться к серверу B и через ajax и через php. |
Цитата:
Это какой то бред. |
Цитата:
|
я разобрался как делать, вернее придумал и реализовал.
Я даю пользователю форму и кнопку по нажатию он выбирает у себя файл. После выбора файла он летит на сервер и обзывается именем del_тратата , и пишу имя файла в сессию, а после того как он сабмитит форму сервак убирает в названии файла del_ . И в следующий раз когда юзер выбирает файл , перед тем как его положить в папку , скри пт удаляет файлы начинающиеся на del_ чтобы не было мусора. Вот так красиво и просто =) не понимаю ваших заморочек... |
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Возможно стоит заполнить этот пробел. Теперь насчет вопроса, у всех серверов есть IP-адресс, и у всех он разный. Вам нужно узнать IP-адресс сервера которому Вы хотите предоставлять нужную информацию. В PHP есть переменная $_SERVER['REMOTE_ADDR'], в этой переменной содержится настоящий IP-адресс ресурса который к Вам обратился. На эту переменную абсолютно не влияют заголовки которые посылает сервер. Ну теперь все просто, смотрим значение переменной $_SERVER['REMOTE_ADDR'] и если там IP-адресс сервера который заплатил деньги то возвращаем ему echo '{"x":"5", "y":"21"}', а если нет, сообщение об ошибке или на свое усмотрение. |
Цитата:
|
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 01:22. |