Adatbázis kapcsolat létrehozása, .env fájlban tárolva az érzéskeny adatokat:
connect.php egyik lehetséges megoldása:
<?php
//telepítsük: composer require vlucas/phpdotenv ez létre hoz
egy vendor mappát
//majd hozzuk létre a .env fájlt a gyökér könyvtárban
//.gitignore létrehozása .env tartalommal
/**a .env fájlt a .gitignore fájlhoz. Ez megakadályozza,
hogy a .env fájl a Git verziókezelésébe kerüljön. */
// Load Composer's autoloader
require_once __DIR__ . '/vendor/autoload.php';
// Load environment variables from the .env file
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
// HTTP fejléc beállítása a megfelelő tartalomtípussal és
karakterkódolással
header("Content-Type: text/html; charset=utf-8");
// Adatbázis kapcsolódáshoz szükséges adatok definíciója
define("DBHOST", $_ENV['DBHOST']);
define("DBUSER", $_ENV['DBUSER']);
define("DBPASS", $_ENV['DBPASS']);
define("DBNAME", $_ENV['DBNAME']);
// Adatbázis kapcsolat létrehozása, és az esetleges hibák
kezelése
$dbconn = @mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME) or
die("Hiba az adatbázis csatlakozásakor!");
// Karakterkódolás beállítása az adatbáziskapcsolaton
keresztül
mysqli_query($dbconn, "SET NAMES utf8");
.env fájl tartalma:
DBHOST=localhost
DBUSER=root
DBPASS=
DBNAME=gazdanaplo
connect_test.php vagyis az adatábzis kapcsolat tesztelése
<?php
// Betöltjük a tesztelendő fájlt
require_once __DIR__ . '/connect.php';
/**
* Teszteli az
adatbázis-kapcsolatot
* @param mysqli
$dbconn Az adatbázis-kapcsolat
*/
function testDatabaseConnection($dbconn)
{
if ($dbconn) {
echo "Az
adatbázis-kapcsolat sikeres!<br>";
} else {
echo "Az
adatbázis-kapcsolat sikertelen: " . mysqli_connect_error() .
"<br>";
}
}
/**
* Teszteli a
karakterkódolás beállítását az adatbázis-kapcsolaton
* @param mysqli
$dbconn Az adatbázis-kapcsolat
*/
function testCharacterEncoding($dbconn)
{
$result =
mysqli_query($dbconn, "SHOW VARIABLES LIKE
'character_set_connection';");
$row =
mysqli_fetch_assoc($result);
if ($row['Value']
=== 'utf8') {
echo "A
karakterkódolás UTF-8-ra van állítva.<br>";
} else {
echo "A
karakterkódolás nem UTF-8. Jelenlegi beállítás: " .
htmlspecialchars($row['Value']) . "<br>";
}
}
/**
* Teszteli, hogy a
környezeti változók megfelelően betöltődtek-e
*/
function testEnvVariables()
{
$requiredKeys =
['DBHOST', 'DBUSER', 'DBPASS', 'DBNAME'];
$missingKeys = [];
foreach
($requiredKeys as $key) {
if
(empty($_ENV[$key])) {
$missingKeys[] = $key;
}
}
if
(empty($missingKeys)) {
echo
"Minden szükséges környezeti változó be van állítva.<br>";
} else {
echo
"Hiányzó környezeti változók: " . implode(', ', $missingKeys) .
"<br>";
}
}
// Tesztek futtatása
echo "<h2>Adatbázis-kapcsolat
tesztelése</h2>";
testDatabaseConnection($dbconn);
echo "<h2>Karakterkódolás
tesztelése</h2>";
testCharacterEncoding($dbconn);
echo "<h2>Környezeti változók
tesztelése</h2>";
testEnvVariables();
// Az adatbázis-kapcsolat lezárása
mysqli_close($dbconn);
Nincsenek megjegyzések:
Megjegyzés küldése