powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите чайнику...
19 сообщений из 19, страница 1 из 1
Помогите чайнику...
    #38502695
Den_S40
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, помогите решить проблему, я новичок.
-----
Вот что показывает php валидатор:

syntax error, unexpected
'case' (T_CASE)
Ошибка в 28-ой строке
-----
А вот и сама строка:

28 case 'log_out':
-----
Исправьте, или подскажите как её решить, желательно подробнее (что, и куда вставлять)
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38502716
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_S40,

Новичок не только в ПХП, а в программировании в целом видимо. Вот реально люблю питон за то, что он не позволяет писать неформатированный код (ну конечно извратиться можно, но там это сделать сложно).

Первое, что надо сделать - это проставить левые отступы правильно ("углубить" вложенные блоки кода во внешние)... И Вы сразу увидите, что у Вас не хватает закрывающих скобок (потому интерпретатор пхп относит case не к switch, а к if... а конструкции "if (){} case:" не существует).

Ну вот так это выглядит для пхп интерпретатора:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
<?php
include 'config.php';
switch($_GET['act']){
  default:
    if(!isset($aut)){
      if(isset($_POST['login']) and isset($_POST['pass'])){
        $login=mysql_s($_POST['u954626456_site1']);
        $pass=mysql_s($_POST['597338']);

        $q=mysql_query("SELECT `id` FROM `users` WHERE `login`='$login' AND `pass`='$pass'");
        if(mysql_num_rows($q)!=0){

          if($_POST['forget']){
            $user=get_user(mysql_result($q, 0));
            setcookie ("pass", md5(md5($user['pass'])), time() + 100000);
            setcookie ("uid", $user['id'], time() + 100000);
          } else 
            $_SESSION['uid']=mysql_result($q, 0);
          mysql_query("INSERT INTO `logs` (`login`, `ip`, `ua`, `time`, `success`, `method`) values ('$_GET[login]', 
                      '$_SERVER[REMOTE_ADDR]', '$_SERVER[HTTP_USER_AGENT]', '".time()."', '1', '1')"
          );
          header('location: enter.php?rnd='.$rand);
        }else{
          div('Ошибка');
        echo '&#187; <a href="enter.php?rnd='.$rand.'">Авторизация</a><br/><br/>';
        div('Вход');
        $time_a=data(time());
        echo 'Привет <b>'.$aut['login'].'</b> [id='.$aut['id'].']<br/>Ты успешно авторизован<br/>';

        case 'log_out':
          if(!isset($_POST['yes'])){
            div('Выход из учетки');
            echo '&#187; <a href="index.php">Главная</a><br/><br/>';
            echo '<form action="enter.php?act=log_out&amp;rnd='.$rand.'" method="POST">';
            echo '<b>'.$aut['login'].'</b>, внимание!<br/>Вы хотите покинуть сайт<br/>Ваша сессия будет удалена<br/>Чтобы вновь зайти, Вам необходимо будет ввести логин и пароль<br/>Подтвердите выход<br/><br/>';
            echo '<input type="submit" name="yes" value="Покинуть сайт"></form>';
          }else{
            header('location: enter.php?rnd='.$rand);
      }else{
        if(isset($_GET['r_id'])){
          $s=mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `id`='".intval($_GET['r_id'])."'"));
          $log=$s['login'];
        }else{
          $log=$aut['login'];
        }
        div('История логинов');
        echo '&#187; <a href="lk.php">Личный кабинет</a><br/><br/>';
        echo 'Внимание!<br/>Если Вы видите много неудачных попыток логина (причем не с Вашими IP и UА) - возможно Вашу учетку хотят взломать<br/>Возможно есть смысл задуматься о безопасности учетнои записи<br/><br/>';
        echo 'Ваши IР и UА<br/>IР: '.$_SERVER['REMOTE_ADDR'].'<br/>UА: '.$_SERVER['HTTP_USER_AGENT'].'<br/><br/>';
        $q=mysql_query("SELECT * FROM `logs` WHERE `login` = '$log' ORDER BY `time` DESC LIMIT 20");
        while($f=mysql_fetch_assoc($q)){
          if ($f['success']==1)$s='<u><font color="green">успешен</font></u>';
          else
            $s='<u><font color="red">неудачен</font></u>';
          if($f['method']==1)$m='Стандартный вход';
          if($f['method']==2)$m='Стандартный вход';
          if($f['method']==3)$m='Сохраненная сессия';
          $n++;
          if(is_integer($n/2)){
            echo '<div class="msg2">';
          }else{
            echo '<div class="msg1">';
          }
          echo data($f['time']).'<br/>IP: <b><font color="red">'.$f['ip'].'</font></b><br/>UA: <b><font color="red">'.$f['ua'].'</font></b><br/>Логин: '.$s.'<br/>Способ входа: '.$m.'</div>';}}
          break;
        }
        echo '</div>';
        include 'foot.php';
        echo '</div>';
?>




Ну вот, видите какая каша по вложенности :) case находится в if .
Перед else точка с запятой не ставится... Ну и многое другое. В общем, сначала отформатируйте код, приведите уровни к правильному порядку (вложите что и куда надо) и тогда можно будет посмотреть. И кстати, код сюда пишите, а то качать файлы как-то не круто :)
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38502920
Den_S40
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Програмёр,

