3v4l.org

run code in 300+ PHP versions simultaneously
<?php $_SERVER["HTTP_USER_AGENT"] = "TeachMe-App v000003 Android 4.4.2 on generic"; $MinVersion["TeachMe-App"] = 000004; $Client["Client"] = "TeachMe-App"; if(!isset($_SERVER["HTTP_USER_AGENT"]) || array_search($Client["Client"], $AllowedClients) === FALSE) { header("X-API-Status: 40003 Invalid UserAgent"); die(); } if(strpos($_SERVER["HTTP_USER_AGENT"], "v") > 0) { //6-Stellige Versionsnummer hinter dem v auslesen $Client["Version"] = substr($_SERVER["HTTP_USER_AGENT"], strpos($_SERVER["HTTP_USER_AGENT"], "v") + 1, 6); $Client["Version"] = is_int($Client["Version"]) ? intval($Client["Version"]) : -1; } if($Client["Version"] < $MinVersion[$Client["Client"]]) { header("X-API-Status: 40004 Client-Version Too Old"); die("40004"); } print_r($Client); die("40000");
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 47) Position 1 = 11, Position 2 = 18
Branch analysis from position: 11
2 jumps found. (Code = 43) Position 1 = 19, Position 2 = 23
Branch analysis from position: 19
1 jumps found. (Code = 79) Position 1 = -2
Branch analysis from position: 23
2 jumps found. (Code = 43) Position 1 = 31, Position 2 = 57
Branch analysis from position: 31
2 jumps found. (Code = 43) Position 1 = 50, Position 2 = 54
Branch analysis from position: 50
1 jumps found. (Code = 42) Position 1 = 55
Branch analysis from position: 55
2 jumps found. (Code = 43) Position 1 = 62, Position 2 = 66
Branch analysis from position: 62
1 jumps found. (Code = 79) Position 1 = -2
Branch analysis from position: 66
1 jumps found. (Code = 79) Position 1 = -2
Branch analysis from position: 54
2 jumps found. (Code = 43) Position 1 = 62, Position 2 = 66
Branch analysis from position: 62
Branch analysis from position: 66
Branch analysis from position: 57
Branch analysis from position: 18
filename:       /in/taKHg
function name:  (null)
number of ops:  71
compiled vars:  !0 = $MinVersion, !1 = $Client, !2 = $AllowedClients
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   FETCH_W                      global              $3      '_SERVER'
          1        ASSIGN_DIM                                               $3, 'HTTP_USER_AGENT'
          2        OP_DATA                                                  'TeachMe-App+v000003+Android+4.4.2+on+generic'
    3     3        ASSIGN_DIM                                               !0, 'TeachMe-App'
          4        OP_DATA                                                  4
    5     5        ASSIGN_DIM                                               !1, 'Client'
          6        OP_DATA                                                  'TeachMe-App'
    7     7        FETCH_IS                                         ~7      '_SERVER'
          8        ISSET_ISEMPTY_DIM_OBJ                         0  ~8      ~7, 'HTTP_USER_AGENT'
          9        BOOL_NOT                                         ~9      ~8
         10      > JMPNZ_EX                                         ~9      ~9, ->18
         11    >   INIT_FCALL                                               'array_search'
         12        FETCH_DIM_R                                      ~10     !1, 'Client'
         13        SEND_VAL                                                 ~10
         14        SEND_VAR                                                 !2
         15        DO_ICALL                                         $11     
         16        TYPE_CHECK                                    4  ~12     $11
         17        BOOL                                             ~9      ~12
         18    > > JMPZ                                                     ~9, ->23
    9    19    >   INIT_FCALL                                               'header'
         20        SEND_VAL                                                 'X-API-Status%3A+40003+Invalid+UserAgent'
         21        DO_ICALL                                                 
   10    22      > EXIT                                                     
   13    23    >   INIT_FCALL                                               'strpos'
         24        FETCH_R                      global              ~14     '_SERVER'
         25        FETCH_DIM_R                                      ~15     ~14, 'HTTP_USER_AGENT'
         26        SEND_VAL                                                 ~15
         27        SEND_VAL                                                 'v'
         28        DO_ICALL                                         $16     
         29        IS_SMALLER                                               0, $16
         30      > JMPZ                                                     ~17, ->57
   16    31    >   INIT_FCALL                                               'substr'
         32        FETCH_R                      global              ~19     '_SERVER'
         33        FETCH_DIM_R                                      ~20     ~19, 'HTTP_USER_AGENT'
         34        SEND_VAL                                                 ~20
         35        INIT_FCALL                                               'strpos'
         36        FETCH_R                      global              ~21     '_SERVER'
         37        FETCH_DIM_R                                      ~22     ~21, 'HTTP_USER_AGENT'
         38        SEND_VAL                                                 ~22
         39        SEND_VAL                                                 'v'
         40        DO_ICALL                                         $23     
         41        ADD                                              ~24     $23, 1
         42        SEND_VAL                                                 ~24
         43        SEND_VAL                                                 6
         44        DO_ICALL                                         $25     
         45        ASSIGN_DIM                                               !1, 'Version'
         46        OP_DATA                                                  $25
   17    47        FETCH_DIM_R                                      ~27     !1, 'Version'
         48        TYPE_CHECK                                   16          ~27
         49      > JMPZ                                                     ~28, ->54
         50    >   FETCH_DIM_R                                      ~29     !1, 'Version'
         51        CAST                                          4  ~30     ~29
         52        QM_ASSIGN                                        ~31     ~30
         53      > JMP                                                      ->55
         54    >   QM_ASSIGN                                        ~31     -1
         55    >   ASSIGN_DIM                                               !1, 'Version'
         56        OP_DATA                                                  ~31
   20    57    >   FETCH_DIM_R                                      ~32     !1, 'Version'
         58        FETCH_DIM_R                                      ~33     !1, 'Client'
         59        FETCH_DIM_R                                      ~34     !0, ~33
         60        IS_SMALLER                                               ~32, ~34
         61      > JMPZ                                                     ~35, ->66
   22    62    >   INIT_FCALL                                               'header'
         63        SEND_VAL                                                 'X-API-Status%3A+40004+Client-Version+Too+Old'
         64        DO_ICALL                                                 
         65      > EXIT                                                     '40004'
   24    66    >   INIT_FCALL                                               'print_r'
         67        SEND_VAR                                                 !1
         68        DO_ICALL                                                 
   25    69      > EXIT                                                     '40000'
         70*     > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
158.08 ms | 1400 KiB | 23 Q