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":
...e poi inserivo il codice per la connessione all'inizio di ogni pagina:codice:<?php $hostname = "localhost"; $database = "mio_database"; $username = "root"; $password = ""; ?>
Ora invece nel file "___dbconnection.php" ho inserito anche la connessione al database: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(); } ?>
...e poi all'inizio di ogni pagina ho questo codice per controllare la sessione: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(); } ?>
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ù:
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).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()); } ?>
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.

Rispondi quotando