HTML-фреймбл сломан после обновления до PHP-7 - PullRequest
0 голосов
/ 19 сентября 2019

Мне было поручено обновить несколько очень старых и очень похожих на спагетти веб-приложений с PHP5 на PHP7, и я столкнулся с запутывающей / расстраивающей проблемой, когда мой HTML-фрейм не загружается должным образом.Когда frame_count == 2, я получаю ошибка типа Uncaught: невозможно прочитать свойство 'document' из неопределенного , брошенного там, где определено parent.local_navigator.document.location.Однако, когда я комментирую эту строку и определяю только work_area, фрейм work_area загружается без проблем (поэтому я знаю, что фреймы не полностью разбиты).

Я убедился, что целевые php-страницы для каждого фрейма имеютнет ошибок или предупреждений, и этот код работает "отлично" при работе на рабочем сервере с загруженным PHP-5.3 и register_globals = on.HTML версия 4.0.

Здесь загружены фреймы ...

<TITLE>Process Awareness Tool</TITLE></HEAD>
<?php //echo $frame_count ?>
<FRAMESET BORDER=0 ROWS="60,*">
  <FRAME NAME="global_navigator" SCROLLING="no"
         SRC="top.php?frame_count=<?=$frame_count?>&selected_function=<?=urlencode($selected_function)?>&sid=<?=$sid?>">
<?php if ($frame_count < 2) { ?>
  <FRAME NAME="work_area" SRC="/ptt/include/front.php">
<?php } else if ($frame_count == 2) { ?>
  <FRAMESET COLS="23%,*">
    <FRAME NAME="local_navigator" SRC="/ptt/review/left/menu.php">
    <FRAME NAME="work_area" SRC="front.php">
  </FRAMESET>

и определены здесь

<SCRIPT LANGUAGE="JavaScript">
<!--
parent.local_navigator.document.location = '/ptt/review/left/menu.php';
parent.work_area.document.location = '/ptt/review/right/index.php';
// -->
</SCRIPT>

Мой самый большой вопрос здесь, если кто-нибудь знает оили столкнулся с какими-либо аспектами изменений между PHP5 и PHP7, которые могут вызвать эту проблему?Я довольно подробно прочитал документацию по php, но не могу найти никакой корреляции.Конечно, я довольно новичок в php, html и веб-разработке в целом, поэтому логика того, как объекты и тому подобное передаются, все еще немного потеряна для меня.

Пожалуйста, имейте в виду, что у меня нет гибкости / времени для рефакторинга всех фреймов или PHP-кода и приведения их в соответствие с гораздо более современным стандартом, поскольку мне сказали сделать это как можно скореевозможно, поэтому я должен придерживаться рамок на данный момент.Если позже у меня будет время в будущем, я вернусь, чтобы реорганизовать / переписать их, но мы все знаем, как это происходит;)

...