Да, я новичок в программировании.
Исправить будет сложно? я в ужасе... :O
Думаю как и многие новички :O
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38502921
Den_S40
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А есть какой-нибудь способ быстрее исправить ошибки? :O
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38502924
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скачайте IDE, netbeans выберите тот что для PHP. С ним Вам будет проще
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38502968
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SmeL_mdСкачайте IDE, netbeans выберите тот что для PHP. С ним Вам будет проще

Да-да... кстати... я что-то не подумал предложить. Есть ещё удобная штука eclipse... мне больше понравилось из-за производительности и как-то интерфейс удобнее. Но вот в автодополнении он явно уступает netbeans'у, потому первой средой разработки должна быть именно netbeans...

эх... "подростающее" поколение )))...

1. код надо форматировать на этапе написания (с этим разобрались)

2. куча echo - это не круть... да и вообще echo надо использовать в тех редких случаях, когда надо вывести маленькую строчку, переменную и т.д. То есть тогда, когда это не поломает внешний вид кода... Иначе, лучше писать так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<?php
...

if(!isset($_POST['yes'])){
?>
            <div>Выход из учетки</div>
            &#187; <a href="index.php">Главная</a><br/><br/>
            <form action="enter.php?act=log_out&amp;rnd=<?= $rand ?>" method="POST">
            <b><?= $aut['login'] ?></b>, внимание!<br/>Вы хотите покинуть сайт<br/>Ваша сессия будет удалена<br/>Чтобы вновь зайти, Вам необходимо будет ввести логин и пароль<br/>Подтвердите выход<br/><br/>
            <input type="submit" name="yes" value="Покинуть сайт"></form>
<?php
}
?>



вот это <?= 'что-то там' ?> это краткая запись <?php echo 'что-то там' ?>. Просто красивее смотрится.

3. желательно комментировать то, что пишите... и привыкать к этому с самого начала. Дело в том, что Ваш код уже спустя несколько месяцев будет сложно читаем даже для Вас. А на этапе обучения... Скорее всего через пол годика-годик Вы будете на свои первые кода смотреть как на бред сумасшедшего :)

4. фигурными скобками (закрывающими "}" надо обозначать какой уровень закрываем, а потому не хорошо писать их в конце строки)


