Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2022
    Messaggi
    75

    Problema connessione al database: unire connessione per login al sito e connessione per query varie

    Buonasera,


    credo di essermi impantanato con le connessioni al database. Funzionava tutto bene, ampiamente testato con diversi tipi di query (SELECT, INSERT, UPDATE, CREATE, TRUNCATE, ecc), ma poi ho deciso di gestire anche l'autenticazione al sito tramite il database ed ora ho un problema con le query. Inizialmente, username e password di un piccolo login (max 10 utenti), erano memorizzate direttamente in un file php.

    Quindi avevo un file con i dati del database "___dbconnection.php":
    codice:
    <?php
    
    $hostname = "localhost";
    $database = "mio_database";
    $username = "root";
    $password = "";
    
    ?>
    ...e poi inserivo il codice per la connessione all'inizio di ogni pagina:

    codice:
    <?php
    
    require_once 'sql/___dbconnection.php';
    
    try {
        $connection = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
        $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        //print_r("Connessione al database '".$database."' riuscita");
    } catch (PDOException $e) {
        print_r ("ERRORE: impossibile connettersi al database ".$database." - " . $e->getMessage());
        die();
    }
    
    ?>
    Ora invece nel file "___dbconnection.php" ho inserito anche la connessione al database:

    codice:
    <?php
    
    session_start();
    
    $hostname = "localhost";
    $database = "mio_database";
    $username = "root";
    $password = "";
    
    
    try {
        $connect = new PDO("mysql:host=".$hostname."; dbname=".$database, $username, $password);
        $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
        echo $e->getMessage();
    }
    
    ?>
    ...e poi all'inizio di ogni pagina ho questo codice per controllare la sessione:


    codice:
    <?php
    
    require 'sql/___dbconnection.php';
    if (empty($_SESSION['my_user'])) {
        header('Location: login.php');
    }
    
    ?>

    Il problema che riscontro in ogni pagina � che, nonostante l'autenticazione (login al sito) funzioni correttamente, non riesco pi� a connettermi al database per tutte le altre query della pagina:


    Notice: Undefined variable: connection in K:\EasyPHP-Devserver-17_db...


    Ricapitolando, se nella pagina includo il file della connessione al database, non dovrei di conseguenza avere la variabile $connection disponibile in tutta la pagina per ogni query da eseguire? Esempio di query che si trova nella stessa pagina e che non funziona più:

    codice:
    <?php
    
    try {
        $data_elenco_comuni = $connection->query('SELECT * FROM tbl_elenco_comuni ORDER BY id ASC')->fetchAll();
    } catch (PDOException $e) {    
        print_r ("ERRORE: ".$e->getMessage());
    }
    
    ?>
    Poi volevo anche chiedere se va bene includere session_start(); nel file di connessione al database (viene richiamato ogni volta che si apre la pagina).


    Forse dovrei ritornare alla situazione iniziale e creare semplicemente un nuovo file per la connessione al database, da eseguire solo al momento del login.


    Insomma sono un po confuso.
    Ultima modifica di jip77; 19-12-2024 a 17:11

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2022
    Messaggi
    75
    Vi chiedo umilmente perdono, ma sto smanettando da questa mattina e solo ora mi sono accorto che nella pagina del login e nel file della connessione usavo la variabile $connect ed in tutte le altre pagine la variabile $connection

    Ne approfitto comunque per chiedervi se sto facendo bene.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2024
    Messaggi
    2
    Per evitare problemi di variabili non definite o duplicati, puoi incapsulare la connessione in una funzione e richiamarla ogni volta che ti serve:
    codice:
    function getDatabaseConnection() {
        $hostname = "localhost";
        $database = "mio_database";
        $username = "root";
        $password = "";
        try {
            $connection = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
            $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            return $connection;
        } catch (PDOException $e) {
            die("ERRORE: impossibile connettersi al database - " . $e->getMessage());
        }
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.