3v4l.org

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

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
170.56 ms | 1400 KiB | 23 Q