Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Уже два часа колупаю скрипт, Ошибка в синтаксисе 
:(
    Опции темы
pelletswood
Дата 27.3.2008, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 27.3.2008

Репутация: нет
Всего: нет



Код скрипта следующий:

Код

<?php
function ShowModSetupPage( $tpl_f = "" )
{
 global $O_HW;
 global $err_msg;
 global $MOD_CFG;
 $A_CFG = array( );
 include( SITE_PATH."modules/".HW_MOD."/hw_info.php" );
 if ( $A_CFG )
 {
  $a_v = $O_HW->GetModOptions( HW_MOD );
  if ( is_array( $a_v ) )
  {
   foreach ( array_keys( $a_v ) as $k )
   {
    if ( !isset( $A_CFG[$k] ) )
    {
     unset( $a_v[$k] );
    }
   }
   if ( $a_v )
   {
    $A_CFG = array_merge( $A_CFG, $a_v );
   }
   unset( $a_v );
  }
 }
 if ( $_POST['go'] )
 {
  if ( $A_CFG )
  {
   foreach ( array_keys( $A_CFG ) as $k )
   {
    if ( !isset( $_POST[$k] ) && substr( $k, 0, 3 ) != "EN_" )
    {
     continue;
    }
    $A_CFG[$k] = $_POST[$k];
   }
  }
  $func = HW_MOD."_SetupValidate";
  if ( function_exists( $func ) )
  {
   $err_msg = $func( );
  }
  if ( !$err_msg )
  {
   $func = HW_MOD."_SetupOnSave";
   if ( function_exists( $func ) )
   {
    $func( $A_CFG );
   }
   $O_HW->SetModOptions( HW_MOD, $A_CFG );
   $MOD_CFG = $O_HW->GetModOptions( HW_MOD );
   $err_msg = hwlng( "updated_ok" );
  }
 }
 $z = array( );
 if ( $A_CFG )
 {
  foreach ( $A_CFG as $k => $v )
  {
   if ( substr( $k, 0, 3 ) == "EN_" )
   {
    $z[$k] = $v ? "checked" : "";
   }
   else
   {
    $z[$k] = $v;
   }
  }
 }
 $func = HW_MOD."_SetupPrepare";
 if ( function_exists( $func ) )
 {
  $func( $z );
 }
 if ( !$tpl_f )
 {
  $tpl_f = HW_MOD_TPL."setup.htm";
 }
 return evaladvtpl( $tpl_f, $z );
}

function hwGetModuleDescr( $mod )
{
 global $db;
 list( $state, $descr ) = $db->one_row( "SELECT state,descr FROM ".TBL_MODULES." WHERE dir=".$db->esc( $mod )." AND admin_capable=\"1\"" );
 if ( $state != "A" && $state != "I" )
 {
  showadmheader( );
  echo "Module is not available";
  showadmfooter( );
  exit( );
 }
 return $descr;
}

define( "HTTP_HOST", $_SERVER['HTTP_HOST'] );
define( "ADMIN_AREA", 1 );
require( "../inc/application.php" );
if ( basename( __FILE__ ) != "modules.php" )
{
 exit( "Access Denied" );
}
$mod = $_POST['mod'] ? $_POST['mod'] : $_GET['mod'];
$mod = ( boolean )$mod;
$a_mods = hwmodgetarray( );
if ( !$mod || !$a_mods[$mod] )
{
 exit( "Module not found" );
}
checkloggedinadm( );
$HW_MOD = $mod;
$HW_MOD_DIR = MOD_DIR.$HW_MOD."/";
$HW_MOD_URL = "modules.php?mod=".$HW_MOD;
define( "HW_MOD", $mod );
define( "HW_MOD_DIR", MOD_DIR.HW_MOD."/" );
define( "HW_MOD_URL", "modules.php?mod=".HW_MOD );
define( "HW_MOD_TPL", HW_MOD_DIR."tpl/admin/" );
$MOD_CFG = $O_HW->GetModOptions( HW_MOD );
$mod_descr = hwgetmoduledescr( HW_MOD );
if ( !hwhasvalidkey( HW_MOD ) )
{
 exit( "Module is not licensed for this domain : ".HW_MOD );
}
include( HW_MOD_DIR."hw_admin.php" );
hwmodloadlng( HW_MOD );
$HW_WRAP = 1;
if ( $pg == "setup" || $_GET['pg'] == "setup" )
{
 $buf = showmodsetuppage( );
}
else
{
 $func = HW_MOD."_main";
 if ( !function_exists( $func ) )
 {
  exit( );
 }
 ob_start( );
 $ret_buf = $func( );
 $buf = ob_get_contents( );
 ob_end_clean( );
 if ( empty( $buf ) )
 {
  $buf = $ret_buf;
 }
 unset( $ret_buf );
}
if ( $HW_WRAP )
{
 $buf = showadmheader( 0 ).$buf.showadmfooter( 0 );
}
hwprocesstags( $buf );
echo $buf;
printparsetime( );
?>





Запускаю в системе - получаю ответ

Цитата
Module not found


Очевидно, шибка в отрезке

Код
define( "HTTP_HOST", $_SERVER['HTTP_HOST'] );
define( "ADMIN_AREA", 1 );
require( "../inc/application.php" );
if ( basename( __FILE__ ) != "modules.php" )
{
 exit( "Access Denied" );
}
$mod = $_POST['mod'] ? $_POST['mod'] : $_GET['mod'];
$mod = ( boolean )$mod;
$a_mods = hwmodgetarray( );
if ( !$mod || !$a_mods[$mod] )
{
 exit( "Module not found" );
}


а особенно в 
Код
$mod = $_POST['mod'] ? $_POST['mod'] : $_GET['mod'];
$mod = ( boolean )$mod;
$a_mods = hwmodgetarray( );



Прошу помочь. Подозрение общее на ошибку в цикле, либо пропущена запятая или скобка! 

Ошибка только в одной строке, но я ее не могу найти!
PM MAIL   Вверх
mikla
Дата 27.3.2008, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 3.12.2006
Где: Витебск

Репутация: нет
Всего: нет



неплохо было бы увидеть файл "../inc/application.php"

Это сообщение отредактировал(а) mikla - 27.3.2008, 01:40
--------------------
PM MAIL ICQ Skype   Вверх
solenko
Дата 27.3.2008, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



А еще лучше 
var_dump($mod, $_POST, $_GET, $a_mods) 
перед условием


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
pelletswood
Дата 27.3.2008, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 27.3.2008

Репутация: нет
Всего: нет



Содержание 

application.php

Код

<?php

define('DB_SERVER','localhost');
define('DB_NAME','kaban_kaban');
define('DB_USER','kaban_kaban');
define('DB_PW','kaban_kaban');

define('SITE_PATH',str_replace('\\','/',substr(dirname(__FILE__),0,-3)));
define('TPL_PATH', SITE_PATH.'tpl/');

error_reporting(E_ALL ^ E_NOTICE); // | E_STRICT (php5)
// ini_set('log_errors', 'On');
// ini_set('error_log', '/usr/local/apache/logs/error_log');
ini_set('display_errors', 'On');
//ini_set('memory_limit','30M');

// Prefix that all database tables have
define('TBL_PREFIX','eu_');

// Thumbnails background color
define('THUMB_BG', 'FFFFFF');
define('THUMB_FILL', true);

// Browsing thumbnail width, set this to 0 to display photo icon instead of the thumbnail photo
define('THUMB_WIDTH', 0);

/*
Possible debug levels:
0: None - Don't show any debug information
1: Show server load, page generation time, gzip compression stats and query count
2: Show level 1 (above) and GET and POST information
3: Show level 1 + 2 and database queries
*/
define('DEBUG_LEVEL', 0);

/*
ENABLE SQL Debug Mode? (0/1)
(If yes, add '&debug=1' to any page to view SQL debug info)
*/
define('EN_DEBUG_SQL', 0);

/*
Default index page - which file from /inc/pages/ should be loaded by default,
w/o extension, e.g. browse = browse.php
*/
define('IDX_PAGE', 'browse');

/*
Listing Title DB field name (shared across all fieldsets).
It must be present in each fieldset as Ad Title
*/
$TITLE_FIELD = 'v_title';

require SITE_PATH.'inc/app_init.php';

PM MAIL   Вверх
Feldmarschall
Дата 27.3.2008, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



pelletswood, почему ты решил, что ошибка в синтаксисе?

И как именно ты "колупал" свой скрипт?
ты узнал, чему равны $mod и $a_mods[$mod]?
Ты посмотрел, где они присваиваются?

Отлаживать свои скрипты нужно самостоятельно. На работающей системе. совершая определенные действия.
А не просто вглядываясь в год ,и приглашая заняться этим окружающих
PM   Вверх
pelletswood
Дата 27.3.2008, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 27.3.2008

Репутация: нет
Всего: нет



Код
ты узнал, чему равны $mod и $a_mods[$mod]?




типа попросить систему вывести $mod и $a_mods[$mod]?
 Как это сделать?

Код

echo $mod; 
echo $a_mods[$mod] ; 


?
PM MAIL   Вверх
Feldmarschall
Дата 28.3.2008, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Да, именно так и сделать.
Ты написал это в 23:43. я отвечаю в 9:00
прочтешь ты снова ближе к ночи. Пройдут сутки.
Что тебе мешало без моего разрешения сразу вывести эти две переменные? И, главное - начать смотреть дальше, туда, откуда они берутся - где пропадает нужное значение, в какой момент?

PM   Вверх
pelletswood
Дата 29.3.2008, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 27.3.2008

Репутация: нет
Всего: нет



Feldmarschall,

$mod выводит  Member_phpBB2
$a_mods[$mod]  выводит Array

Я так полагаю проблема в $a_mods[$mod] ...

Что делать дальше пока не знаю ...

Цитата

Что тебе мешало без моего разрешения сразу вывести эти две переменные


Ты меня натолкнул ...
 
Цитата

откуда они берутся

1. function hwGetModuleDescr( $mod ) 

Код
function hwGetModuleDescr( $mod )
{
    global $db;
    list( $state, $descr ) = $db->one_row( "SELECT state,descr FROM ".TBL_MODULES." WHERE dir=".$db->esc( $mod )." AND admin_capable=\"1\"" );
    if ( $state != "A" && $state != "I" )
    {
        showadmheader( );
        echo "Module is not available";
        showadmfooter( );
        exit( );
    }
    return $descr;
}



Мне непонятны следующие строки
list - что это означает 
-> - что это означает
esc 
esc( $mod)
&&



PM MAIL   Вверх
Feldmarschall
Дата 29.3.2008, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



list - это оператор РНР. можно посмотреть в документации, очень быстро, всего лишь набрав в браузере адрес http://php.net/list
-> - это специальный формат обращения к элементам класса. можно на него не обращать внимание. 
&& - это логическое "И", то есть оба условия должны вернуть истину.
что такое esc и 4mod - никто не знает. это функция и переменная в твоем коде.
но можно предположить, что esc форматирвет переменную для запроса.

А вообще, все это неважно. Главное, что возвращает этот запрос.

Добавлено через 8 минут и 34 секунды
Цитата(pelletswood @  29.3.2008,  22:59 Найти цитируемый пост)
$a_mods[$mod]  выводит Array

а ничего другого оно и не выведет. Надо так:
Код

print_r($a_mods[$mod]);


PM   Вверх
source777
Дата 30.3.2008, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 2
Всего: 56



Цитата

Подозрение общее на ошибку в цикле, либо пропущена запятая или скобка! 

Ошибка только в одной строке, но я ее не могу найти!
А у меня подозрение, что ошибка не в синтаксисе, а в тебе, а именно в том, что ты не знаешь РНР, и по неведомым причинам решил покулупать чужой скрипт...



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
pelletswood
Дата 1.4.2008, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 27.3.2008

Репутация: нет
Всего: нет



source777, пхп стараюсь учить на примерах .... 

Feldmarschall, благодарю за объяснение ...

Вопрос, как можно получить сообщение по всем ошибкам, кроме 
Код

error_reporting(E_ALL);

PM MAIL   Вверх
Feldmarschall
Дата 1.4.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



А чем тебя не устраивает
Код

error_reporting(E_ALL);

PM   Вверх
pelletswood
Дата 4.4.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 27.3.2008

Репутация: нет
Всего: нет



Feldmarschall,

а тем, что исполнение скрипта идет цепочками, на коком-то участке я получаю ошибку

Код
error_reporting(E_ALL);



выдает то место, где ошибка, но мне нужно знать причину, т.е. другие ошибки, которые привели к данной.
PM MAIL   Вверх
Feldmarschall
Дата 4.4.2008, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Не понял.
error_reporting(E_ALL); будет выдавать все ошибки. И эту, и другие.
Какие ошибки имеются в виду?
Приведи пример.
PM   Вверх
pelletswood
Дата 6.4.2008, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 27.3.2008

Репутация: нет
Всего: нет



Feldmarschall,

например, исправили одну, получаем сообщение об ошибке в другом месте и т.д
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0604 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.