protected function saveCodeToDatabase()
    {
        $success = false;
        $this->openDatabase();

        if ($this->use_database && $this->pdo_conn) {
            $id = $this->getCaptchaId(false);
            $ip = $_SERVER['REMOTE_ADDR'];

            if (empty($id)) {
                $id = $ip;
            }

            $time      = time();
            $code      = $this->code;
            $code_disp = $this->code_display;

            // This is somewhat expensive in PDO Sqlite3 (when there is something to delete)
            // Clears previous captcha for this client from database so we can do a straight insert
            // without having to do INSERT ... ON DUPLICATE KEY or a find/update
            $this->clearCodeFromDatabase();

            $query = "INSERT INTO {$this->database_table} ("
                    ."id, code, code_display, namespace, created) "
                    ."VALUES(?, ?, ?, ?, ?)";

            $stmt    = $this->pdo_conn->prepare($query);
            $success = $stmt->execute(array($id, $code, $code_disp, $this->namespace, $time));

            if (!$success) {
                $err   = $stmt->errorInfo();
                $error = "Failed to insert code into database. {$err[1]}: {$err[2]}.";

                if ($this->database_driver == self::SI_DRIVER_SQLITE3) {
                    $err14 = ($err[1] == 14);
                    if ($err14) $error .= sprintf(" Ensure database directory and file are writeable by user '%s' (%d).",
                                                   get_current_user(), getmyuid());
                }

                trigger_error($error, E_USER_WARNING);
            }
        }

        return $success !== false;
    }
protected function saveCodeToDatabase()
    {
        $success = false;
        $this->openDatabase();

        if ($this->use_database && $this->pdo_conn) {
            $id = $this->getCaptchaId(false);
            $ip = $_SERVER['REMOTE_ADDR'];

            if (empty($id)) {
                $id = $ip;
            }

            $time      = time();
            $code      = $this->code;
            $code_disp = $this->code_display;

            // This is somewhat expensive in PDO Sqlite3 (when there is something to delete)
            // Clears previous captcha for this client from database so we can do a straight insert
            // without having to do INSERT ... ON DUPLICATE KEY or a find/update
            $this->clearCodeFromDatabase();

            $query = "INSERT INTO {$this->database_table} ("
                    ."id, code, code_display, namespace, created) "
                    ."VALUES(?, ?, ?, ?, ?)";

            $stmt    = $this->pdo_conn->prepare($query);
            $success = $stmt->execute(array($id, $code, $code_disp, $this->namespace, $time));

            if (!$success) {
                $err   = $stmt->errorInfo();
                $error = "Failed to insert code into database. {$err[1]}: {$err[2]}.";

                if ($this->database_driver == self::SI_DRIVER_SQLITE3) {
                    $err14 = ($err[1] == 14);
                    if ($err14) $error .= sprintf(" Ensure database directory and file are writeable by user '%s' (%d).",
                                                   get_current_user(), getmyuid());
                }

                trigger_error($error, E_USER_WARNING);
            }
        }

        return $success !== false;
    }
protected function saveCodeToDatabase ( ) { $ success = false ; $ this -> openDatabase ( ) ; if ( $ this -> use_database && $ this -> pdo_conn ) { $ id = $ this -> getCaptchaId ( false ) ; $ ip = $ _SERVER [ 'REMOTE_ADDR' ] ; if ( empty ( $ id ) ) { $ id = $ ip ; } $ time = time ( ) ; $ code = $ this -> code ; $ code_disp = $ this -> code_display ; // This is somewhat expensive in PDO Sqlite3 (when there is something to delete) // Clears previous captcha for this client from database so we can do a straight insert // without having to do INSERT ... ON DUPLICATE KEY or a find/update $ this -> clearCodeFromDatabase ( ) ; $ query = "INSERT INTO {$this->database_table} (" . "id, code, code_display, namespace, created) " . "VALUES(?, ?, ?, ?, ?)" ; $ stmt = $ this -> pdo_conn -> prepare ( $ query ) ; $ success = $ stmt -> execute ( array ( $ id , $ code , $ code_disp , $ this -> namespace , $ time ) ) ; if ( ! $ success ) { $ err = $ stmt -> errorInfo ( ) ; $ error = "Failed to insert code into database. {$err[1]}: {$err[2]}." ; if ( $ this -> database_driver == self :: SI_DRIVER_SQLITE3 ) { $ err14 = ( $ err [ 1 ] == 14 ) ; if ( $ err14 ) $ error .= sprintf ( " Ensure database directory and file are writeable by user '%s' (%d)." , get_current_user ( ) , getmyuid ( ) ) ; } trigger_error ( $ error , E_USER_WARNING ) ; } } return $ success !== false ; }
Saves the CAPTCHA data to the configured database.
Saves the CAPTCHA data to the configured database .