Здравствуйте В PHP я ноль Мене нужно заменить функцию session_is_registered чтобы работала в PHP 5.3+. Вот часть кода: PHP: <?php require( "path.php" ); require( PATH."include/include.php" ); session_start( ); if ( !session_is_registered( $adminId ) ) { header( "Location:index.php?info=17" ); } $adminId = $_SESSION['adminId']; $res = executequery( "SELECT COUNT(ID) AS C FROM ".PREFIX."PRODUCT_TEMP WHERE DATE_ADDED>='".$_SESSION['lastLogin']."'" ); $r = getrow( $res ); $addedB4LL = $r['C']; $res = executequery( "SELECT COUNT(ID) AS C FROM ".PREFIX."PRODUCT_TEMP" ); $r = getrow( $res ); $addedAll = $r['C']; $clickPB4LL = 0; .... Ошибка тут: if ( !session_is_registered( $adminId ) ) { Чем это можно заменить или куда вообще копать подскажите пожалуйта
Копать: debug http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html https://php.ru/forum/threads/howto-...i-po-shagam-i-s-kartinkami.58974/#post-474550 $_SESSION массив, можно ключ через isset проверить
пишу session_start( ); if (isset($_SESSION['adminId'])) { header( "Location:index.php?info=17" ); Не проходит
Подскажи пожалуйста как это встроить в код Пробовал заменить if (isset($_SESSION['adminId'])) { header( "Location:index.php?info=17" ); на var_dump(isset($_SESSION['adminId'])); белый экран и пишет bool(true)
перед isset поставь восклицательный знак, нужно чтобы не авторизованные перенаправлялись на другой адрес?
Это я хочу зайти в админ панель, но не пускает прописал if (!isset($_SESSION['adminId'])) { header( "Location:index.php?info=17" ); Белый экран
Если белый экран, то я давал ссылку, там написано как включить отображение ошибок, может они есть и ещё можно настроить, чтобы в лог записывались ошибки. Код вроде рабочий, что там не так по нему не видно. Может проблема где-то в другом месте. Пользуйся отладкой, у тебя больше шансов найти проблему имея доступ к коду.
Подставил в начало кода ini_set('display_errors',1); error_reporting(E_ALL); И получил ошибки: Notice: Undefined index: uId in C:\OpenServer\domains\pricecomparisonscript5.ru\include\include.php on line 57 Notice: Undefined index: uId in C:\OpenServer\domains\pricecomparisonscript5.ru\include\include.php on line 58 Это тут: Код (Text): define("INFO_23", "Task Completed Successfully.<br>However you must run product re-profiling as it may have affected product price profile.<br>Click <a href='".SCRIPT_ROOT."admin/product_price_profiling.php?uId=".$_GET["uId"]."' target=_blank class='link'>here</a> to perform profiling now."); define("INFO_24", "Delete Task Completed Successfully.<br>However you must run product re-profiling as it may have affected product price profile.<br>Click <a href='".SCRIPT_ROOT."admin/product_price_profiling.php?uId=".$_GET["uId"]."&del=Y' target=_blank class='link'>here</a> to perform profiling now."); Видимо проблема тут
Если так Код (Text): if( isset( $_GET["uId"] ) ) { define("INFO_23", "Task Completed Successfully.<br>However you must run product re-profiling as it may have affected product price profile.<br>Click <a href='".SCRIPT_ROOT."admin/product_price_profiling.php?uId=".$_GET["uId"]."' target=_blank class='link'>here</a> to perform profiling now."); define("INFO_24", "Delete Task Completed Successfully.<br>However you must run product re-profiling as it may have affected product price profile.<br>Click <a href='".SCRIPT_ROOT."admin/product_price_profiling.php?uId=".$_GET["uId"]."&del=Y' target=_blank class='link'>here</a> to perform profiling now."); } то белый экран, но ошибки пропали
Отлично, осталась сделать отладку и проследить за ходом программы по шагам, чтобы найти причину, почему белый экран.
Ну там сейчас Код (Text): require( "path.php" ); require( PATH."include/include.php" ); session_start( ); if ( !isset($_SESSION['adminId']) ) { header( "Location:index.php?info=17" ); } --- Добавлено --- Сейчас пытаюсь PhpStorm настроить
Настроил PhpStorm, переписал ещё несколько устаревших функций, но при в вводе логина и пароля в админ панели попадаю на белый экран и там уже ничего PhpStorm не пишет , хотя проверку прохожу Код (Text): Dump $_SESSION $_SESSION['adminId'] = string 'admin' (length=5) $_SESSION['lastLogin'] = string '2016-07-29 15:18:16' (length=19) $_SESSION['lang'] = int 1000 $_SESSION['langFolder'] = string 'eng' (length=3) $_SESSION['currencySymbol'] = string '$' (length=1) $_SESSION['currencyRate'] = int 1
Вот что показал debugger: Код (Text): require( "path.php" ); require( PATH."include/include.php" ); session_start( ); if ( !isset($_SESSION['adminId']) ) { header( "Location:index.php?info=17" ); } $adminId = $_SESSION['adminId']; $res = executequery( "SELECT COUNT(ID) AS C FROM ".PREFIX."PRODUCT_TEMP WHERE DATE_ADDED>='".$_SESSION['lastLogin']."'" ); $r = getrow( $res ); $addedB4LL = $r['C']; $res = executequery( "SELECT COUNT(ID) AS C FROM ".PREFIX."PRODUCT_TEMP" ); $r = getrow( $res ); $addedAll = $r['C']; $clickPB4LL = 0; if ( IS_MERCHANTBID_INSTALLED != 0 ) { $res = executequery( "SELECT COUNT(ID) AS C FROM ".PREFIX."BID_PAYMENT WHERE ISVALID='N' AND PAYMENT_DATETIME >= '".$_SESSION['lastLogin']."'" ); $r = getrow( $res ); $clickPB4LL = $r['C']; } else { $res = executequery( "SELECT COUNT(ID) AS C FROM ".PREFIX."CLICKTHROUGHS_PAYMENT WHERE ISVALID='N' AND PAYMENT_DATETIME>='".$_SESSION['lastLogin']."'" ); $r = getrow( $res ); $clickPB4LL = $r['C']; Дальше не прохожу (белый экран) Подскажите, что тут пишут Я так понимаю проблема в последних строках Скрин: https://drive.google.com/open?id=0B5m4gsTayX-lcHI2QXZ1enlFaUk
Я ошибся, код который написал выше нормально выполняется, а остановка происходит на следующей строке: Код (Text): $r = getrow( $res ); $clickPB4LL = $r['C']; } include( "header.php" ); // после этой строки код не выполняется! echo "\t\t<center>\r\n\r\n\t\t\t"; if ( isset( $_GET['info'] ) ) { echo getinfo( $_GET['info'] ); } echo "\r\n\t\t\t<table cellpadding=\"0\" cellspacing=\"0\" width=\"500\" align=\"center\">\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td width=\"95%\" background=\"images/bg_main_top.gif\" class=\"th\">Management Area</td>\r\n\t\t\t\t\t<td width=\"47\" class=\"th\"><img src=\"images/arrow_main.gif\" width=\"47\" height=\"30\" border=\"0\" alt=\"\"></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t<table cellpadding=\"3\" cellspacing=\"1\" width=\"500\" align=\"center\" class=\"table\">\r\n"; $licenseInfo = ioncube_file_info( ); if ( $licenseInfo['FILE_EXPIRY'] != "" && date( "Y-m-d", $licenseInfo['FILE_EXPIRY'] ) <= adddays( date( "Y-m-d" ), 10 ) ) { Вот код файла "header.php" Код (Text): // Build TABS $resTabCat = executeQuery("SELECT ID, FILENAME, TITLE FROM ".PREFIX."CATEGORY WHERE ISVALID='Y' AND HOMEPAGE_DISPLAY = 'Y' AND PARENT_ID = 0 ORDER BY HOMEPAGE_DISPLAY, SORT_ORDER, TITLE"); $cntTabCat = 0; // Build Search dropdown $categoryDropdownOptions = "\n"; $resSrhCat = executeQuery("SELECT ID, TITLE FROM ".PREFIX."CATEGORY WHERE PARENT_ID = 0 AND ISVALID='Y' ORDER BY SORT_ORDER, TITLE"); while ( $rowSrhCat = getRow($resSrhCat) ) $categoryDropdownOptions .= '<option value="'.$rowSrhCat["ID"].'">'.$rowSrhCat["TITLE"].'</option>'."\n"; // Build Left Categories $arrLeftCat = getTableRecArray('CATEGORY', 'ID, FILENAME, TITLE', "PARENT_ID = 0 AND ISVALID = 'Y'", 'SORT_ORDER, TITLE', 'CATEGORY', 'PARENT_ID', 'ID', 'ID, TITLE, FILENAME', "ISVALID = 'Y'", 'SORT_ORDER, TITLE'); //************************************************************************************************* // Call template include(PATH.'templates/header.tpl.php'); //************************************************************************************************* // Free Resources free($resTabCat); free($resSrhCat); free($resLeftCat);
Возможно отладчик не перепрыгивает в тот файл. Можно тест с include сделать, отдельно на простом коде.
ты имеешь ввиду прописать код из header.php прям тут? Я так понимаю из этого файла код должен получить какие то данные, но от туда ничего не идёт Если удалить эту строку include( "header.php" ); то появляется кусок панели с заголовком админки и куча ошибок.
@krylovdimitrii по нормальному должен был открыться файл header.php и ты дальше должен был увидеть как там работает программа
Если с базой, то просто бы при отладке получил не верные данные из неё или ошибки и это было бы понятно.