3v4l.org

run code in 300+ PHP versions simultaneously
<? $defaultdata = array( "showpassword"=>"no", "bgcolor"=>"#ffffff"); function xor_encrypt($in) { $key = '<censored>'; $text = $in; $outText = ''; // Iterate through each character for($i=0;$i<strlen($text);$i++) { $outText .= $text[$i] ^ $key[$i % strlen($key)]; } return $outText; } function loadData($def) { global $_COOKIE; $mydata = $def; if(array_key_exists("data", $_COOKIE)) { $tempdata = json_decode(xor_encrypt(base64_decode($_COOKIE["data"])), true); if(is_array($tempdata) && array_key_exists("showpassword", $tempdata) && array_key_exists("bgcolor", $tempdata)) { if (preg_match('/^#(?:[a-f\d]{6})$/i', $tempdata['bgcolor'])) { $mydata['showpassword'] = $tempdata['showpassword']; $mydata['bgcolor'] = $tempdata['bgcolor']; } } } return $mydata; } function saveData($d) { setcookie("data", base64_encode(xor_encrypt(json_encode($d)))); } $data = loadData($defaultdata); if(array_key_exists("bgcolor",$_REQUEST)) { if (preg_match('/^#(?:[a-f\d]{6})$/i', $_REQUEST['bgcolor'])) { $data['bgcolor'] = $_REQUEST['bgcolor']; } } saveData($data);
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 19
Branch analysis from position: 8
2 jumps found. (Code = 43) Position 1 = 15, Position 2 = 19
Branch analysis from position: 15
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 19
Branch analysis from position: 19
filename:       /in/dDZWh
function name:  (null)
number of ops:  23
compiled vars:  !0 = $defaultdata, !1 = $data
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, <array>
   37     1        INIT_FCALL                                               'loaddata'
          2        SEND_VAR                                                 !0
          3        DO_FCALL                                      0  $3      
          4        ASSIGN                                                   !1, $3
   39     5        FETCH_R                      global              ~5      '_REQUEST'
          6        ARRAY_KEY_EXISTS                                         'bgcolor', ~5
          7      > JMPZ                                                     ~6, ->19
   40     8    >   INIT_FCALL                                               'preg_match'
          9        SEND_VAL                                                 '%2F%5E%23%28%3F%3A%5Ba-f%5Cd%5D%7B6%7D%29%24%2Fi'
         10        FETCH_R                      global              ~7      '_REQUEST'
         11        FETCH_DIM_R                                      ~8      ~7, 'bgcolor'
         12        SEND_VAL                                                 ~8
         13        DO_ICALL                                         $9      
         14      > JMPZ                                                     $9, ->19
   41    15    >   FETCH_R                      global              ~11     '_REQUEST'
         16        FETCH_DIM_R                                      ~12     ~11, 'bgcolor'
         17        ASSIGN_DIM                                               !1, 'bgcolor'
         18        OP_DATA                                                  ~12
   45    19    >   INIT_FCALL                                               'savedata'
         20        SEND_VAR                                                 !1
         21        DO_FCALL                                      0          
         22      > RETURN                                                   1

Function xor_encrypt:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 13
Branch analysis from position: 13
2 jumps found. (Code = 44) Position 1 = 16, Position 2 = 6
Branch analysis from position: 16
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 6
2 jumps found. (Code = 44) Position 1 = 16, Position 2 = 6
Branch analysis from position: 16
Branch analysis from position: 6
filename:       /in/dDZWh
function name:  xor_encrypt
number of ops:  18
compiled vars:  !0 = $in, !1 = $key, !2 = $text, !3 = $outText, !4 = $i
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    5     0  E >   RECV                                             !0      
    6     1        ASSIGN                                                   !1, '%3Ccensored%3E'
    7     2        ASSIGN                                                   !2, !0
    8     3        ASSIGN                                                   !3, ''
   11     4        ASSIGN                                                   !4, 0
          5      > JMP                                                      ->13
   12     6    >   FETCH_DIM_R                                      ~9      !2, !4
          7        STRLEN                                           ~10     !1
          8        MOD                                              ~11     !4, ~10
          9        FETCH_DIM_R                                      ~12     !1, ~11
         10        BW_XOR                                           ~13     ~9, ~12
         11        ASSIGN_OP                                     8          !3, ~13
   11    12        PRE_INC                                                  !4
         13    >   STRLEN                                           ~16     !2
         14        IS_SMALLER                                               !4, ~16
         15      > JMPNZ                                                    ~17, ->6
   15    16    > > RETURN                                                   !3
   16    17*     > RETURN                                                   null

End of function xor_encrypt

Function loaddata:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 41
Branch analysis from position: 8
2 jumps found. (Code = 46) Position 1 = 23, Position 2 = 25
Branch analysis from position: 23
2 jumps found. (Code = 46) Position 1 = 26, Position 2 = 28
Branch analysis from position: 26
2 jumps found. (Code = 43) Position 1 = 29, Position 2 = 41
Branch analysis from position: 29
2 jumps found. (Code = 43) Position 1 = 35, Position 2 = 41
Branch analysis from position: 35
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 41
Branch analysis from position: 41
Branch analysis from position: 28
Branch analysis from position: 25
Branch analysis from position: 41
filename:       /in/dDZWh
function name:  loadData
number of ops:  43
compiled vars:  !0 = $def, !1 = $mydata, !2 = $tempdata
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   18     0  E >   RECV                                             !0      
   19     1        FETCH_W                      global lock         $3      '_COOKIE'
          2        FETCH_W                      global              $4      '_COOKIE'
          3        ASSIGN_REF                                               $4, $3
   20     4        ASSIGN                                                   !1, !0
   21     5        FETCH_R                      global              ~6      '_COOKIE'
          6        ARRAY_KEY_EXISTS                                         'data', ~6
          7      > JMPZ                                                     ~7, ->41
   22     8    >   INIT_FCALL                                               'json_decode'
          9        INIT_FCALL                                               'xor_encrypt'
         10        INIT_FCALL                                               'base64_decode'
         11        FETCH_R                      global              ~8      '_COOKIE'
         12        FETCH_DIM_R                                      ~9      ~8, 'data'
         13        SEND_VAL                                                 ~9
         14        DO_ICALL                                         $10     
         15        SEND_VAR                                                 $10
         16        DO_FCALL                                      0  $11     
         17        SEND_VAR                                                 $11
         18        SEND_VAL                                                 <true>
         19        DO_ICALL                                         $12     
         20        ASSIGN                                                   !2, $12
   23    21        TYPE_CHECK                                  128  ~14     !2
         22      > JMPZ_EX                                          ~14     ~14, ->25
         23    >   ARRAY_KEY_EXISTS                                 ~15     'showpassword', !2
         24        BOOL                                             ~14     ~15
         25    > > JMPZ_EX                                          ~14     ~14, ->28
         26    >   ARRAY_KEY_EXISTS                                 ~16     'bgcolor', !2
         27        BOOL                                             ~14     ~16
         28    > > JMPZ                                                     ~14, ->41
   24    29    >   INIT_FCALL                                               'preg_match'
         30        SEND_VAL                                                 '%2F%5E%23%28%3F%3A%5Ba-f%5Cd%5D%7B6%7D%29%24%2Fi'
         31        FETCH_DIM_R                                      ~17     !2, 'bgcolor'
         32        SEND_VAL                                                 ~17
         33        DO_ICALL                                         $18     
         34      > JMPZ                                                     $18, ->41
   25    35    >   FETCH_DIM_R                                      ~20     !2, 'showpassword'
         36        ASSIGN_DIM                                               !1, 'showpassword'
         37        OP_DATA                                                  ~20
   26    38        FETCH_DIM_R                                      ~22     !2, 'bgcolor'
         39        ASSIGN_DIM                                               !1, 'bgcolor'
         40        OP_DATA                                                  ~22
   30    41    > > RETURN                                                   !1
   31    42*     > RETURN                                                   null

End of function loaddata

Function savedata:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/dDZWh
function name:  saveData
number of ops:  15
compiled vars:  !0 = $d
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   33     0  E >   RECV                                             !0      
   34     1        INIT_FCALL                                               'setcookie'
          2        SEND_VAL                                                 'data'
          3        INIT_FCALL                                               'base64_encode'
          4        INIT_FCALL                                               'xor_encrypt'
          5        INIT_FCALL                                               'json_encode'
          6        SEND_VAR                                                 !0
          7        DO_ICALL                                         $1      
          8        SEND_VAR                                                 $1
          9        DO_FCALL                                      0  $2      
         10        SEND_VAR                                                 $2
         11        DO_ICALL                                         $3      
         12        SEND_VAR                                                 $3
         13        DO_ICALL                                                 
   35    14      > RETURN                                                   null

End of function savedata

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
164.84 ms | 1407 KiB | 29 Q