За последние 24 часа нас посетили 16056 программистов и 1420 роботов. Сейчас ищут 814 программистов ...

Ошибки в браузере при написании скрипта

Тема в разделе "PHP для новичков", создана пользователем 0nik2008, 11 апр 2010.

  1. 0nik2008

    0nik2008 Активный пользователь

    С нами с:
    9 мар 2010
    Сообщения:
    26
    Симпатии:
    0
    Здраствуйте дорогие програмисты!
    Мне нужна Ваша помощь и совет. Дело в том что пишу скрипт и в браузере выдаёт вот такую ошибку
    Код (Text):
    1. Parse error: syntax error, unexpected '[', expecting ',' or ';' in X:\home\wmpshop\www\install\funct.php on line 3
    Какую скобку квадратную убрать так и не пойму? Вот сам код PHP где ошибка:

    PHP:
    1. <?php
    2. function file_submit() {
    3.     global $GLOBALS['_SERVER'];
    4.     $ex=explode("/",$_SERVER[PHP_SELF]);
    5.     $l=$ex[count($ex)-1];
    6.     if ($l=="") { return false; }
    7.     return $l;
    8. }
    9.  
    10. define("skript_name","WmP-Shop");
    11. define("skript_version","1.0.1");
    12. $filesforwrite=array("../system/conect.php");
    13. $filesdesc=array("Файл с настройками для подключения к базам данных MySQL. В него будут записаны все необходимые настройки.");
    14. if (!isset($_GET['funct'])) { $GLOBALS['_GET']['funct']=""; }
    15.    switch ($_GET['funct']) {
    16.      case "dbsettings":
    17.      if (file_submit()!="install.php") {
    18.      header ("Location: install.php");
    19.      exit(); }
    20.      
    21.     $DB_HOST=$_POST[db_host];
    22.     $DB_USER=$_POST[db_user];
    23.     $DB_PASS=$_POST[db_pass];
    24.     $DB_NAME=$_POST[db_name];
    25.     $connectdb=@mysql_connect($DB_HOST,$DB_USER,$DB_PASS);
    26.     $selectdb=@mysql_select_db($DB_NAME);
    27.     if (!$connectdb) {
    28.         $actresult="Неверно указаны параметры подключения к базе данных (хост, имя или пароль)."; } else if (!$selectdb) {
    29.         $actresult="Неверно указано имя базы данных. Проверте пожалуйста, возможно на вашем хосте не создана база данных, имя которой вы указали в форме.";
    30.     } else {
    31.         $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        ";
    32.     if ($_POST[db_encode]=="") { $writetext.="?>"; }
    33.       else {
    34.         $wtitetext.="@mysql_query(\"SET CHARACTER SET ".$_POST[db_encode]."\");\n        @mysql_query(\"SET NAMES ".$_POST[db_encode]."\");\n        ?>";
    35.   }
    36.         $fp=fopen($filesforwrite[0],"w");
    37.         $fw=fwrite($fp,$writetext);
    38.         fclose($fp);
    39.         if (!$fw) { $GLOBALS['_GET'][mod]=1; }
    40.         else { include("install.inc.php");
    41.                $GLOBALS['_GET'][mod]=3;
    42.         }
    43.     }
    44.     break;
    45.     case "tosite":
    46.     header ("Location: ../index.php"); exit();
    47. ?>
    Заранее спасибо Вам!
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    $GLOBALS и так глобальный массив, определять его через global не нужно.
    К тому же, мы можем опредлить глобальным только весь массив, а не его часть
     
  3. 0nik2008

    0nik2008 Активный пользователь

    С нами с:
    9 мар 2010
    Сообщения:
    26
    Симпатии:
    0
    PHP:
    1. $GLOBALS
    Я убрал его ещё перед размещением этого поста но не помогает.Глобальный массив я просто попробывал поставить но результата нет всё выдаёт ошибку :

    Код (Text):
    1. Parse error: syntax error, unexpected '[', expecting ',' or ';' in X:\home\wmpshop\www\install\funct.php on line 3
    Вот какая скобка квадратная мешает не пойму.
     
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    т.е.
    PHP:
    1. <?php
    2. function A()
    3. {
    4.     global $array;
    5.     …
    6. }
    7. ?>
    можно
    PHP:
    1. <?php
    2. function A()
    3. {
    4.     global $array['key'];
    5.     …
    6. }
    7. ?>
    нельзя
     
  5. 0nik2008

    0nik2008 Активный пользователь

    С нами с:
    9 мар 2010
    Сообщения:
    26
    Симпатии:
    0
    Да что-то с Глобальным массивом $GLOBAL никак а можно ли как нибудь подправит выше приведёный код без $GLOBAL ?
    Если можно подправьте буду благодарен Вам.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    убери третью строку вобще. должно и так работать без нее.
     
  7. 0nik2008

    0nik2008 Активный пользователь

    С нами с:
    9 мар 2010
    Сообщения:
    26
    Симпатии:
    0
    Ага и как вы себе понимаете убрать третья строчку тогда будут одни ошибки вывобить в браузере типа та

    Код (Text):
    1. Parse error: syntax error, unexpected $end in X:\home\wmpshop\www\install\funct.php on line 47
    Так что третью строчку ни как не получиться убрать.Даже и пробывать нечего я уже знаю что выдаст в браузере ошибки.
     
  8. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Ну тогда отложите в сторону это ремесло и не занимайтесь программированием.
     
  9. 0nik2008

    0nik2008 Активный пользователь

    С нами с:
    9 мар 2010
    Сообщения:
    26
    Симпатии:
    0
    Нет в сторону я не отложу. Но я удалял третью строчку и мне выдало уже другую ошибку,ту которую он и должен был выдать т.е.

    Код (Text):
    1. Parse error: syntax error, unexpected $end in X:\home\wmpshop\www\install\funct.php on line 47
     
  10. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    0nik2008
    вполне очевидно что это не относится к 3й строке приведенного в топике кода.

    где-то пропущена закрывающая фигурная скобка.
    Ищите
     
  11. 0nik2008

    0nik2008 Активный пользователь

    С нами с:
    9 мар 2010
    Сообщения:
    26
    Симпатии:
    0
    Нет фигурные скобки не пропущены проверил уже много раз.ошибок нет на по фигурным скобкам ни квадратным скобкам ни в кавычках.
    А браузер выдаёт ошибку

    Код (Text):
    1. Parse error: syntax error, unexpected '[', expecting ',' or ';' in X:\home\wmpshop\www\install\funct.php on line 3
     
  12. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    0nik2008
    Еще раз...
    Это ошибки синтаксиса, а не логики.

    Я уж не знаю, с какого бодуна было решено, что
     
  13. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Плохо проверяли.
     
  14. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    да

    и нечего меня в личку терроризировать. Мне тогда кошмары снятся.

    Если не удаётся вычленить ошибку в большом объёме кода — разбивайте на мелкие, комментируйте и смотрите где и как ошибка появляется.
     
  15. 0nik2008

    0nik2008 Активный пользователь

    С нами с:
    9 мар 2010
    Сообщения:
    26
    Симпатии:
    0
    Спасибо за помощь программистам!
    Инстоляторный скрипт я написал ну конечно с помощью пользователя форума этого Luge и исправил выше приведёный мною код PHP.
    Отдельно пользователю этого форума Luge респект!
    Хочу сказать следуещее новичкам не повторяйте таких ошибок


    PHP:
    1.  function file_submit() {
    2.      global $GLOBALS['_SERVER'];
    3.      $ex=explode("/",$_SERVER[PHP_SELF]);
    4.      $l=$ex[count($ex)-1];
    5.      if ($l=="") { return false; }
    6.      return $l;
    7.  }

    функция итак глобальная а ещё укозал $GLOBALS . Вот этого делать неследует! Пример правильной функции будет таким:

    PHP:
    1. function file_submit() {
    2.     global $_SERVER;
    3.     $ex = explode( "/", $_SERVER[PHP_SELF] );
    4.     $l = $ex[count($ex) - 1];
    5.     if ($l=="") { return FALSE; }
    6.     return $l;
    7. }
    Дальше я исправил много что не буду приводить пример по своим соображениям но поверьти инстолятор и функция инстолятора заработала отлично! Кому надо помочь пишите в аську по 404659074. И не повторяйте моих ошибок!
     
  16. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    *достаёт бочку дёгтя.

    $_SERVER тоже глобальный массив. И для него global тоже не нужен. Будет работать и
    PHP:
    1. <?php
    2. function file_submit() {
    3.      $ex = explode( "/", $_SERVER[PHP_SELF] );
    4.      $l = $ex[count($ex) - 1];
    5.      if ($l=="") { return FALSE; }
    6.      return $l;
    7.  }
    и да, ключи у массива желательно заключать в кавычки. $_SERVER['PHP_SELF']
     
  17. 0nik2008

    0nik2008 Активный пользователь

    С нами с:
    9 мар 2010
    Сообщения:
    26
    Симпатии:
    0
    Да я не стал просто приводить конкретный правильный пример.Естественно я и его удолил.