итак, попробуем:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
<?php
include 'config.php';
switch($_GET['act']){
  default:
    
    if(!isset($aut)){
      
      //логинимся
      if(isset($_POST['login']) and isset($_POST['pass'])){
        $login=mysql_s($_POST['u954626456_site1']);
        $pass=mysql_s($_POST['597338']);

        $q=mysql_query("SELECT `id` FROM `users` WHERE `login`='$login' AND `pass`='$pass'");
        if(mysql_num_rows($q)!=0){

          //если данные совпали, то
          //пишем в куки - если надо запомнить пользователя
          //или в сессию - если галочка не выбрана и переадресовываем
          if($_POST['forget']){
            $user=get_user(mysql_result($q, 0));
            setcookie ("pass", md5(md5($user['pass'])), time() + 100000);
            setcookie ("uid", $user['id'], time() + 100000);
          }else{ 
            $_SESSION['uid']=mysql_result($q, 0);
          }
          mysql_query("INSERT INTO `logs` (`login`, `ip`, `ua`, `time`, `success`, `method`) values ('$_GET[login]', 
                      '$_SERVER[REMOTE_ADDR]', '$_SERVER[HTTP_USER_AGENT]', '".time()."', '1', '1')"
          );
          header('location: enter.php?rnd='.$rand);
        }else{
          echo "<div>Ошибка</div>";
        }
        
        //тут вывод данных, каких - не совсем понятно.
        //получается "успешно залогинен" даже когда произошла ошибка
        $time_a=data(time());
        ?>
        &#187; <a href="enter.php?rnd=<?= $rand ?>">Авторизация</a><br/><br/>';
        <div>Вход</div>
        Привет <b><?= $aut['login'] ?></b> [id='<?= $aut['id'] ?>']<br/>Ты успешно авторизован<br/>
        <?php
      }  
      
    /*а вот это, похоже история логов
      добавил закрывающую скобку перед комментом
      так как похоже это уже когда успешно залогинились,
      то есть auth уже должна быть установлена (записана)*/
    }else{
      //смотрим существует ли юзер (я так понимаю его можно как-то выбрать
      //если ты админ, тогда проверяем на наличие юзера в базе, или же если
      //сидим под этим именем, просто берём это имя без проверок)
      if(isset($_GET['r_id'])){
        $s=mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `id`='".intval($_GET['r_id'])."'"));
        $log=$s['login'];
      }else{
        $log=$aut['login'];
      }
      
      ?>
      <div>История логинов</div>
      &#187; <a href="lk.php">Личный кабинет</a><br/><br/>
      Внимание!<br/>Если Вы видите много неудачных попыток логина (причем не с Вашими IP и UА) - возможно Вашу учетку хотят взломать<br/>Возможно есть смысл задуматься о безопасности учетнои записи<br/><br/>
      Ваши IР и UА<br/>IР: <?= $_SERVER['REMOTE_ADDR'] ?><br/>UА: <?= $_SERVER['HTTP_USER_AGENT'] ?><br/><br/>
      <?php
      
      $q=mysql_query("SELECT * FROM `logs` WHERE `login` = '$log' ORDER BY `time` DESC LIMIT 20");
      while($f=mysql_fetch_assoc($q)){
        ?>
        <div class="msg<?= $n%2+1 ?>">
           <?= data($f['time']) ?><br/>
          IP: <b><font color="red">'.$f['ip'].'</font></b><br/>
          UA: <b><font color="red">'.$f['ua'].'</font></b><br/>
          Логин: <?= $f['success']==1 ? '<u><font color="green">успешен</font></u>' : '<u><font color="red">неудачен</font></u>' ?><br/>
          Способ входа: <? $f['method']==1 || $f['method']==2 ? 'Стандартный вход' : 'Сохраненная сессия' ?>
        </div>
        <?php
        
        $n++;
      }
    }
  break;
        
  //а это выполняется, когда мы пытаемся выйти
  case 'log_out':
    if(!isset($_POST['yes'])){
      ?>
      <div>Выход из учетки</div>
      &#187; <a href="index.php">Главная</a><br/><br/>
      <form action="enter.php?act=log_out&amp;rnd=<?= $rand ?>" method="POST">
      <b><?= $aut['login'] ?></b>, внимание!<br/>Вы хотите покинуть сайт<br/>Ваша сессия будет удалена<br/>Чтобы вновь зайти, Вам необходимо будет ввести логин и пароль<br/>Подтвердите выход<br/><br/>
      <input type="submit" name="yes" value="Покинуть сайт"></form>
      <?php
    }else{
      header('location: enter.php?rnd='.$rand);
    }
}

