За последние 24 часа нас посетил 30851 программист и 1477 роботов. Сейчас ищут 932 программиста ...

непонятно откуда лезет булев тип

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

  1. AndyTitan

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

    С нами с:
    30 июн 2013
    Сообщения:
    301
    Симпатии:
    0
    Адрес:
    Saturn’s moon Titan
    Здрасте :)

    значить имеется следующая конструкция, но пыхыпы ругается мол (Warning: fclose() expects parameter 1 to be resource, boolean given in)
    откуда появляется булев тип в переменой $myOpen ?
    Код (Text):
    1. $myOpen = fopen("test.php","r") || die("Что-то пошло не по плану, не могу открыть файл");
    2. var_dump($myOpen); // <<<<--- туда откуда-то залетает булев тип 0_о
    3. fclose($myOpen);
    4. echo 'файл закрыл';
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Идем в документацию и читаем про fopen():
    т.е. у тебя при попытке открыть файл происходит какаято ошибка. путь неправильный, нет прав на чтение, нет такого файла и т.д.
    надо както то хотябы
    Код (PHP):
    1. if (!file_exists($filename))
    2.  die('file not found');
    3. if ( ($fh=fopen($filename,'r'))!==FALSE) {
    4.  // fread()...
    5.  fclose($fh);
    6. } else {
    7.  die('fopen error');
    8. } 
    в общем читайте доки. там все есть и примеры в том числе
     
  3. AndyTitan

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

    С нами с:
    30 июн 2013
    Сообщения:
    301
    Симпатии:
    0
    Адрес:
    Saturn’s moon Titan
    зачем я написал на форум? может для того чтобы мы разобрались в проблеме?...

    а теперь внимательно ешще раз прочитай синтаксическую ошибку (Warning: fclose() expects parameter 1 to be resource, boolean given in)
    файлы любые подставляй какие угодно, по логике все ок, откуда появляется булев тип в конструкции ?
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    читай мое предыдущее сообщение - до полного просветления.
     
  5. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    парень, ты откуда? ))) не "мы". ты просишь разобраться в твоей проблеме. не забывай про "пожалуйста" и "спасибо".
     
  6. INETCHIK

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

    С нами с:
    13 фев 2014
    Сообщения:
    35
    Симпатии:
    0
    Попытка закрыть файл(поток), который не открыт
    Код (PHP):
    1. bool fclose(resource $handle)
    2.  
    php.net/manual/ru/function.fclose.php
     
  7. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    проблема в том, что топикстартер показал нам измененный код, не тот где он получает ошибку.
    по идее при возврате false должна сработать die() (хотя там уместнее "or", а не "||", но не суть). раз этого НЕ происходит, значит он делает одно, а показывает другое. при этом еще возмущаетс когда ему пытаются помочь.

    вывод: пусть продолжает страдать, он это заслужил.
     
  8. AndyTitan

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

    С нами с:
    30 июн 2013
    Сообщения:
    301
    Симпатии:
    0
    Адрес:
    Saturn’s moon Titan
    Ну так что знатоки, есть еще варианты? ))))
    можете сами попробовать подставить любой локальный факл или удаленный (или-или) к конечном итоге в $myOpen залетает "true", а пыхыпы ругается мол - че ты мне булев тип суешь а не ресурс ))

    Добавлено спустя 2 минуты 52 секунды:
    а почему там уместнее or а не || вроде одно и тоже ?
     
  9. AndyTitan

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

    С нами с:
    30 июн 2013
    Сообщения:
    301
    Симпатии:
    0
    Адрес:
    Saturn’s moon Titan
    Не хотите играть в мои игры, ну и не надо :)

    дело в том, что у оператора "||"очень высокий приоритет даже выше чем у оператора присвоение "=", что же получается? :)
    а получается у нас что с начало происходит сравнение оператором "||" а уже потом присвоение, по этому в переменную собственно и возвращаеться булев тип :) у оператора "or" почти самый низкий приоритет, соответственно все у нас получается :)

    А я пошел дальше страдать и мучатся, я ведь этого заслужил :)
     
  10. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    молодец. т.е. кое-что ты усвоил, хотя и не сказал "спасибо".
     
  11. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    и то не факт)
     
  12. AndyTitan

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

    С нами с:
    30 июн 2013
    Сообщения:
    301
    Симпатии:
    0
    Адрес:
    Saturn’s moon Titan
    Господа, вы зря агритесь на меня :) я только учусь, конкретно эту тему я создал предварительно решив эту проблему(в осознание), после решения тема была поднята тут, мне было интересно на сколько быстро мне расжуют мою ошибку (это ведь основы из основ).
    Дорогой Артудето, ваш комментарий был самым близким к истине (но без пояснений) + вам в копилочку, а спасибо я скажу вам, и всем участникам форума которые проявили интерес к моему вопросу :)
    Что-ж, до скорых встреч, а я тем временем не останавливаюсь, продолжая свой путь в новом для меня мире программирования :)
     
  13. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    ты привел говнокод. я даже смотреть его не стал. и сразу привел пример - КАК ПРАВИЛЬНО работать с fopen() и fclose().
    ВСЕ! если бы меня послушал - проблема была бы решена сразу, ибо говноконструкция просто исчезла бы.
    но НЕТ! ты упорно хотел чтобы мы разгребли твой неработающий код. никто этого делать просто не стал. и в итоге ты НА КОНЕ такой выехал - и утер нам всем носы, показав истинную проблему в ТВОЕМ неправильном коде. молодец чё.
    думаешь ты комуто чтото доказал? да нифига. тебе пытались помочь, а ты тут пальцы веером, сопли пузырями - пытаешься показать нам какие мы нубы и т.д.
    ps ведешь себя как тролль, отсюда и соответствующее отношение. показал свою сущность - не жди хорошего отношения.
     
  14. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    AndyTitan, сударь, а что вы собственно хотели, чтобы решали проблему которой нет?
    Создал он проблему которой нет, по этому даже оформить не получилось ;)
    <матное слово>?
    Что ты куришь?
     
  15. AndyTitan

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

    С нами с:
    30 июн 2013
    Сообщения:
    301
    Симпатии:
    0
    Адрес:
    Saturn’s moon Titan
    в твоё воображение надо добавить не много сатиры и сарказму, возможно эта картина переиграется иначе, в любом случае если я тебя раздражаю, ты можешь смело игнорировать меня и мои посты - я не обижусь :)
    а если попросишь, я никогда не буду обращаться или упомянать твоё имя на этом форуме :)
    я не знал что программисты такой нервный народ :)))

    Добавлено спустя 11 минут 28 секунд:
    хотя... с другой стороны для вас это рутина, и повседневная работа, в моём восприятие это игра так как это новый опыт в моей вселенной. наверное отсюда и такая реакция.
     
  16. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    договорились
     
  17. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Не надо использовать or die никогда. Никогда.
     
  18. AndyTitan

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

    С нами с:
    30 июн 2013
    Сообщения:
    301
    Симпатии:
    0
    Адрес:
    Saturn’s moon Titan
    почему ?
     
  19. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Подумай.

    Добавлено спустя 38 секунд:
    Ответь на вопрос, с какой целью ты используешь эту конструкцию? Ради чего?
     
  20. AndyTitan

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

    С нами с:
    30 июн 2013
    Сообщения:
    301
    Симпатии:
    0
    Адрес:
    Saturn’s moon Titan
    утонул в догадках, с одной стороны, файл подгружается в темп и остается там (но не исполняется) но на этот случай, конечно я буду фильтрировать входные данные, но с другой стороны могут подписать расширение какое угодно, а там залетит на самом деле какой-то вредоносный js или php, но опять же, функция тупо читает а не исполняет.
    Задосить базу? ну то что ошибки я буду перелавливать м обозначать другими константами это ясно, дабы не палить структуры... После die, вовсе заканчивается исполнение, ну так вывести инструкцию в какойнить инклуд.
     
  21. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Давай еще раз.

    Ради чего ты используешь конструкцию or die?
     
  22. AndyTitan

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

    С нами с:
    30 июн 2013
    Сообщения:
    301
    Симпатии:
    0
    Адрес:
    Saturn’s moon Titan
    условный отстойник, где исполнение закончиться если указанные условия не пройдут под стандарт.
     
  23. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Энди, скажи спасибо, и не зли программистов)
     
  24. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    А по какой причине ты хочешь, чтобы выполнение скрипта остановилось?
     
  25. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А как насчет древнего как мир
    Код (PHP):
    1. defined('Какая-то_там_константа_объявляемая_в_точке_входа_приложения') or die();
    ?
    Даже если перед этим редирект выбросить, все равно надо die вызвать по-хорошему.