За последние 24 часа нас посетили 34942 программиста и 1695 роботов. Сейчас ищут 1002 программиста ...

Продолжить выполнение кода

Тема в разделе "PHP для новичков", создана пользователем Howl, 26 май 2010.

  1. Howl

    Howl Активный пользователь

    С нами с:
    16 фев 2010
    Сообщения:
    90
    Симпатии:
    0
    Как можно продолжить выполнение HTML кода после функции "die"? а то после этой функции страница обрывается, слетает дизайн, таблицы и т.д.
     
  2. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Функция говорящая. Хоть вопрос и философский, но считается, что после смерти жизни нет.
     
  3. Howl

    Howl Активный пользователь

    С нами с:
    16 фев 2010
    Сообщения:
    90
    Симпатии:
    0
    тогда как быть? может есть что-то, что хоть как-то продолжит дизайн страницы?)
     
  4. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Моё такое мнение, что эта функция там не просто так. Надо смотреть как оно там всё у вас устроено, а потом думать.
     
  5. Howl

    Howl Активный пользователь

    С нами с:
    16 фев 2010
    Сообщения:
    90
    Симпатии:
    0
    обычный обработчик формы регистрации, if "действие" else "действие" or die. ну это в общих чертах.
     
  6. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    Howl
    как вариант, убрать эту функцию.
     
  7. Howl

    Howl Активный пользователь

    С нами с:
    16 фев 2010
    Сообщения:
    90
    Симпатии:
    0
    iliavlad
    и потом показать все ошибки MySQL пользователям? включая директории, и, возможно, некоторые даже доберутся до конфигов... что потом?
    имхо, это не вариант, а дыра в защите
     
  8. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    потом им еще надо будет показать номер пластиковой карточки с цвв кодом))

    а зачем показывать пользователям ошибки? у вас вывод ошибок регулируется наличием функции die()? может я просто чего-то недопонимаю.
     
  9. Howl

    Howl Активный пользователь

    С нами с:
    16 фев 2010
    Сообщения:
    90
    Симпатии:
    0
    iliavlad
    функцию die я использую как конец сценария и вывод ошибки (своими словами описываю причину остановки скрипта), при обработке формы, если в процессе произошли ошибки... как я понимаю, функции exit и die идентичны?

    или есть какие-то подобные функции, которые останавливают конкретный скрипт, а остальные пропускают, или хотя бы дизайн не трогали)
     
  10. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    die() не может не трогать дизайн. Очень злая функция. А вот с остальными можно попробовать договориться...
     
  11. Howl

    Howl Активный пользователь

    С нами с:
    16 фев 2010
    Сообщения:
    90
    Симпатии:
    0
    ShamahN
    с какими? if, else?
     
  12. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Ну так она и есть конец сценария. Если тебе надо обрывать сценарий после ошибки, то ты используешь die.
    А если не надо - можешь использовать echo.
    Но ты пользуешься die и спрашивать как бы так сделать, чтобы сценарий не обрывался. Никак.

    UPD
    А, вот что еще. Ошибки mysql выдаются или не выдаются на экран не потому что у тебя есть или нет die. Эта функция к ошибкам отношения не имеет, она только обрывает сценарий и пишет твое сообщение. Убрать ошибки с экрана это error-reporting и вообще Errors and Logging Configuration Options
     
  13. Howl

    Howl Активный пользователь

    С нами с:
    16 фев 2010
    Сообщения:
    90
    Симпатии:
    0
    error_reporting использую, но с echo не получается, выводятся остальные сообщения, не имеющие к запросу отношения... поэтому приходится использовать die. ладно, придется использовать обработчик в отдельный странице.

    спасибо всем за разъяснение)
     
  14. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    сдаётся мне, что ноги растут отсюда
     
  15. Howl

    Howl Активный пользователь

    С нами с:
    16 фев 2010
    Сообщения:
    90
    Симпатии:
    0
    Luge
    а в чем собственно сходство между двумя темами? там о проблеме с записями в БД, здесь о функции, которая останавливает сценарий...
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это именно использовать die в таком контексте - дыра, при чем в голове
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    волшебная магическая конструкция if


    В случае с mysqli можно сделать mysqli_report(MYSQLI_REPORT_OFF);
    как поступать в других случаях - я не знаю.
     
  18. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    ну, ошибся я. Бывает ;)
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    только что пришло в голову, что автор может не в курсе try
     
  20. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    да не. просто в книжках и мануалах пишут mysql_connect() || die()
    вот когда начинаешь так делать на сайте с шаблоном и получается, что "дизайн ломается".
    да еще и дыра в безопасности из-за die() ))

    Howl
    попробуйте

    Код (Text):
    1. <?php
    2. echo 'header';
    3. if (mysql_connect()) {
    4.   echo 'connected';
    5. } else {
    6.   if (defined('APP_ENV') && 'development' === APP_ENV) {
    7. echo mysql_error();
    8.   }
    9.   echo 'Ваш запрос обрабатывается... Посмотрите пока страничку "О нашем сайте".';
    10. }
    11. echo 'footer';
    в таком варианте подвал странички будет выводится, дизайн не будет ломаться и дыры в безопасности не будет.
     
  21. Howl

    Howl Активный пользователь

    С нами с:
    16 фев 2010
    Сообщения:
    90
    Симпатии:
    0
    iliavlad
    спасибо, попробую
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Howl
    я вам все же советую ознакомиться с такой штукой как try