//вот тут не понял, что за 2 закрывающихся div, но видимо это не весь код и есть
//ещё что-то над строчкой include 'config.php'
echo '</div>';
include 'foot.php';
echo '</div>';
?>



в общем среда разработки (eclipse) на это чудо уже не ругается... я откоментил некоторые моменты (в этих же комментариях написал свои мысли и действия). В общем вроде так должно быть, но не уверен что все блоки по своим местам расставил, если что-то появится не там, где должно было - значит надо просто перенести :)
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38504143
Den_S40
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Програмёр,

это скрипт авторизации, с ним случился затык...
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38504164
Den_S40
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Програмёр,

php валидатор говорит что у вас ошибка в 20-й строке.
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38504196
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_S40Програмёр,

php валидатор говорит что у вас ошибка в 20-й строке.

на строке $user=get_user(mysql_result($q, 0)); ? Если да, то это не у меня ошибка, а у Вас ;)
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38504249
Den_S40
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Програмёр,

ясно, и как её исправить?
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38504293
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_S40Програмёр,

ясно, и как её исправить?

ну уж не знаю :) я ведь не видел функцию get_user... И понятия не имею что она делает и что в ней может быть не так... может такой функции вообще нету, Вы напишите то ошибку какую Вам показало.

Вообще каждую ошибку, которую Вы получаете надо описывать или предоставлять оригинальный текст. Иначе шанс решить проблему стремится к нулю.
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38504615
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_S40А есть какой-нибудь способ быстрее исправить ошибки? :O
* устанвливаете PHPStorm
* открываете в нем свой файл
* жмете Reformat code
* И наслаждаетесь кодом который красиво станет отформатированным а все ошибки при этом подсветяться как в ворде:
** использование неизвестных переменных
** ошибки вложености как у вас
** неизвестный классы/функции/константы итд
** и даже граматические в именах переменных
ps. Там этих проверок охватывают чуть ли не все.
При полностью включеных настройках он даже подсветит классы которые нигде не используються
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38504888
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренат,
После Вашего описания пошел, сам качать :) хоть использую еклипс. жаль что денег хотят за него
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38505835
Electric200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РенатDen_S40А есть какой-нибудь способ быстрее исправить ошибки? :O
* устанвливаете PHPStorm
* открываете в нем свой файл
* жмете Reformat code
* И наслаждаетесь кодом который красиво станет отформатированным а все ошибки при этом подсветяться как в ворде:
** использование неизвестных переменных
** ошибки вложености как у вас
** неизвестный классы/функции/константы итд
** и даже граматические в именах переменных
ps. Там этих проверок охватывают чуть ли не все.
При полностью включеных настройках он даже подсветит классы которые нигде не используються
Да, и можете дальше писать говнокод, ведь IDE все потом поправить и исправит. А если не дай бог ее у вас под рукой не окажется в срочный момент для быстрой правки, то у вас будет ломка как у наркомана.

Только блокнот для начала, только хардкорд!
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38506107
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Electric200,

тут ошибаетесь. На первых парах хорошая IDE позволяет ускорить процесс обучения. Всё очень просто, за неизвестной функцией не приходится в инэт бежать, а можно просто открыть список автодополнений и найти 2-3 функции, которые по названию похожи и уже их смотреть направленно. А пока списочек копали, ещё и несколько функций подсознательно уловили, а это помогает интуитивно их быстрее найти, когда они потребуются. Ну а спустя некоторое время, вообще позапоминать это всё.

Хорошая IDE позволяет не сидеть и не тупить над пропущенной ";" в конце строки (а ведь по началу, когда опыта 0, можно и часок такую ошибку искать и не понимать что не работает).

Хорошая среда разработки даёт прирост скорости по набиранию текста, так как часто позволяет введя 2-3 буквы уже выбрать нужный вариант текста (на пробел или на энтер, где как). Это ускоряет само обучение и в принципе работу.

