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

    +164

    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
    function maybe_unserialize( $original ) {
    	if ( is_serialized( $original ) ) // don't attempt to unserialize data that wasn't serialized going in
    		return @unserialize( $original );
    	return $original;
    }
    
    function maybe_serialize( $data ) {
    	if ( is_array( $data ) || is_object( $data ) )
    		return serialize( $data );
    
    	if ( is_serialized( $data ) )
    		return serialize( $data );
    
    	return $data;
    }

    Мне нравится подход, есть в этом что-то занятное... : )

    WP

    Запостил: sectus, 25 Февраля 2011

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

    • интересно здесь то, как оно проверяет "is_serialized" при том, что "don't attempt to unserialize data".
      если предполагается функция типа http://www.cs278.org/blog/2009/10/23/php-function-is_serialized/ , то все очень печально...
      Ответить
      • ах, так это вордпресс...
        глянул, там is_serialized на регулярках, так что проверка (по идее, проверять лень) будет работать гораздо дольше, чем собственно обращение к unserialize как-то так
        $data = @unserialize($str);
        if($data !== false || $str === 'b:0;')
            echo 'ok';
        else
            echo "not ok";
        Ответить
    • maybe_yes.maybe_no;
      maybe_sex.i_dont_know;
      Ответить

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