|
|
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Дело такое, у меня есть скрипт, точней такая себе "очередь". Нужно чтоб скрипт работал только с одним пользователем, я осуществила это так: Index страница: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. И страница выполнения скрипта: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. И вот назревает проблема, если пользователь выйдет со скрипта пока тот не закончится, скрипт не выполнится до конца и файл txt.txt не удалится, из-за этого страница index.php работать так как нужно не будет. Как сделать чтоб если кто то закрыл страницу и скрипт еще полностью не выполнился, файл txt.txt автоматически удалялся. Еще вопрос на эту же тематику, как ограничить доступ к скрипту? То есть скрипт сработает только если на него человек перешел с index.php а просто так человек войти на него не может. Как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 15:08:04 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Даже и не знаю с чего начать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 15:11:56 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
ShSergeДаже и не знаю с чего начать. уже кончил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 15:17:45 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Предлагаю начать по традиции, с конца ))) Atlinaскрипт сработает только если на него человек перешел с index.php а просто так человек войти на него не можетВ index.php стартуем сессию и записываем в сессионную переменную какой-то признак. В целевом скрипте проверяем этот признак, и, если его нет, то завершаем скрипт сообщением об ошибке или редиректом на индекс. По завершении работы скрипта переменную очищаем или убиваем сессию - это по месту определяться. Менее надежный способ - проверять реферер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 15:20:32 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
По первому вопросу попробуйте тынц . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 15:23:54 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Atlina, Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 15:43:27 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
vkle, с первым вопросом благодаря Вам разобралась. Теперь остался актуальным второй. Можно небольшие примеры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 16:01:14 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 16:13:53 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Набросала такой код: index.php : Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. И файл исполнения: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Проблема в том, что если я один раз побывала на index.php то я и смогу просто так ( вбив в адрес test1.ru/test.php ) один раз зайти на свой скрипт, Нужно 100% чтоб заход был с index.php. В этом весь смысл, это такого рода защита. Если пользователь сможет очень часто входить на test.php ( В оригинальном варианте он запускает разные программы на сервере ), мой сервер просто упадет от перенагрузки. Как поступить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 16:24:47 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Atlina, К сессии можно добавить проверку реферера, однако, этот хидер легко подделывается. Думаю, надо пересматривать алгоритм. Как один из вариантов, если задание уже запущено, то больше его не запускать для этого пользователя. Можно составить таблицу соответствий заданий и пользователей и проверять по ней право на запуск нового задания. Пользователя так же придется идентифицировать по сессионной переменной. В индексе прописываете в таблицу право на запуск задания, а в своем скрипте первым делом отмечаете в таблице что задание выполняется. Соответственно, право запуска при этом будет утрачено. В конце скрипта так же отмечаете что задание выполнено, и это будет указание индексу на возможность разрешения нового задания. Есть еще варианты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 16:47:57 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Имхо проще сделать таблицу очередей, в которую пользователи добавляются в очередь. Проще будет вычислить через сколько запрос пользователя будет обработан, можно ограничивать число мест в очереди для одного пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 16:50:15 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Atlina, Про сессии можно забыть, т.к. юзер просто почистит куки и при повторном заходе на index.php у него будет новая сессия с новым $_SESSION['id'], а следовательно и доступ к test.php. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 16:55:25 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
phpzюзер просто почистит куки...и придется юзеру авторизоваться заново. Тогда и подхватит свои текущие задания. А без авторизации это тухляк полный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 17:01:01 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
vklephpzюзер просто почистит куки...и придется юзеру авторизоваться заново. Тогда и подхватит свои текущие задания. А без авторизации это тухляк полный. Ну это само собой разумеется. Правда про авторизацию речи не было, был только вопрос между строк: что такое сессия?! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 17:17:54 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Тогда наверно сейчас стоит сделать авторизацию и по ней уже определять выполняет ли пользователь задание, или нет. Сейчас буду пробывать =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 17:45:00 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Возьмите фреймворк ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 18:19:17 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Yii например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 18:19:33 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Atlina, Без авторизации с "привязкой по IP" (про прокси отдельная песня): Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. Про прокси отдельная песня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 19:28:32 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
phpz, очень хороший скрипт у Вас, но мне хотелось бы его чуть модифицировать, то есть если У Вас один пользователь переходит два раза по ссылке, то сначала исполняется его первый запрос ( пишет удачно ), потом исполняется второй его запрос. Как бы это реализовать со всеми пользователями? То есть сначала по такому же принципу исполнится скрипт у одного пользователя, потом у второго. Надеюсь вы поняли. Еще раз спасибо за скрипт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 21:51:17 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Atlina, Уж сколько способов насыпали... И на файле блокировку держать, и в БД очередь строить... Ничего не подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 22:06:10 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
То есть когда один пользователь занял "поток", все остальные ждали когда он его освободит. И потом только входили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 22:08:52 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
vkle, ну вариант с этим скриптом подходит очень, помогите модернизировать его пожалуйста :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 22:10:48 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
авторТолько НЕ НАДО ничего выводить, никаких там echo или print после flush() !!! http://php.net/manual/ru/function.ignore-user-abort.php ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 22:13:41 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Ребята, мучаюсь уже около 3 дней над этим "мини движком", помогите его закончить уже. Вот это последний технический вопрос который не могу решить, все остальное дизайн. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 22:18:19 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Atlinavkle, ну вариант с этим скриптом подходит очень, помогите модернизировать его пожалуйста :)Ну на блокировке файла сделайте... Пример #1 почти для Вас. Только вместо Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 22:35:39 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Пожалуй, дополню и поясню. Способ, что выше предложил, одновременно и простой и дурацкий. Простой - потому что эффективен для поставленной задачи и укладывается в десяток строк кода. Дурацкий - потому что пользователю будет тупо выдаваться отлуп, и этот самый пользователь, тыкаясь на сервер в надежде найти "окно", будет злиться на Вас все больше с каждым неудачным тычком. Таким образом, способ можно признать годным лишь при почти полном отсутствии конкуренции пользователей. Вроде защиты от случайных ошибок. При сколько-нибудь заметной конкуренции следует строить очередь в БД, а скрипт-обработчик очереди запускать по крону. Он (скрипт-обработчик) должен брать из БД задание, обрабатывать, и складывать куда-то результат (в базу или в файлы), делая в базе пометку о начале выполнения и завершении задания. Таким образом, пользователю достаточно будет просто один раз "оставить заявку", а потом наведываться либо за получением статуса [в очереди | выполняется], либо за готовым результатом. Так что, по-хорошему, от кардинального пересмотра алгоритма Вам не уйти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 22:48:51 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. Попросила друга зайти вместе со мной, так оно и друга обработало и меня. Обоим написало "Работаю...". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 23:10:30 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
vkle , ну как бы очереди большой не будет, я думала сделать так: Пользователь нажимает кнопку, крутится окошко бразуера ( пользователя это устроит ), он ждет свое время и тогда получает результат. Все вроде просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 23:14:22 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
AtlinaПопросила друга зайти вместе со мной, так оно и друга обработало и меня. Обоим написало "Работаю...". Все правильно, т.к. у вас и у друга разные айпи-адреса (см. 12772943 ). Если вы хотите, чтобы не было доступа никому до тех пор, пока скрипт не отработает до конца, то запираете файл с уникальным именем для целевой задачи и не отпускаете его. Проверка $lifetime обязательна, чтобы не получилось так, что файл вообще никогда не удалится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 23:36:33 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
phpz, можно хоть чуть примеров? А то почти не имею понятия о чем Вы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 23:41:38 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
phpz, Причем тут различные адреса? Блокировка ставится до проверки айпи. Atlina, Файл lock.txt с указателем $fp в начале лочим, в конце отпираем. Нафига с этим указателем производить какие-то действия в середине? Поменьше копипасты, побольше осмысленности в коде. Не бойтесь писать ручками и думать над тем, что пишите. Давайте переменным однозначно понятные имена, вроде $fp_lock, $fp_result. В это трудно поверить, но вероятность путаницы упадет на пару порядков ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 23:48:30 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
vkle, я просто думала модифицировать ранние написаный код, то есть там для одного пользователя, а мне сделать так для всех по очереди. Сейчас попробую без излишек. =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 00:10:40 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
Испытываю этот код: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Опять же таки с двух разных ip я и мой друг смогли войти. Такое впечатление что скрипту наплевать на ограничения файла и т.п. Возможно ли сразу выводить ошибку, то есть как только человек вошел, сразу проверяется заблокирован ли файл и тогда скрипт или завершается, или продолжает работать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 00:32:34 |
|
||
|
Экстренное завершение скрипта и запрещение переходов.
|
|||
|---|---|---|---|
|
#18+
AtlinaСейчас попробую без излишек. =) Вот без всяких излишек. Отказывает в доступе, если файл залочен и не устарел: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 00:33:41 |
|
||
|
|

start [/forum/search_topic.php?author=dzeday&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
get settings: |
12ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
297ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 576ms |
| total: | 1019ms |

| 0 / 0 |
