1. PHP / Говнокод #4094

    +160

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    if( isset( $_POST['username'] ) && $_POST['username'] != '' ) {
    		$username = $_POST['username'];
    		$password = $_POST['password'];
    
    		
    		$rs = mysql_query( "select * from admin" );
    		$row = mysql_fetch_array( $rs ) ;
    		
    		//echo "$username == $row[username] && $password == $row[password]";
    
    		if( $username == $row['username'] && $password == $row['password']) 
    		{
    			session_register( 'ADMIN_NAME' );
    			$_SESSION['ADMIN_NAME'] = $row['name'];
    			 header( "Location: home.php" );
    			exit;
    		} else
    			$err = "Your Username and Password is invalid";
    	}

    Это же просто песня! К слову: сайт был написан румынскими кодерами чуть больше года назад.

    Запостил: Alecfyz, 24 Августа 2010

    Комментарии (20) RSS

    • session_register( ); — вроде как уже устаревшее решение?
      Ответить
      • Это единственное, что Вас тут смущает?

        тут еще код-стайл не очень...
        Ответить
        • Ну ещё смущает таблица «админ» с единственной записью.
          Ещё звездочка в селекте.
          И почему-то пасворд на входе никак не проверяется.
          Ответить
          • они всеравно в запрос не попадают => нахуй проверять :)
            Ответить
            • Ну а если пофигу, что у админа пустой пароль, то зачем вообще такой балет городить?
              Ответить
          • Я думаю что дерьмовая архитектура дерьмовее дерьмового кода. Представьте например, что мы решим сделать не формочную, а NTLM авторизацию и с проверкой не в базе, а в LDAP.

            Что будет?
            Ответить
          • >>Ну ещё смущает таблица «админ» с единственной записью.
            у пыхавцев есть поверье чт все-все-все надо хранить в базе. Даже конфиг. Потому что до файла с конфигом хрен доберешься (откуда ты знаешь какая там pwd на очередном хостинге?) а до базы -- легко.
            Ответить
    • Нет проверки входящих в $_POST;
      Пароль хранится в БД в открытом виде;
      Небезопасное сравнение ("==" вместо "===").
      Это самое ужасное; остальное по сравнению с этим - мелочи.
      Ответить
      • Проверка $_POST тут как раз не нужна, значения не идут в запрос (что конечно мегакреативно, но разговор не об этом)

        А что с ==? Что может случиться от небезопасного сравнения в данном случае?
        Ответить
        • >>А что с ==?
          если база сломается, и ты не передаешь туда постом параметров, то войдешьв систему
          Ответить
    • > Your Username and Password are invalid
      fixed

      Румынские погромисты такие румынские.
      Ответить
      • вот, Вы нашли главную багу этого кода
        Ответить
      • Неа, здесь engrish правильный, но облом в логике
        not (P and Q) = not P or not Q
        username or password is invalid
        Ответить
    • > сайт был написан румынскими кодерами...
      гастарбайтарами?
      Ответить
      • Нет, не гастарбайтерами. Просто румынскими кодерами. Кодерами, живущими в Румынии (это страна такая).
        Ответить
        • надо было скобочки нарисовать. А то меня посчитали за тупого
          Ответить
          • Нет, я понял ваш сарказм, но мне он кажется не совсем уместным и умным. Без обид.
            Ответить
            • пардон
              Ответить
              • Вы наверное имели ввиду Молдавию, а не Румынию. Это родственные народы, но все таки страна другая.

                Хотя молдаване написали DOS Navigator и the Bat)) А вообще я против национальных предрассудков, конечно
                Ответить

    Добавить комментарий