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

    +151

    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
    20. 20
    if(get_magic_quotes_gpc()) {
        deslash($_GET);
        deslash($_POST);
    }
    
    /*
     * function deslash(&$a)
     * убирает слеши из данных извне
     */
    function deslash(&$a) {
        if(defined('DEBUG'))echo '<br/>deslashing: '.print_r($a,true).'<br/>';
        foreach($a as $k=>$v)
            if (is_array($v)) {
                deslash($a[$k]);
            } else {
                if(defined('DEBUG')) echo 'was: '.$k.' => '.$v.'<br/>';
                $a[$k] = stripslashes($v);
                if(defined('DEBUG')) echo 'become: '.$k.' => '.$a[$k].'<br/>';
            }
    }

    Слэши не пройдут!

    Запостил: RomaShka, 15 Апреля 2011

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

    • Еще и одноступенчатая рекурсия. Мама родная.
      Ответить
      • Чем это лучше?
        Ответить
        • Что "это"?
          Ответить
          • ну, "одноступенчатая" от прочих вариантов? или есть какое-то системное решение против экранирования входных параметров?
            Ответить
            • Вы, батенька, автор и хотите советов мудрых?

              Прочитай, что такое рекурсия.
              У тебя функция вызывает сама себя, но при этом с таким параметром, что рекурсии больше не случится (если, конечно, массив не многомерный).

              Разумеется, встроенные решения есть. Just google it.
              Ответить
              • а массив может быть многомерный. не приходилось сталкиваться?
                и там могут быть кавычки.
                и если на тестовом и продуктивном сервере могут (а они и могут и будут) разные настройки "могучийских ковычек"(с), их надо предусмотреть.
                И да, я, конечно, еще раз погуглю. но до сих пор мне не приходилось натыкаться на встроенное решение этой проблемы. хз, может плохо искал...
                Ответить
                • >(если, конечно, массив не многомерный)
                  >а массив может быть многомерный
                  Ты слепой?

                  array_map(), блять. Мудак.
                  Ответить
                  • о ))) у нас первые несдержанные )) здесь так принято? я не в курсе - новенький, ага
                    array_map на секунду не рекурсивная
                    array_walk_recursive тогда уж больше подойдет.
                    Но с учетов необходимости описания колбэк-функции выигрыша по строчкам не будет. Не так ли? ;)
                    Ответить
                    • http://i.imgur.com/iJVk2.jpg
                      Ответить
                      • а чего ты его подпись (короткую такую, белым) не вставил в картинку ? ))
                        Ответить
                    • О, у нас тут, блять, сто тридцать девятый ньюфаг-смайлофаг.
                      Сейчас ты, пидор, пойдешь и долго подумаешь над:
                      1. Нахуя, тебе, баран тут рекурсия;
                      2. Чем карта отличается от прогулки;
                      3. Тем, чтобы купить очки, раз ты даже не можешь мануал, блять, прочесть и увидеть, что вообще делает функция.
                      Откуда только такие уебки берутся.
                      Одно утешение - из-за них на этом сайте постоянно есть приток новых "идей".
                      Хули зыришь, нет здесь нихуя.
                      Ответить
                      • гер олдфаг, ты че такой серьезный?
                        Ответить
                      • ну тише, тише, прими лекарства и посмотри спокойным, незамутненным рассудком, ну или хотя бы попытайся )))
                        имеем
                        error_reporting(E_ALL);
                        function cb($value){ return stripslashes($value);}
                        import_request_variables('g','g_');
                        if (isset($g_a)){
                            $a=$g_a;
                            echo "GET!\n";
                        }else{
                            $a=array('a'=>"\\\"",'b'=>array('ba'=>"\\\""));
                        }
                        echo get_magic_quotes_gpc()?"get_magic_quotes_gpc on\n":"get_magic_quotes_gpc off\n";
                        print_r($a);
                        $a=array_map("cb",$a);
                        print_r($a);

                        запрашиваем
                        /test/array_map.php?a[a]="&a[b][ba]="
                        или, если лень, то просто
                        /test/array_map.php

                        имеем:
                        GET!
                        get_magic_quotes_gpc on
                        Array
                        (
                            [a] => \"
                            [b] => Array
                                (
                                    [ba] => \"
                                )
                         
                        )
                        <br /> 
                        <b>Notice</b>:  Array to string conversion in <b>C:\AppServ\www\portal.localnet\test\array_map.php</b> on line <b>3</b><br /> 
                        Array
                        (
                            [a] => "
                            [b] => Array
                        )

                        Ну скажи мне, пожалуйста, ценитель русского языка без прикрас - мизантроп, как тут без рекурсии?
                        Обещаю выслушать и признать свою ошибку, в случае чего.
                        Ответить
                        • > function cb($value){ return stripslashes($value);}

                          Пиздануться.
                          Ответить
                        • > echo get_magic_quotes_gpc()?"get_magic_quotes _gpc on\n":"get_magic_quotes_gpc off\n";

                          Охуеть.
                          Ответить
                        • > import_request_variables('g','g_');
                          > $a=$g_a;


                          Обосраться и не жить.
                          Ответить
                      • Что-то давно нет ответа от Александера. Наверное, сегодня во вторую смену уроки поставили...
                        Ответить
                      • ну раз коментариев по поводу рекурсии от мегокодера, вчерашнего школьника (нужное подчеркнуть) не дождемся, тогда предлагаю Саше
                        1) втянуть язык в жопу, где ему самое место
                        2) почитать мануал
                        3) пойти лично туда, откуда берутся такие, как он и удостовериться, что настолько сказочных, как 7ion больше нет.
                        А если серьезно, не торопись с выводами и не спеши уязвить собеседника. Во первых ты не прав, а во вторых ты можешь так и не научиться ничему. Матом ругаться легко. Человеком стать сложнее. Тема закрыта. 7ion проявит себя в другом языке программирования. Когда нибудь. Может быть.
                        Ответить
                        • еще один анально ущемленный?
                          Ответить
                          • 7ion-то? однозначно ))
                            Ответить
                            • а мне показалось, что ты за ним уже сутки бегаешь, торжественно закрываешь тему etc, а не наоборот
                              Ответить
                              • ну, сутки не срок. Но да, немного неприятно, когда обкладывают матом на ровном месте. Я ожидал более конструктивного диалога.
                                Ответить
                                • уныло. да и какой, в жопу, конструктивный диалог о PHP...
                                  Ответить
    • - Ну, всё, всё, встаю. Ты яичницу с чем будешь? С помидорами или с ветчиной?
      Ответить

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