![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
bscint13 |
|
||||||||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 13.2.2014 Репутация: нет Всего: нет |
Здравствуйте!
Я не программист, не начинающий даже, для того, кто не в курсе. Поэтому прошу реальной помощи, а не пустых упрёков, конкуренцию не собираюсь никому составлять. Просто сложились так обстоятельства, что приходится делать самому. Исправил или как правильнее будет, даже не знаю... скрипт версии 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 |
|
||||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
При переписывании с 4-ки на 5-ку и далее на 5.3++ будет настолько много вылезших ошибок, что разумно переписать все заново ;)
1.2. Для session_start все сложно ![]() С одной стороны - использование собаки - зло. С другой стороны - понять стартовала сессия или нет - довольно просто. isset($_SESSION) вполне достаточно, но вот только если кто-то ранее не присвоил внаглую этому массиву какое-то значение. Есть гарантия, что в проекте кто-то там чего-то там не присвоил? Может оказаться, что (session_id()=="") - вполне корректный признак того, что сессия еще не стартовала, но и тут есть некоторые нюансы. В общем, если бы приспичило таким заниматься лично мне - я бы сочинил что-то вроде
добавил бы функцию в файл функций проекта и все start_session() заменил на sessionstart(). Хотя именно в этом месте, я бы не поморщился, если бы увидел и @session_start(); Главное - единообразие. Нужно чтобы следующему программисту, который придет ковырять проект - было попроще разгребать куски кода ![]() 3. в "переписанном" коде пропало описание SESSION как глобальной переменной, что делает этот код не полностью таким же как старый. Вероятно, должно быть что-то вроде такого
Добавлено через 2 минуты и 33 секунды
так будет, imho, более правильно. Просто потому, что после такого оператора значение $ref будет определено при любом раскладе. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
||||||
|
|||||||
bscint13 |
|
||||||||||||||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 13.2.2014 Репутация: нет Всего: нет |
Доброго времени суток!
Приношу извинения за долгое отсутствие, так сложились обстоятельства, надеюсь в дальнейшем быть более активным. Благодарю Вас 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
Наверное многое прошу, понимаю... однако буду очень благодарен за помощь и решение данных ошибок... Искренне надеюсь на дальнейший диалог и сотрудничество. |
||||||||||||||||||||
|
|||||||||||||||||||||
ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Нужно подключить файл с функциями. Ну да, так же
Оператор сделает примерно то же, но при этом не сгенерирует ошибку. $SESSION - личная переменная, заведенная, вероятно, чтобы хранить какую-то переменную. Ее нужно определять через global, чтобы увидеть внутри функции, $_SESSION - супер-глобальная (не нужно определять через global) переменная, в которой храниться образ сессии. Это две большие разницы. 4. там пока только одна ошибка. Первые две возникают в stdlibre.php(71) по каким-то другим причинам, которые кодом не отображены. $codat не определен. Нельзя использовать неопределенное значение. Можно, например, перед циклом присвоить ему пустое значение. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
||||
|
|||||
bscint13 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 13.2.2014 Репутация: нет Всего: нет |
Благодарю за ответ... честно говоря даже нечего комментировать... всё равно что физик историку напишет формулы в качестве объяснений...
Конечно, наивно было полагать... что вот так кто-то поможет с решением... По Вашему 1 ответу... файл с функциями подключён... в противном случае просто бы не работал скрипт и соответственно не было ошибок... я не настолько грамотен и опытен, хотя со временем, кто знает... А вот дальше вообще ни о чём... во всяком случае расценить можно вот возможно или так... Хорошо, благодарю... ![]() Это сообщение отредактировал(а) bscint13 - 1.7.2014, 00:26 |
|||
|
||||
bscint13 |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 13.2.2014 Репутация: нет Всего: нет |
Вернёмся к предпоследнему посту...
Итак, есть код:
и есть ошибка типа: Notice: Undefined variable: codat in строке 4 P.S. Данный код единственный и находится в файле с различными функциями в библиотеке скрипта. Загружается через файл конфигурации в корне сайта методом require(); $codat присутствует только в этом коде и больше нигде в файлах скрипта не фигурирует... ВОПРОС... Как её задать и где прописать... Заранее благодарен за помощь... Если собакой @ нельзя устранить данную ошибку, то как её можно исправить? И... второй вопрос...
и соответственно ошибка... Notice: Undefined index: sponsor_is in Свой вариант или способ ранее указал.... А каково правильное решение всё же...??? Это правильно, то что Вы указали, ksnk...???
Это сообщение отредактировал(а) bscint13 - 10.7.2014, 17:09 |
||||||
|
|||||||
Aliance |
|
||||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
1. У вас цикл не запускает ни одной итерации, отсюда и переменная codat не объявляется. Не запускается цикл потому, что strlen($output) возвращает 0. Есть два пути решения проблемы:
а) перед телом цикла объявить пустую переменную codat - но тогда если итераций цикла не будет - выведется пустой яваскрипт код. Но зато без ошибок. (это не правильный путь, он устранит пхп фатал, но не устранит логическую ошибку) б) проверять на длину строки output, если она пустая - сразу же возвращать пустоту. Выглядеть будет примерно так:
2. опять-таки, если говорить о методе избавления от пхп фатала, но делать нужно так:
Но на сколько это логически верно вам мало кто скажет, не погружаясь в ваш скрипт. |
||||
|
|||||
bscint13 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 13.2.2014 Репутация: нет Всего: нет |
Благодарю Вас, Aliance за помощь. По первому пока не знаю, как проверю - отпишусь обязательно (данная функция, код, кодируют определённые фрагменты кода в файлах скрипта), а вот второй вопрос, Вы правы - это единственно верное решение...
А Вы не подскажите решение вопроса с session_start(); - описанный чуть ранее в моих постах??? Вариант предложенный ksnk при замене во всех файлах выдаёт другую ошибку... Это сообщение отредактировал(а) bscint13 - 10.7.2014, 18:05 |
|||
|
||||
bscint13 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 13.2.2014 Репутация: нет Всего: нет |
Parse error: syntax error, unexpected T_EMPTY in on line 9 Перед двойными кавычками ставил слеш \, однако и ошибка не исчезла и скрипт не запускается... В чём подвох??? ![]() |
|||
|
||||
bscint13 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 13.2.2014 Репутация: нет Всего: нет |
Нашёл эту ошибку в строке 9... это $return, здесь лишнее, скорее опечатка ... $ или я ошибаюсь???
Теперь скрипт запускается, однако вылезла другая и совсем непонятная мне ошибка... Notice: Uninitialized string offset: 750 in on line 7
|
|||
|
||||
bscint13 |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 13.2.2014 Репутация: нет Всего: нет |
Aliance, вероятно я поторопился с благодарностью и был очень невнимателен...
Вот Ваше решение, собственно код:
опечатка не в счёт, механически бывает... строка 9 - $return А вот код оригинала...
Вопрос... куда девалась $tcodat????? |
||||
|
|||||
_zorn_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: 6 Всего: 12 |
Не так. Просто при первой итерации $codat не существует и конструкция .= выдает нотайс. Все там правильно. Он не нужен. У меня другой вопрос, а цикл точно правильный. Он тупо повторяет последний символ из $output. Не должен ли он выглядеть так ?
И еще, $output это масив или строка ? Если массив, то почему strlen ? Если строка, то к чему bin2hex ? Это сообщение отредактировал(а) _zorn_ - 11.7.2014, 02:43 |
|||
|
||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
$output[$i] вместо $output[$count] и return без знака доллара. В остальном все ок должно быть
![]() Это строка. а bin2hex нужна для конвертации строки посимвольно в ASCII |
|||
|
||||
bscint13 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 13.2.2014 Репутация: нет Всего: нет |
Благодарю Вас, _zorn_ и Aliance за помощь в решении данного вопроса, ошибки устранены...
Однако вопросов у меня достаточно и если не жалко и не обременительно, прошу помочь... Есть вот файлик скрипта с таким кодом...
Строка 4 была изменена, до изменения выдавало четыре ошибки, сейчас одну, просто не знаю как правильно поступить, лузер всё же... NOTICE: Undefined variable: REMOTE_ADDR in on line 16 Просто удалить $REMOTE_ADDR или есть другое решение??? Это сообщение отредактировал(а) bscint13 - 12.7.2014, 15:22 |
|||
|
||||
bscint13 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 13.2.2014 Репутация: нет Всего: нет |
Исходя из всеобще-солидарного молчания или безразличия единственно правильное решение - это удаление $REMOTE_ADDR из строки в 16-й линии...
Или всё же есть другое решение??? ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |