За последние 24 часа нас посетили 99514 программистов и 5609 роботов. Сейчас ищут 1492 программиста ...

Подскажите где ошибка.

Тема в разделе "PHP для новичков", создана пользователем VampiR_WAR, 21 ноя 2009.

  1. VampiR_WAR

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

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Здравствуйте. Ковыряюсь второй день, не могу определить ошибку в коде, начеркал сам.
    PHP:
    1. <html>
    2. <body>
    3. <form action="registration.php" method="POST">
    4. <input type=text name=login value=логин size=13 maxlen=13></br>
    5. <input type=text name=email value=мыло size=13 maxlen=13></br>
    6. <input type=password name=password1 value= size=13 maxlen=13></br>
    7. <input type=password name=password2 value= size=13 maxlen=13></br>
    8. <input type=submit value=Далее></br>
    9. </form>
    10. </html>
    11. </body>
    12. <?php
    13. // Проверка на совпадение паролей
    14.     if ($_POST[password1] != $_POST[password2]) {
    15.         echo "Пароли не совпадают";
    16.     }
    17.     else (
    18.     //Открываем файл базы
    19. $db = fopen('db.txt', 'r+');
    20.         if (!$db) {
    21.         // проверяем файл
    22.             echo "Файл базы отсутствует";
    23.         }
    24.                 else {
    25.                 // Проверяем количество строк в файле
    26.                 $str = file("db.txt");
    27.                 // Записываем новую строку в последовательности через пробелы логин емайл пароль.
    28.                 $_POST[login]." ".$_POST[email]." ".$_POST[password1] = fgets($db, $str+1);
    29.                    
    30.                     // Проверяем добавлена ли новая строка в файле.
    31.                     if(!$str+1) {
    32.                     echo "Ошибка записи файла";
    33.             }
    34.             else {
    35.             fclose($db); // Закрываем файл
    36.            
    37.             echo "Приступить к тесту";
    38.            
    39.             }  
    40.        
    41.                 }      
    42. ?>
    У вас взгляд зоркий, подскажите пожалуйста где тут ошибка. Говорит что в 19 строке.
    PHP:
    1. $db = fopen('db.txt', 'r+');
    Кстати, а есть какие нибудь программы, редакторы, которые облегчают учесть новичков, и помогают найти ошибки?
     
  2. ideea

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

    С нами с:
    3 окт 2009
    Сообщения:
    60
    Симпатии:
    0
    а что за ошибка-то?
     
  3. VampiR_WAR

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

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    синтаксис.
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.543
    Симпатии:
    623
    VampiR_WAR
    Достаточно включить отображение ошибок, чтобы узнать номер строки с ошибкой. Там внезапно появляется неожиданная точка с запятой. В седьмой строке все ок. Значит надо смотреть строки выше. Ошибка через строку выше, там круглая скобка вместо фигурной. И в скрипте есть еще одна незакрытая скобка (if(!$str+1) {).
    Некоторые редакторы подсвечивают незакрытые и закрытые скобки разными цветами, например ZendStudio.
     
  5. VampiR_WAR

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

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    [vs]
    Домой приду, очно скачаю какой нибудь редактор. Нотпад что то не очень нравится.
    Вопросик, почему в 7 строке все окей, ошибка через строку выше, а браузер выдает ошибку на 7ой строке?
    И не совсем понял со скобками, Нотпад подсвечивает скобку, и ее закрытую или открытую коллегу.
     
  6. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.543
    Симпатии:
    623
    Внутри круглых скобок инструкция не может быть завершена точкой с запятой. Если бы там написал
    PHP:
    1. else (
    2.      //Открываем файл базы
    3.  $db = fopen('db.txt', 'r+'));
    то ошибки бы там не возникло.
    Т.е. фактически синтаксическая ошибка в седьмой строке (точка с запятой внутри круглых скобок).
     
  7. VampiR_WAR

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

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    [vs]
    Спасибо, кажись понял.:)