php: пропускать большие массивы данных через страницы - PullRequest
0 голосов
/ 11 ноября 2009

Я пытаюсь решить проблему, когда мне нужно передать большие массивы данных на другую страницу, это мой сценарий:

Пользователь вводит свои данные для входа в gmail внутри формы, затем я отправляю эту информацию на страницу ajax, где я проверяю подлинность и извлекаю все контакты, если логин неверен, они могут повторить попытку, но если он аутентифицирован, мне нужно отправьте их на следующую страницу, где я анализирую все электронные письма и проверяю, соответствуют ли они каким-либо пользователям на сайте.

Метод 1 (не работал):

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

Метод 2 (не работал):

Добавьте скрытый ввод с помощью javascript, а затем отправьте форму (также с использованием javascript). Как оказалось, вы не можете отправить форму и вернуть true (изменить страницу), если пользователь не инициирует событие.

Так как же мне продолжить, следует ли мне просто пропустить аутентификацию ajax и отправить их обратно на предыдущую страницу, если она не работает или есть какой-то обходной путь к моей проблеме?

Ответы [ 4 ]

3 голосов
/ 11 ноября 2009

Почему бы вам не сохранить данные в базе данных, MySQL или SQLite, если MySQL вам недоступен. Там вы будете хранить сериализованную версию вашего массива, связанную с идентификатором сеанса пользователя.

Таблица MySQL, о которой я думаю:

id | session_id | данные

http://php.net/manual/en/function.serialize.php о том, как сериализовать ваш массив.

0 голосов
/ 11 ноября 2009

В зависимости от вашего веб-сервера, но переменные сеанса обычно не имеют ограничения по размеру. Apache + PHP вы можете обрабатывать очень большие размеры, вместо этого вы должны заботиться о http://ca.php.net/manual/en/ini.core.php#ini.memory-limit. Кроме того, PHP.ini содержит переменную session.size, которую вы можете настроить. Я не уверен, как это не сработало для вас; Вы использовали $ _SESSION, верно?

Наконец, чтобы сделать лучше постоянное, но быстрое (быстрее, чем база данных) энергозависимое хранилище, я бы порекомендовал использовать memcached Danga. Он очень стабилен, широко используется и имеет оболочки для всех возможных языковых разновидностей.

0 голосов
/ 11 ноября 2009

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

 $("#mydiv").load("secondpage.php", {email1: 'blah'}, function(){
   alert("Submitted everything nicely");
 });
0 голосов
/ 11 ноября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...