3v4l.org

run code in 300+ PHP versions simultaneously
<?php echo "<!doctype html>\n"; $username = $_GET['username']; //wouldnt use GET for passing username and password; $password = $_GET['password']; $password = password_hash($password, PASSWORD_BCRYPT, 12); $pdo = new PDO('sqlite::memory:'); //assume we don't really want to drop our users table on every run of this script. //$pdo->exec("DROP TABLE IF EXISTS users"); //$pdo->exec("CREATE TABLE users (username VARCHAR(255), password VARCHAR(255))"); $sql = "INSERT INTO users (username,password) VALUES (:username,:password)"; $q = $conn->prepare($sql); $q->execute(array(':username'=>$username,':password'=>$password)); //this would always return a result as we've just inserted a new user with those values, so I'd totally seperate out the user //registration and login code. $statement = $pdo->query("SELECT * FROM users WHERE username = '$username' AND password = '$password'"); if (count($statement->fetchAll())) { echo "Access granted to $username!<br>\n"; } else { echo "Access denied for $username!<br>\n"; }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 40, Position 2 = 45
Branch analysis from position: 40
1 jumps found. (Code = 42) Position 1 = 49
Branch analysis from position: 49
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 45
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/rd2fm
function name:  (null)
number of ops:  50
compiled vars:  !0 = $username, !1 = $password, !2 = $pdo, !3 = $sql, !4 = $q, !5 = $conn, !6 = $statement
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ECHO                                                     '%3C%21doctype+html%3E%0A'
    5     1        FETCH_R                      global              ~7      '_GET'
          2        FETCH_DIM_R                                      ~8      ~7, 'username'
          3        ASSIGN                                                   !0, ~8
    7     4        FETCH_R                      global              ~10     '_GET'
          5        FETCH_DIM_R                                      ~11     ~10, 'password'
          6        ASSIGN                                                   !1, ~11
    9     7        INIT_FCALL                                               'password_hash'
          8        SEND_VAR                                                 !1
          9        SEND_VAL                                                 '2y'
         10        SEND_VAL                                                 12
         11        DO_ICALL                                         $13     
         12        ASSIGN                                                   !1, $13
   11    13        NEW                                              $15     'PDO'
         14        SEND_VAL_EX                                              'sqlite%3A%3Amemory%3A'
         15        DO_FCALL                                      0          
         16        ASSIGN                                                   !2, $15
   17    17        ASSIGN                                                   !3, 'INSERT+INTO+users+%28username%2Cpassword%29+VALUES+%28%3Ausername%2C%3Apassword%29'
   18    18        INIT_METHOD_CALL                                         !5, 'prepare'
         19        SEND_VAR_EX                                              !3
         20        DO_FCALL                                      0  $19     
         21        ASSIGN                                                   !4, $19
   19    22        INIT_METHOD_CALL                                         !4, 'execute'
         23        INIT_ARRAY                                       ~21     !0, '%3Ausername'
         24        ADD_ARRAY_ELEMENT                                ~21     !1, '%3Apassword'
         25        SEND_VAL_EX                                              ~21
         26        DO_FCALL                                      0          
   23    27        INIT_METHOD_CALL                                         !2, 'query'
         28        ROPE_INIT                                     5  ~24     'SELECT+%2A+FROM+users+WHERE+username+%3D+%27'
         29        ROPE_ADD                                      1  ~24     ~24, !0
         30        ROPE_ADD                                      2  ~24     ~24, '%27+AND+password+%3D+%27'
         31        ROPE_ADD                                      3  ~24     ~24, !1
         32        ROPE_END                                      4  ~23     ~24, '%27'
         33        SEND_VAL_EX                                              ~23
         34        DO_FCALL                                      0  $27     
         35        ASSIGN                                                   !6, $27
   25    36        INIT_METHOD_CALL                                         !6, 'fetchAll'
         37        DO_FCALL                                      0  $29     
         38        COUNT                                            ~30     $29
         39      > JMPZ                                                     ~30, ->45
   26    40    >   ROPE_INIT                                     3  ~32     'Access+granted+to+'
         41        ROPE_ADD                                      1  ~32     ~32, !0
         42        ROPE_END                                      2  ~31     ~32, '%21%3Cbr%3E%0A'
         43        ECHO                                                     ~31
         44      > JMP                                                      ->49
   28    45    >   ROPE_INIT                                     3  ~35     'Access+denied+for+'
         46        ROPE_ADD                                      1  ~35     ~35, !0
         47        ROPE_END                                      2  ~34     ~35, '%21%3Cbr%3E%0A'
         48        ECHO                                                     ~34
   29    49    > > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
142.12 ms | 1400 KiB | 15 Q