Три вопроса по гориз. масштабированию

Discussion in 'PHP' started by Apeckou, 1 Sep 2012.

  1. Apeckou

    Apeckou Elder - Старейшина

    Joined:
    23 Jan 2007
    Messages:
    143
    Likes Received:
    11
    Reputations:
    0
    Я тут делал горизонтальное масштабирование и...наткнулся на пару проблем. Подозреваю, что их будет больше, но на данный момент их три:

    1. хочу сделать так чтобы люди могли загружать файл ко мне на сайт и получать на него ссылку. Но делать это все без перезагрузки страницы. И с учетом того, что файл может грузиться на домен отличный от страницы загрузки. Например я со страницы www.mainfile.ru/index.php отправляю форму с файлом на www.server1.mainfile.ru/upload.php. И хочу по окончании загрузки получить ссылку на файл не перезагружая страницу www.mainfile.ru/index.php.
    Раньше я делал так: на странице загрузки была форма, у которой action нацелен на сервер, и форма отправлялась в невидимый фрейм. Когда файл догружался, из фрейма дергалась яваскрипт-функция в parent и создавала объект со ссылкой. Но почему-то у меня перестало получаться "подружить" кроссдоменные яваскрипт-запросы и браузер постоянно ругался что "доступ запрещен" при попытке дернуть из фрейма функцию в parent.
    Посоветуйте как быть?
    -флеш использовать не хочу
    -загрузка файла через аякс? осилит ли этот аякс файлы до 5гб? А кроссдоменность?
    -есть ли кошерный способ подружить два разнодоменных фрейма? мне чето говорили что надо header отсылать и все будет ок - не вышло(

    2. прогресс-бар загрузки файлов. Раньше я использовал uploadprogress. Работало, но чето я с подозрением отношусь к этому модулю. Сейчас вот начинаю осваивать nginx, у него нет каких-нибудь цивильных приблуд для отображения прогресса загрузки?

    3. и самое для меня загадочное: я вдруг понял, что я не знаю как прикрутить капчу =D
    Просто если есть ГЛАВНЫЙ сервер и страница скачивания файла. И есть сервер на котором собсна хранится сам файл. И это два разных домена (mainfile.ru и server1.mainfile.ru). То вот как мне проверить на ВТОРОМ сервере правильно ли введена капча?
    через Сессии этого уже сделать не удастся. Через кукисы тоже. Единственное костыльное решение - сохранять где-то в базе для каждого айпишника какую капчу он ввел. Но это же содомия чистой воды?
     
  2. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    913
    Likes Received:
    480
    Reputations:
    724
    1) Аякс думаю подойдет, но нужно произвести кроссдоменные настройки.
    2) У nginx есть модули для отображения прогресса
    3) reCapcha пробовал?
     
    _________________________
  3. Apeckou

    Apeckou Elder - Старейшина

    Joined:
    23 Jan 2007
    Messages:
    143
    Likes Received:
    11
    Reputations:
    0
    Насчет капчи я тупанул кажется
    Что мне мешает просто перенести генерацию капчи на тот сервер где файл хранится, и оттуда ее дергать. Там же будет прописываться сессия и на нем же проверяться.
    Третий вопрос пока отпал

    3. рекапча - это та гугловская мутатень, в которой я одно слово ввожу "poshelnax" а второе сижу глаза ломаю полчаса разгадываю? Чур меня от такой хрени))) Хенд мейд рулит)


    1. Какие настройки, намекнуть можешь? А то я кроме посылки каких-то хедеров ничего не слышал про такое =\
     
  4. voold

    voold New Member

    Joined:
    12 Aug 2012
    Messages:
    1
    Likes Received:
    3
    Reputations:
    -5
    crossdomain.xml
    в корень, с содержимым:
    вместо * в domain можно подставить домен.
    и при аякс запросе, надо в ответе отдавать
    опять же вместо * можно подставить домен, если не хочешь запросов с других доменов
     
  5. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,582
    Likes Received:
    1,310
    Reputations:
    1,557
    Политика безопасности позволяет обмениваться данными между разными доменами, если свойство document.domain совпадает. Причем, домен должен явно присваиваться свойству document.domain на обоих страницах. Свойство document.domain можно изменить на наддомен или на текущий домен.
    Чтобы со страницы site1.domain.com/page1.htm (или domain.com/page1.htm) получить доступ к странице site2.domain.com/page2.htm, на этих страницах должен быть JS-код
    PHP:
    document.domain 'domain.com';
    На странице domain.com/page1.htm также допустим вариант
    PHP:
    document.domain document.domain;
     
  6. Apeckou

    Apeckou Elder - Старейшина

    Joined:
    23 Jan 2007
    Messages:
    143
    Likes Received:
    11
    Reputations:
    0

    пробовал такую фишку, на обеих страницах прописывал в хедере documet.domain=мойдомен - один и тот же на обеих страницах.
    в ИЕ работало, в опере/хроме - нет
     
  7. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,582
    Likes Received:
    1,310
    Reputations:
    1,557
    Значит что-то было неправильно в коде. Работает во всех браузерах.