Ciao,
rileggendo il codice ho notato altre cose

primo, modifica il tuo metodo db_open

Codice PHP:
    function db_open() {
        
$this->host       $host 'localhost';
        
$this->user     $user 'administrator';
        
$this->password $password 'mikmik';
        
$this->dbname     $dbname 'postgres';
        
$this->port     $port 5432;
    } 
in questo modo

Codice PHP:
    function db_open() {
        
$this->host       'localhost';
        
$this->user     'administrator';
        
$this->password 'mikmik';
        
$this->dbname     'postgres';
        
$this->port     5432;
    } 
Secondo, cerca di procedere un passo per volta, esegui solo la prima query, commenta tutto il resto, ad esempio, prova questo codice

Codice PHP:

$login 
'my_user';
$password 'my_password';

$db1 = new db();
$db1->db_open();
$db1->db_connect();
$result1 $db1->query("INSERT INTO utente (login, pw, tipo_utente) VALUES ('".$login."', '".$password."', 'privato')");

if (!
$result1) {
    echo 
"An error occured.\n" pg_last_error();
    exit;
}else{
    echo 
"Utente ".$login." inserito! Ora loggati alla pagina iniziale";
    
//header('Location: index.php');

Non so se hai solo dimenticato di postarle o proprio le hai dimenticate, ma le variabili $login, $password e $usr non sono mai state definite.

Inoltre nella prima query hai inserito solo apici singoli, nell'esempio che ti ho postato cìè la versione corretta, con apici singoli e doppi .

Facci sapere

Ciao