Лет 8 назад благодаря помощи этого форума удалось запустить построение графиков вот тут http://www.aie.sp.ru/Calculator_filter2.php Недавно завёл другой хостинг отличающийся на 1 букву: http://www.aie.spb.ru/Calculator_filter2.php, всё то же самое, просто скопировал - не работает. Старую тему оживить не удалось. Переписка с провайдером ни к чему не привела, они посоветовали обратиться к тому кто делал. Делал я и всё работает по другому адресу. Подскажите, пожалуйста, куда копать.
и ты за 8 лет так и не смог прочитать правила и просто из уважения к другим людям, которые тратят на тебя время (включая чтение этой темы), понять очевидное, что здесь не гадалки? Зря зашел
Вы только недавно на этом форуме, поэтому не в курсе. Была тема, где всё подробно обсуждалось, совместными усилиями получилось наладить страницу, которая с тех пор исправно работает. В моих сообщениях она есть, но не поднять её или ссылку на неё прикрепить не получается, выскакивает ошибка. Появился новый хостинг, где всё то же самое не работает. Ссылки для сравнения дал. Вопрос был в общем - куда копать? Просто не представляю как такое может быть, один и тот же скрипт тут работает уже давно, а там нет. Возможно Вы намекаете что нужно весь код страницы приложить. Приложил. Вот тема: https://php.ru/forum/threads/postroenie-grafika-na-rnr.61199/page-6#post-496232 получилось открыть. Странно, когда первое сообщение писал раз 5 пытался её открыть - ничего не вышло.
Возможные проблемы: - отсутствие на хостинге/сервере нужной версии php - отсутствие базы данных, если она используется - отсутствие различных библиотек, например GD Чтобы это понять, есть лог ошибок. Вообще достаточно забавно писать "на одном хостинге работает, а на другом нет". С таким успехом можно писать: почему у нас у двоих есть машина, но моя едет медленнее и мне приходиться крутить педали, к тому же у него есть кондиционер, а у меня нет. Ещё раз. Нужно выкладывать код, тогда и помощники найдутся. Не вижу смысла читать 6 страниц писанины со спорами, это ведь тебе нужно, а не мне.
"Deprecated: Implicit conversion from float 111.09768186929534 to int loses precision in /var/www/u2652567/data/www/aie.spb.ru/script.php on line 282" В 8 версии неявная несовместимость преобразования float к int устарело. Из чего можно сделать вывод, что на предыдущем сервере версия php была ниже.
Добрый день! Вы покaзали в zip два файла: Calculator_filter2.php и script.php 1. В коде Calculator_filter2.php только HTML и Native JavaScript Из jQuery используется только serialize(). Вы может не грузить лишнии 30Кб убрав строку HTML: <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> По идеи, Calculator_filter2.php должен работать так: JavaScript function sub обрабатывает событие submit В Вашем случае, выбираются в переменные value полей формы и проверяеются на заполнение (валидацию можно из JS убрать, добавив атрибут required в поля формы). Затем введеные данные как GET параметры дополнются в к "script.php" Попробыйте изменить код так HTML: <html> <body> <form action=""> <!-- убираем onsubmit="return sub(this);" --> <table><tr><td width="685"> <table bgcolor="#d5d5d5" border="2" cellpadding="1" class="style6"> <tr><td colspan="3"> Редкоизменяемые данные: U = <input name="U" type="text" value="8" size="4" required/> V</td></tr> <!-- далее во все тэги input нужно добавить атрибут required --> <input type=submit> </form> <!-- выведим наш рисунок в браузер, указав желаемые размеры!--> <img id="myimg" border="0" style="width:718px; height:620px;" src="script.php" alt="" /> </body> <script> let form = document.forms[0]; sub = (event) => { event.preventDefault(); let formData = new FormData(form); //формируем GET запрос var get var get = new URLSearchParams(formData).toString(); // меняем src нашего рисунка тем самым делая новый запрос к скрипту script.php document.getElementById("myimg").src = "script.php?" + get; console.log(document.getElementById("myimg").src); // здесь можно проверить src, если OK, то искать ошибку в script.php }; form.addEventListener("submit", sub); </script> </html> Посмотрите значение в Код (Javascript): console.log(document.getElementById("myimg").src); 2. Возможно у Вас проблема в script.php Поробуйте скопировать в адресную строку браузера url с GET параметрами, которые выводитcя в console.log domen/script.php?U=... Возможно на ностингах отличаются версии или конфигурации PHP. Из-за этого на другом ностинге возникают фатальные ошибки. Удачи!
Посещаю много форумов по своей специальности. Там полно тем созданных новичками задающими аналогичные вопросы типа: у друга техника отлично работает, а у меня такая же плохо, что делать. Это обычное дело, когда начинающий не понимает. Если отвечают типа: "Не можешь какать - не мучай попу" - таких обычно банят. Понятное дело что версии разные. Где искать журналы ошибок? И я догадался что на старом хостинге версия старая, а на новом новая. Спасибо большое. Поискал в 282-й строке - ничего не понял. Видимо не там ищу. Вообще не нашёл ни float ни int. Подскажите пожалуйста: где это? Фрагмент кода приложил.
Строку убрал. При нажатии "Сосчитать" появляется сетка (со строкой просто белое поле), но графики отсутствуют. Это на новом хостинге. На старом графики пропадают. Видимо эта строка всё-таки нужна. Как минимум для старого.
С хостингом это не связано т.к. HTML c JS работает на стороне клиента. Вам нужно было не только удалить строку, но и исправить HTML и JavaScript function sub . Покажите, пожалуйста, что выводится здесь Код (Text): console.log(document.getElementById("myimg").src); Временно, для отладки, в function sub замените Код (Javascript): // document.getElementById("myimg").src = "script.php?" + get; //На window.location.replace("script.php?" + get); Тогда Вы сможете увидеть ошибки в script.php
Уже подсказали: наймите спеца. И я бы не ограничивался только этим калькулятором Уж слишком олдскульно выглядит сайт. Это даже не 16-ый год. Кстати, сейчас с построением графиков вполне успешно справляется JS. На нем можно даже файлы формировать для сохранения.
Это 7-ой год. И он работает, в отличии от всяких других, которые делали зумеры, поэтому постоянно отваливаются или тормозят, то в одном браузере, то в другом. Например текущая история тоже из-за попыток осовременить php. Буду пытаться реализовать полученные подсказки. По мере способностей, поэтому не быстро. Ещё бы понять: здесь - это где? Куда код вводить? Заменил, получил бесконечное кол-во одинаковых строчек: Deprecated: Implicit conversion from float 599.999999847209 to int loses precision in /var/www/u2652567/data/www/aie.spb.ru/script.php on line 321 Строка 321 выглядит так: imageSetPixel($img, 20 + $x, 600 - $Yp * ($P1 + $P3 + $P2) * $SYp, $black); } Что делать с этой информацией? Есть подозрение что всё виснет на этапе вывода информации. Типа олдскульный код, переделывай.
imageSetPixel 2, 3, 3 принимает int, соответственно нужно посмотреть какой из переданных параметров является float и привести его или их явно (int) параметр, если ошибка возникает в данной строчке.
Какие переданные параметры смотреть? На сколько понимаю команда imageSetPixel из строки 321 печатает точку с координатами 20 + х и 600 - y, при этом складывает из трёх Р1 + Р2 + Р3. Какой из этих параметров смотреть? В других строчках другие такие же команды, только отдельно, без сложения. Ни одна не выводится. Указание на строку 321 выпало потому что галочка стояла только в одном месте: выводить общий гафик, т.е. сумму Р1 + Р2 + Р3. Если галочку поставить в другом месте указание было бы на соответствующую строку. Если поставить несколько галочек - указаний было бы более одного.
Код (Text): $x = 20 + $x; $y = 600 - $Yp * ($P1 + $P3 + $P2) * $SYp; imageSetPixel($img, (int) $x, (int) $y, (int) $black);
Заменил строку 321 на 3. При нажатии "Сосчитать" перестала пропадать сетка. График не отображается. Это некоторый прогресс. Что сделать чтобы точки выводились? Код выглядит так: // Суммарная LC+LCCL+CL if (isset($_GET["p132"])) { $x = 20 + $x; $y = 600 - $Yp * ($P1 + $P3 + $P2) * $SYp; imageSetPixel($img, (int) $x, (int) $y, (int) $black); }
Спасибо всем огромное за помошь. Решение проблемы оказалось элементарным, правда с другой стороны. Оказывается в настройках нового хостинга можно менять версию php. Посмотрел какая была на старом (5.2) и поставил такую же на новом. Просто зашёл, выбрал нужную версию и всё заработало. Буду готовиться к моменту, когда отключат пятые и заставят принудительно переходить на следующие.
Добрый день! Ваше элементарное решение проблемы - вернуться на 8 лет назад. А что Вы предполагаете делать дальше? Там и останетесь? Будете продолжать писать новые скрипты на PHP 5.2? Без обид, Ваше решение - мина замедленного действия. Советую Вам вернуться на актуальную версию PHP и исправить ошибки. Удачи!
Вы плохо понимаете значение слова ошибки. Когда на этом форуме мне советовали как наладить работу этой страницы - никаких ошибок не было, всё прекрасно работало. С тех пор ничего на странице не изменилось (не считая мелких доработок). Если ничего не делать - ошибкам не откуда взяться. Это правило работает везде и всегда. Ещё в Германии не в курсе одной русской поговорки: работает - не трогай. Если ошибка появилась - её кто-то сделал, достаточно его вычислить и указать ему на неё. Возможно он её исправит, если она случайна или не исправит, если сделана осознанно. Не буду, у меня другая профессия. Вот я и вернулся - ошибок как не было, так и нет. Тут ключевое слово "осознанно". Кому-то очень надо заставить впустую поработать. Кто не сумеет сам - заплатит специалисту. Выше уже предлагали. Ошибка - это когда платить не хочет. Надо заставить.
Добрый день! Если вместо графика, программа выводит сетку, то она не работает. Есть одна русская поговорка: В Вашем случае, программа перестала работать на другом хостинге и Вы обратились за помощью. Я не заставлял Вас платить и абсолютно даром, исправил код и подсказал Вам как найти ошибки в PHP. Между прочим, другие коллеги тоже пытались Вам помочь. Оказалось, что Вам это не нужно. Удачи!
Не совсем так. Не перестала работать, а сразу не работала. Потому что по умолчанию php8. Посоветовали вместо 1-й строчки сделать 3 и появилась сетка. Графика как не было, так и нет. Нет сомнений что если ещё что-то подкорректировать - всё заработает. Никак не мог предположить что у нового провайдера в настройках можно запросто менять версию php. Поменял на 5.2, вернул код к изначальному - работает. Поменять версию php - сам нашёл. Не я один делал страницы в php5, таких миллионы. И у всех те же проблемы при попытке запустить код на php8. Если сейчас переделать код под php8, выйдет следующая версия и опять придётся переделывать. Работа ради работы, у самурая нет цели, только путь. Или вернуться к актуальной версии.
Добрый день! Решил Вам ответить, потому, что может быть прочитают те, кто способен адекватно воспринимать советы коллег. Итак, почему не безопасно оставаться на PHP 5.2 и любой последущей версии, которая не поддерживается разработчиками. По жизни, в любой программе выявлятся проблемы. Если программа поддерживается, разработчики несут за это ответственность и устраняют проблемы. Поэтому и появляются новые релизы версий и новые версии PHP. Одна из наиболее опасных проблем уязвимости PHP. Например, здесь описаны множественных уязвимостях PHP 5.2 https://xakep.ru/2009/02/27/47311/ Как вы думаете, что сделать лучше - оставаться на PHP 5.2 или вернуться (на сервере) к актуальной версии PHP? Причём, исправить то нужно только один PHP-скрипт. Удачи!
Отвечу тоже. Для тех, кто способен адеватно воспринимать действительность. Кто бы был против. Разработчики устраняйте. Почему Вы молчали, когда этот скрипт делали и обсуждали? Что помешало рассказать про уязвимости и посоветовать как сделать хорошо? Теперь не надо вставать в позу, перекладывать с больной головы на здоровую и выворачивать ситуацию наоборот: как будто я не хочу скорректировать скрипт. Хочу, но не знаю как. Поэтому тему и запостил. И тут пишут типа: ишь какой, нахаляву захотел, предложили нанять специалиста. За деньги конечно. Того самого разработчика. Схема стара как мир. Вы и сейчас ничего не советуете. Выше посоветовали доработать строчку вывода графика, переписать её в три, сетка стала отображаться, но график не появися. Надо ещё что-то переделать.