Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > Ошибки Notice: нужна помощь... |
Автор: bscint13 24.6.2014, 01:54 | ||||||||||||||
Здравствуйте! Я не программист, не начинающий даже, для того, кто не в курсе. Поэтому прошу реальной помощи, а не пустых упрёков, конкуренцию не собираюсь никому составлять. Просто сложились так обстоятельства, что приходится делать самому. Исправил или как правильнее будет, даже не знаю... скрипт версии PHP 4.2.0 подогнал для работы в PHP 5.3. Работает вроде бы всё корректно, однако решил сделать вывод всех ошибок через .htaccess и... занялся поиском в сети способов решения... честно говоря почти ничего не нашёл из подобного... Попробовал применить имеющиеся примеры CMS и запутался ещё больше... Ниже привожу фрагменты кода скрипта и формулировку возникшей ошибки. Кто может и хочет, помогите, пожалуйста... Добро никогда не забывается и со временем - в долгу не останусь... Итак... 1. В файле config.php напротив session_start(); выдало: Notice: A session had already been started - ignoring session_start() in Поставил перед session_start(); - собаку @ - получилось @session_start(); Больше ошибку не выдаёт... А насколько это правильно??? даже не представляю... 2. следующий файл, фрагмент кода выглядит так:
Выдало: Notice: A session had already been started - ignoring session_start() in напротив снова же session_start(); здесь использовал такой вариант...
Ошибку больше не выдаёт, но насколько это правильно??? Далее 4 строка
здесь выдало: Notice: Undefined index: HTTP_REFERER in Применил такое решение:
Правильно ли это??? Всё, что использовал сам, применил по примерам, которые нашёл в сети. 3. А вот в данных фрагментах даже не знаю, что делать...
строка
Здесь выдало: Notice: Undefined index: user in Оригинал данного фрагмента кода в PHP 4.2.0 выглядит так:
Ошибок много, однако пока остановлюсь на этих трёх. Буду очень благодарен и признателен за реальную помощь и советы... Надеюсь на понимание! |
Автор: ksnk 24.6.2014, 10:14 | ||||||
При переписывании с 4-ки на 5-ку и далее на 5.3++ будет настолько много вылезших ошибок, что разумно переписать все заново ;) 1.2. Для session_start все сложно ![]() С одной стороны - использование собаки - зло. С другой стороны - понять стартовала сессия или нет - довольно просто. isset($_SESSION) вполне достаточно, но вот только если кто-то ранее не присвоил внаглую этому массиву какое-то значение. Есть гарантия, что в проекте кто-то там чего-то там не присвоил? Может оказаться, что (session_id()=="") - вполне корректный признак того, что сессия еще не стартовала, но и тут есть некоторые нюансы. В общем, если бы приспичило таким заниматься лично мне - я бы сочинил что-то вроде
добавил бы функцию в файл функций проекта и все start_session() заменил на sessionstart(). Хотя именно в этом месте, я бы не поморщился, если бы увидел и @session_start(); Главное - единообразие. Нужно чтобы следующему программисту, который придет ковырять проект - было попроще разгребать куски кода ![]() 3. в "переписанном" коде пропало описание SESSION как глобальной переменной, что делает этот код не полностью таким же как старый. Вероятно, должно быть что-то вроде такого
Добавлено через 2 минуты и 33 секунды
так будет, imho, более правильно. Просто потому, что после такого оператора значение $ref будет определено при любом раскладе. |
Автор: bscint13 30.6.2014, 14:44 | ||||||||||||||||||||
Доброго времени суток! Приношу извинения за долгое отсутствие, так сложились обстоятельства, надеюсь в дальнейшем быть более активным. Благодарю Вас ksnk за приведенные примеры и советы, а также за Ваше неравнодушие... ksnk Вы совершенно правы, скрипт обязательно будет писаться с нуля, т.к. помимо того что делаю сейчас сам у него будут более глобальные задачи и цели - такого не было ещё в сети на протяжении последних 14 лет (собственно ранее тем более) - из просторов паутины в реальность... Итак, вернусь к наболевшему, собственно Вашим примерам... всё по порядку... 1. Функция startsession(); Прописал в файле скрипта с функциями, как и Вы рекомендовали
и заменил session_start(); на startsession(); как полагаю замену следует произвести во всех файлах, где указан session_start(); Там где выдавало ошибку Notice уже не выдает, а вот в других местах, это файл скрипта - начало регистрации и другие... выдаёт: Fatal error: Call to undefined function startsession() in Как её исправить или стоит вернуть назад session_start(); для файлов где стало выдавать Fatal error:??? 2. По примеру
Благодарю, ошибку больше не выдаёт и возник вопрос, используя данный пример, точнее можно его применить и к другим возникшим ошибкам по аналогии??? К примеру, вот такая ошибка... Notice: Undefined index: sponsor_is in
По вероятности должно подойти? Ошибка исчезает, но правильно ли это будет??? 3. И по SESSION... кстати в чём разница между $SESSION и $_SESSION ??? искал, но не нашёл... Указанный Вами пример или решение не подойдёт... дело в том, что в скрипте как бы копался один программист, боле 1,5 лет компоссировал мозги и в итоге так и не сделал ничего, за исключением некоторых моментов... $SESSION в global не приемлема... Итак сам код в котором выдаёт ошибку в строке
А что если применить вариант из п.2 и в строке
Ошибку больше не выдаёт, однако ПРАВИЛЬНО ЛИ ЭТО??? Буду очень Вам ksnk признателен за советы и помощь и как говорил ранее - в долгу не останусь... добро никогда не забывается и поощряется... И... если Вам не сложно будет, интересует решение подобных ошибок, даже не приложу ума как к ним подойти... 4. Три ошибки в двух строках 1-й и 4-й
Notice: Undefined variable: CONFIG in Z:\home\work.net\www\stdlibre.php(71) : eval()'d code on line 1 Notice: Trying to get property of non-object in Z:\home\work.net\www\stdlibre.php(71) : eval()'d code on line 1 Notice: Undefined variable: codat in строке 4 Если перед $codat поставить @ ошибка в 4-й строке пропадает, а есть ли другое решение? Подобные ошибки в таком коде
Notice: Undefined variable: CONFIG in Z:\home\work.net\www\stdlib.php(71) : eval()'d code on line 4 Notice: Trying to get property of non-object in Z:\home\work.net\www\stdlib.php(71) : eval()'d code on line 4 5. Notice: Undefined variable: errormsg in строке 4
Наверное многое прошу, понимаю... однако буду очень благодарен за помощь и решение данных ошибок... Искренне надеюсь на дальнейший диалог и сотрудничество. |
Автор: bscint13 1.7.2014, 00:06 |
Благодарю за ответ... честно говоря даже нечего комментировать... всё равно что физик историку напишет формулы в качестве объяснений... Конечно, наивно было полагать... что вот так кто-то поможет с решением... По Вашему 1 ответу... файл с функциями подключён... в противном случае просто бы не работал скрипт и соответственно не было ошибок... я не настолько грамотен и опытен, хотя со временем, кто знает... А вот дальше вообще ни о чём... во всяком случае расценить можно вот возможно или так... Хорошо, благодарю... ![]() |
Автор: bscint13 10.7.2014, 17:03 | ||||||
Вернёмся к предпоследнему посту... Итак, есть код:
и есть ошибка типа: Notice: Undefined variable: codat in строке 4 P.S. Данный код единственный и находится в файле с различными функциями в библиотеке скрипта. Загружается через файл конфигурации в корне сайта методом require(); $codat присутствует только в этом коде и больше нигде в файлах скрипта не фигурирует... ВОПРОС... Как её задать и где прописать... Заранее благодарен за помощь... Если собакой @ нельзя устранить данную ошибку, то как её можно исправить? И... второй вопрос...
и соответственно ошибка... Notice: Undefined index: sponsor_is in Свой вариант или способ ранее указал.... А каково правильное решение всё же...??? Это правильно, то что Вы указали, ksnk...???
|
Автор: Aliance 10.7.2014, 17:16 | ||||
1. У вас цикл не запускает ни одной итерации, отсюда и переменная codat не объявляется. Не запускается цикл потому, что strlen($output) возвращает 0. Есть два пути решения проблемы: а) перед телом цикла объявить пустую переменную codat - но тогда если итераций цикла не будет - выведется пустой яваскрипт код. Но зато без ошибок. (это не правильный путь, он устранит пхп фатал, но не устранит логическую ошибку) б) проверять на длину строки output, если она пустая - сразу же возвращать пустоту. Выглядеть будет примерно так:
2. опять-таки, если говорить о методе избавления от пхп фатала, но делать нужно так:
Но на сколько это логически верно вам мало кто скажет, не погружаясь в ваш скрипт. |
Автор: bscint13 10.7.2014, 17:53 |
Благодарю Вас, Aliance за помощь. По первому пока не знаю, как проверю - отпишусь обязательно (данная функция, код, кодируют определённые фрагменты кода в файлах скрипта), а вот второй вопрос, Вы правы - это единственно верное решение... А Вы не подскажите решение вопроса с session_start(); - описанный чуть ранее в моих постах??? Вариант предложенный ksnk при замене во всех файлах выдаёт другую ошибку... |
Автор: bscint13 10.7.2014, 18:40 | ||
Parse error: syntax error, unexpected T_EMPTY in on line 9 Перед двойными кавычками ставил слеш \, однако и ошибка не исчезла и скрипт не запускается... В чём подвох??? ![]() |
Автор: bscint13 10.7.2014, 22:11 | ||
Нашёл эту ошибку в строке 9... это $return, здесь лишнее, скорее опечатка ... $ или я ошибаюсь??? Теперь скрипт запускается, однако вылезла другая и совсем непонятная мне ошибка... Notice: Uninitialized string offset: 750 in on line 7
|
Автор: bscint13 10.7.2014, 23:23 | ||||
Aliance, вероятно я поторопился с благодарностью и был очень невнимателен... Вот Ваше решение, собственно код:
опечатка не в счёт, механически бывает... строка 9 - $return А вот код оригинала...
Вопрос... куда девалась $tcodat????? |
Автор: _zorn_ 11.7.2014, 02:38 | ||
Не так. Просто при первой итерации $codat не существует и конструкция .= выдает нотайс. Все там правильно. Он не нужен. У меня другой вопрос, а цикл точно правильный. Он тупо повторяет последний символ из $output. Не должен ли он выглядеть так ?
И еще, $output это масив или строка ? Если массив, то почему strlen ? Если строка, то к чему bin2hex ? |
Автор: Aliance 11.7.2014, 08:10 |
$output[$i] вместо $output[$count] и return без знака доллара. В остальном все ок должно быть ![]() Это строка. а bin2hex нужна для конвертации строки посимвольно в ASCII |
Автор: bscint13 11.7.2014, 12:52 | ||
Благодарю Вас, _zorn_ и Aliance за помощь в решении данного вопроса, ошибки устранены... Однако вопросов у меня достаточно и если не жалко и не обременительно, прошу помочь... Есть вот файлик скрипта с таким кодом...
Строка 4 была изменена, до изменения выдавало четыре ошибки, сейчас одну, просто не знаю как правильно поступить, лузер всё же... NOTICE: Undefined variable: REMOTE_ADDR in on line 16 Просто удалить $REMOTE_ADDR или есть другое решение??? |
Автор: bscint13 12.7.2014, 15:25 |
Исходя из всеобще-солидарного молчания или безразличия единственно правильное решение - это удаление $REMOTE_ADDR из строки в 16-й линии... Или всё же есть другое решение??? ![]() |
Автор: _zorn_ 14.7.2014, 08:50 | ||
перед 15 строкой. |
Автор: bscint13 14.7.2014, 11:15 | ||||||||
Благодарю _zorn_!!! Если правильно понимаю, данный код необходимо прописать перед 15 строкой, а в 16-й - удалять ничего не надо, правильно??? И, если можно, всё же, подскажите, что это за ошибки и как с ними бороться??? Хотя бы на примере... Notice: Undefined variable: CONFIG in Z:\home\work.net\www\stdlib.php(71) : eval()'d code on line 4 Notice: Trying to get property of non-object in Z:\home\work.net\www\stdlib.php(71) : eval()'d code on line 4
Заранее признателен за помощь и советы... ![]() |
Автор: Aliance 14.7.2014, 11:48 |
bscint13, наймите уже профессионала и заплатите ему за работу. Вы задаете такие вопросы, что вам их и не объяснить в две строчки, потому что каждому тут понятно, что вам не особо-то и нужно в этом разбираться, вам нужно чтобы работало. И получается что топик из "подскажите" перерос в "перепишите за меня бесплатно". А людям это не по душе. Что касается ваших ошибок (не понятно зачем вы эти два листинга привели - они к ошибкам не относятся) - то там же все написано. Первый нотик - неопределенная переменная, а второй - обращение в свойству не объекта (не определенная переменная объекта). Кроме того везде глобальные переменные и прочая древность. Это все нужно писать заново. |
Автор: bscint13 14.7.2014, 13:32 |
Aliance... В жизни бывают разные ситуации... и как Вы думаете, если бы я имел возможность заплатить, торчал бы здесь в ожиданиях??? Да, и до "перепишите за меня бесплатно" ох как далеко... К кому то знания приходят из книг, а к кому-то - временем без чтения книг, полных воды... Были бы наглядные примеры, я бы и не обращался, однако их нет и поэтому я здесь... Благодарю Вас за разъяснения по данным ошибкам... ![]() ![]() Наверное форумы для этого и существуют??? Или у них другое предназначение??? Благодарю за внимание! ![]() ![]() ![]() P.S. Да... а кого давит жаба - может просто мимо пройти, не помогая... Интеллект - это не привилегия... могу и дальше продолжить, кто знает поймёт... |
Автор: bscint13 14.7.2014, 15:19 | ||||||
Очень надеюсь, что это последний мой вопрос или просьба в помощи... описывал в самом начале данной темы, но так и не пришёл к правильному решению... Есть два кода... первый в файле конфигурации...
и второй в библиотеке функций скрипта...
session_start(); присутствует и в других файлах, но ошибку выдаёт только по указанным двум страницам... Суть ошибки... Notice: A session had already been started - ignoring session_start() in Я использовал в обоих вариантах...
Правильно ли это? Если нет... то почему... и есть одно, что смущает - в файлах скрипта отсутствует где-либо $_SESSION, есть только $SESSION Надеюсь всё же на понимание и помощь... ![]() |
Автор: bscint13 16.7.2014, 00:06 |
Как выразился Aliance... людям это не по душе... понятно... Однако, Вы забыли простую истину... добро всегда вознаграждается... Если сейчас не могу отблагодарить, это не говорит о том, что когда будет возможность не сделаю этого... не все же иудочеловеки...??? ![]() Всё же очень надеюсь на помощь по последнему моему посту с session_start |
Автор: ksnk 16.7.2014, 10:05 |
bscint13, Какая задача решается? Если - повышение собственного уровня владения PHP - то задача решается не с той стороны. Нужно изучать более современные способы программировать на PHP. Начинать изучение программирования с ###кодинга - неправильно ![]() Если задача - "убрать нотисы из лога", то смысл этой задачи мне лично непонятен. Правильное решение - переписать все заново. Еще одно правильное решение - заткнуть вывод нотисов вообще. Медленное и печальное затыкание каждой конкретной точки протечки - источник дополнительных ошибок, не меняющий ни логику работы ни скорость и не приносящий пользу самому программисту. Бессмысленная потеря времени. |
Автор: bscint13 31.7.2014, 13:04 |
Уважаемый ksnk! Вновь приношу извинения за столь поздний ответ, обстоятельства... Решается очень простая задача... запуск проекта своими силами... для заработка средств на его написание с нуля и реализации, постепенно, задуманной идеи... А вот совершенствовать свой PHP я совершенно не собираюсь, во-первых у меня нет своего PHP, я его не изучал и не собираюсь изучать, а во-вторых - считаю каждый должен заниматься своим делом и выполнять своё предназначение, да и в третьих - форумы и существуют для того, чтобы находить ответы на интересующие вопросы и помощь, а не выслушивать различные нравоучения и упрёки... Не хотите помочь, привести подобный пример на крайний случай, пройдите мимо (это не в Ваш огород камень, Вам лично я благодарен за те советы и помощь, оказанные ранее и поверьте, если обстоятельства сложатся благополучно, я этого не забуду... никогда...) В принципе полагаю доступно дал ответ на Ваш вопрос...??? |
Автор: IgorIV 31.7.2014, 19:12 |
Вот только не надо таких слов. Все уже поняли, что ты пытаешся деньги заработать. Поэтому, пенять на то, что люди не хотят переписывать за тебя весь скрипт - это неэтично. А вопрос - для чего существуют форумы - задают обычно те, кто хочет выехать на чужом горбе. Вопрос не в том, что ты не знаешь, в данном случае PHP, а в том, что ты и не хочешь знать. Сейчас вопрос по PHP, потом по Javascript, потом по платежке и т.д. Так какое твоё предназначение? Каким делом ты занимаешся? Зачем тебе PHP? И что у тебя совсем денег нет? Нет денег, возьми в долю ... |
Автор: bscint13 31.7.2014, 20:20 | ||
Каждый судит по себе... а насчёт в долю... я уж лучше сам, хватило за 14 лет... долевиков - партнёров ![]() ![]() |
Автор: IgorIV 31.7.2014, 23:58 |
Ой не всегда, зачастую некоторым людям проще напрячь других, чем немного подумать самому. Да согласен, бывают разные ситуации, но ты с начала года пытаешься залатать некий скрипт, между тем как за это время можно было новый написать, не с нуля, но по аналогии со старым. И да, я сужу по себе. Если у меня есть уважение к другим пользователям форума, то я не буду спрашивать очевидные вещи. - Профессор! У меня программа не работает! Что делать, где ошибка? - Очевидно в генах ... |
Автор: bscint13 1.8.2014, 00:19 | ||
![]() ![]() ![]() Знаешь, умный и мудрый прошёл бы мимо... а про гены, это ты про себя написал??? ![]() ![]() ![]() |
Автор: Aliance 1.8.2014, 08:13 | ||
|