Хорошая подсветка синтаксиса приводит к быстрому вылавливанию нужного текста из простыни кода. Это как по принципу "быстрого чтения", когда глазами пробегаешься по тексту, но смотришь (прочитываешь) только те слова, которые несут значимый смысл... а уж когда такие слова подсвечены определённым цветом - тогда вообще круть.

Вот например среда kdevelop для программирования на с++ в линукс (там много ещё языков поддерживается вроде, но мне нужен именно этот). Даже не представляете как подсаживаешься на ту фишку, что каждая переменная определённым цветом подсвечивается, и как становится обидно, когда по какой-то причине какая-то переменная не подсвечивается (как я понял атрибуты объектов так не выделяются). В общем, надо найти где эта переменная пользовалась, и вообще 0 проблем :) Глаз на автомате всё находит (жаль конечно среда в некоторых других моментах уступает эклипсу).


P.S. Попросите delphi программиста спустя месяц-два обучения написать простенькую программку с использованием форм и например какого-нить таймера, в блокноте ))). Как Вы думаете, сколько времени на это уйдёт? А всё потому, что нафиг не надо знать, как и что там делает среда разработки у тебя за спиной... В итоге понемножку всёровно всё поймётся и запомнится, а "сейчас" всегда есть что-то более важное.
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38506372
Electric200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы вот все красиво описали и сейчас новички толпой побегут ставить вашу хваленную IDE (нечего личного к вам или IDE).
Но все таки на начальном уровне важнее выработать в себе дисциплину в организация грамотного кода путем набивания собственных шишек. Вот будет он дуплить 2 часа над не закрытой кавычкой, вот пусть и дуплит. Пока эти все навыки не перейдут на уровень подсознания. Это же базовое.
Чем больше он будет в всматриваться в свой говнокод, тем быстрее к нему придет осознание, что это говнокод. Т.е еще вопрос проф. движения.
А какие классы и объекты могут быть у новичка?

Хотя в некотором роде и не соглашусь с собой. Есть такие чудики которым IDE не IDE, но если у него по жизни на ботинках шнурки волочатся по офису за ним, то и код у него будет организован также.
По этому, будь суровым, пиши сначала в блокноте что бы забыть в подсознание синтаксическую основу языка, а потом уже и IDE можно.
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38506738
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Electric200,
Пусть новичек ест сырые макароны :) как научится их переваривать, покажем где кастрюля и как газ включать. А может еще расскажем что их еще и продувать можно. Если справился с IDE пусть использует, а то что он потратит на опечатку 2 часа (как Вы предположили) то лучше от этого никому не станет.
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38508223
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SmeL_mdElectric200,
Пусть новичек ест сырые макароны :) как научится их переваривать, покажем где кастрюля и как газ включать. А может еще расскажем что их еще и продувать можно. Если справился с IDE пусть использует, а то что он потратит на опечатку 2 часа (как Вы предположили) то лучше от этого никому не станет.
вот вот, работодатели не захотят платить человеку деньги за то чтобы он два часа искал скобку. Работодатель платит за выполненую работу. C IDE новичек сможет намного быстрей разрабатывать скрипты, чего и хочет работодатель. Я конечно понимаю, что часто приходитсья зайти на прод, проверить или пофиксить в срочном порядке в виме, но обычных новичков туда и не пускают - они сидят в деве и пишут код, им надобность уметь кодить в блокноте пока не нужна.

Тем более кто такой новичек?
1) тот кто знает синтаксис но ни одного паттерна, и весь код у него - смесь шаблонов, представлений и контроллеров?
2) или тот кто не знает синтаксиса но отлично умеет использовать различные паттерны?

думаю во втором случае такому новичку без IDE никак.
...
Рейтинг: 0 / 0
Помогите чайнику...
    #38508399
Electric200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если новичок 2 часа дуплит на не закрытой скобкой, то такого на работу вряд ли возьмут. Ну разве что за еду будет работать. По этому пускай сначала подуплит в свободное время. А по поводу макарон, скажу так - если этот новичек планирует стать шеф поваром, то да, он должен жрать макароны сырыми для начала. )
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите чайнику...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]