Здраствуйте дорогие програмисты! Мне нужна Ваша помощь и совет. Дело в том что пишу скрипт и в браузере выдаёт вот такую ошибку Код (Text): Parse error: syntax error, unexpected '[', expecting ',' or ';' in X:\home\wmpshop\www\install\funct.php on line 3 Какую скобку квадратную убрать так и не пойму? Вот сам код PHP где ошибка: PHP: <?php function file_submit() { global $GLOBALS['_SERVER']; $ex=explode("/",$_SERVER[PHP_SELF]); $l=$ex[count($ex)-1]; if ($l=="") { return false; } return $l; } define("skript_name","WmP-Shop"); define("skript_version","1.0.1"); $filesforwrite=array("../system/conect.php"); $filesdesc=array("Файл с настройками для подключения к базам данных MySQL. В него будут записаны все необходимые настройки."); if (!isset($_GET['funct'])) { $GLOBALS['_GET']['funct']=""; } switch ($_GET['funct']) { case "dbsettings": if (file_submit()!="install.php") { header ("Location: install.php"); exit(); } $DB_HOST=$_POST[db_host]; $DB_USER=$_POST[db_user]; $DB_PASS=$_POST[db_pass]; $DB_NAME=$_POST[db_name]; $connectdb=@mysql_connect($DB_HOST,$DB_USER,$DB_PASS); $selectdb=@mysql_select_db($DB_NAME); if (!$connectdb) { $actresult="Неверно указаны параметры подключения к базе данных (хост, имя или пароль)."; } else if (!$selectdb) { $actresult="Неверно указано имя базы данных. Проверте пожалуйста, возможно на вашем хосте не создана база данных, имя которой вы указали в форме."; } else { $writetext.="<?php\n \$DB_HOST = \"".$DB_HOST."\";\n \$DB_USER = \"".$DB_USER."\";\n \$DB_PASS = \"".$DB_PASS."\";\n \$DB_NAME = \"".$DB_NAME."\";\n \$connectdb=@mysql_connect(\$DB_HOST,\$DB_USER,\$DB_PASS);\n \$selectdb=@mysql_select_db(\$DB_NAME);\n if (!\$connectdb or !\$selectdb) {\n header(\"Location: http://\$_SERVER[HTTP_HOST]/not.php\"); exit; }\n "; if ($_POST[db_encode]=="") { $writetext.="?>"; } else { $wtitetext.="@mysql_query(\"SET CHARACTER SET ".$_POST[db_encode]."\");\n @mysql_query(\"SET NAMES ".$_POST[db_encode]."\");\n ?>"; } $fp=fopen($filesforwrite[0],"w"); $fw=fwrite($fp,$writetext); fclose($fp); if (!$fw) { $GLOBALS['_GET'][mod]=1; } else { include("install.inc.php"); $GLOBALS['_GET'][mod]=3; } } break; case "tosite": header ("Location: ../index.php"); exit(); ?> Заранее спасибо Вам!
$GLOBALS и так глобальный массив, определять его через global не нужно. К тому же, мы можем опредлить глобальным только весь массив, а не его часть
PHP: $GLOBALS Я убрал его ещё перед размещением этого поста но не помогает.Глобальный массив я просто попробывал поставить но результата нет всё выдаёт ошибку : Код (Text): Parse error: syntax error, unexpected '[', expecting ',' or ';' in X:\home\wmpshop\www\install\funct.php on line 3 Вот какая скобка квадратная мешает не пойму.
т.е. PHP: <?php function A() { global $array; … } ?> можно PHP: <?php function A() { global $array['key']; … } ?> нельзя
Да что-то с Глобальным массивом $GLOBAL никак а можно ли как нибудь подправит выше приведёный код без $GLOBAL ? Если можно подправьте буду благодарен Вам.
Ага и как вы себе понимаете убрать третья строчку тогда будут одни ошибки вывобить в браузере типа та Код (Text): Parse error: syntax error, unexpected $end in X:\home\wmpshop\www\install\funct.php on line 47 Так что третью строчку ни как не получиться убрать.Даже и пробывать нечего я уже знаю что выдаст в браузере ошибки.
Нет в сторону я не отложу. Но я удалял третью строчку и мне выдало уже другую ошибку,ту которую он и должен был выдать т.е. Код (Text): Parse error: syntax error, unexpected $end in X:\home\wmpshop\www\install\funct.php on line 47
0nik2008 вполне очевидно что это не относится к 3й строке приведенного в топике кода. где-то пропущена закрывающая фигурная скобка. Ищите
Нет фигурные скобки не пропущены проверил уже много раз.ошибок нет на по фигурным скобкам ни квадратным скобкам ни в кавычках. А браузер выдаёт ошибку Код (Text): Parse error: syntax error, unexpected '[', expecting ',' or ';' in X:\home\wmpshop\www\install\funct.php on line 3
0nik2008 Еще раз... Это ошибки синтаксиса, а не логики. Я уж не знаю, с какого бодуна было решено, что
да и нечего меня в личку терроризировать. Мне тогда кошмары снятся. Если не удаётся вычленить ошибку в большом объёме кода — разбивайте на мелкие, комментируйте и смотрите где и как ошибка появляется.
Спасибо за помощь программистам! Инстоляторный скрипт я написал ну конечно с помощью пользователя форума этого Luge и исправил выше приведёный мною код PHP. Отдельно пользователю этого форума Luge респект! Хочу сказать следуещее новичкам не повторяйте таких ошибок PHP: function file_submit() { global $GLOBALS['_SERVER']; $ex=explode("/",$_SERVER[PHP_SELF]); $l=$ex[count($ex)-1]; if ($l=="") { return false; } return $l; } функция итак глобальная а ещё укозал $GLOBALS . Вот этого делать неследует! Пример правильной функции будет таким: PHP: function file_submit() { global $_SERVER; $ex = explode( "/", $_SERVER[PHP_SELF] ); $l = $ex[count($ex) - 1]; if ($l=="") { return FALSE; } return $l; } Дальше я исправил много что не буду приводить пример по своим соображениям но поверьти инстолятор и функция инстолятора заработала отлично! Кому надо помочь пишите в аську по 404659074. И не повторяйте моих ошибок!
*достаёт бочку дёгтя. $_SERVER тоже глобальный массив. И для него global тоже не нужен. Будет работать и PHP: <?php function file_submit() { $ex = explode( "/", $_SERVER[PHP_SELF] ); $l = $ex[count($ex) - 1]; if ($l=="") { return FALSE; } return $l; } и да, ключи у массива желательно заключать в кавычки. $_SERVER['PHP_SELF']