PHP dynamisch mit unterschiedlichen Datenbanken verbinden?

Hallo!

Folgende Situation:

Es gibt mehrere Datenbanken. Eine für alle Installationen meines Projektes (beinhaltet Zugangsdaten für Schul-DB's) und dann weitere, schulspezifische Datenbanken, in denen jeweils andere Dinge stehen (wie zum Beispiel Schüler mit ihren Logindaten, etc.)

Der Benutzer ruft also eine Loginseite auf und gibt eine Schul-ID ein. Nach Buttonklick wird die an ein PHP-Skript übergeben, welche dann aus der Datenbank aller Instanzen die entsprechenden Zugangsdaten für die schulspezifische Datenbank ausliest (anhand der Schul-ID).

Anschließend sollen diese als Variable gesetzt werden, sodass von überall in diesem Skript darauf zugegriffen werden kann. Dabei soll das Ganze allerdings nur für diese Session ersetzt werden und nicht in der Datei. Sodass andere Schüler andere Schul-ID's und damit auch andere Schul-DB's verwenden können.

Wenn der Benutzer dann auf der Loginseite seinen Benutzernamen und sein Passwort eingibt, wird dieses wieder an das PHP-Skript übergeben, welches nun in der schulspezifischen DB nachschaut, ob dort der entsprechende Nutzer existiert.

Folgendes Schema habe ich bis jetzt:

class DB {
  private static $_api_username = "root";
  private static $_api_password = "";
  private static $_api_host = "localhost";
  private static $_api_name = "programmingnow_host";
  private static $_api;

  private static $_db_username = $_SESSION['school_db_user'];
  private static $_db_password = $_SESSION['school_db_pass'];
  private static $_db_host = "localhost";
  private static $_db_name = $_SESSION['school_db_name'];
  private static $_db;

  function __construct() {
    try {
      self::$_api = new PDO("mysql:host=" . self::$_api_host . ";dbname=" . self::$_api_name . ";charset=utf8mb4",  self::$_api_username , self::$_api_password);

      if (isset($_SESSION['school_db_name'])) {
        self::$_db = new PDO("mysql:host=" . self::$_db_host . ";dbname=" . self::$_db_name . ";charset=utf8mb4",  self::$_db_username , self::$_db_password);
      }
    }
    catch(PDOException $e) {
      echo "Datenbankverbindung gescheitert!";
      die();
    }
  }
  
  function connectToSchoolDB($school_id) {
    $stmt = self::$_api->prepare("SELECT instance_db_name, instance_db_user, instance_db_pass FROM instances WHERE instance_key=:instance_key");
    $stmt->bindParam(":instance_key", $school_id);
    $stmt->execute();
    $result = $stmt->fetch();
    $result['instance_db_name'] = $_SESSION['school_db_name'];
    $result['instance_db_user'] = $_SESSION['school_db_user'];
    $result['instance_db_pass'] = $_SESSION['school_db_pass'];
  }

  [..] // Der ganze Rest an Funktionen (wie Login)
} 

Der obige Code funktioniert aber nicht.

Könnt ihr mir da helfen? Wie kann ich das realisieren bzw. wo liegt der Fehler?

Danke schon einmal im Voraus!

VG!

Computer, Technik, HTML, Webseite, programmieren, MySQL, PHP, Technologie, Webentwicklung
Fremder regrestriert sich mit meiner E-Mail?

Hallo zusammen,

gestern erhielt ich eine Mail von Duolingo, dass ich mich anscheinend regrestriert hätte und ich einen Parent-Account angelegt hätte. DIES HABE ICH ABER NICHT. Ich weiß nicht einmal was Duolingo ist. Das ist nicht das erste Mal das sich diese Person irgendwo mit meiner E-Mail regrestriert.

Ich ging gestern sofort auf Duolingo, drückte auf anmelden und schaute ob meine e-mail Adresse dort enthalten ist. Der Nutzername des Accounts stand ebenfalls in der E-Mail drinnen. Ich habe mich also versucht mit meiner E-Mail und dem Nutzernamen anzumelden. Bei beiden Versuchen stand dran, dass kein Konto mit diesen Daten existiert.

Gerade erhielt ich noch einmal eine Mail von Duolingo in der drinnen stand, dass ich vergessen hätte die Sprache zu lernen und es Zeit ist auf Duolingo zu lernen. Etwas weiter unten stand unsusricbe, oder wie man das schreibt.

Darauf habe ich gedrückt und nun sollte ich keine Mails mehr erhalten. In dieser Mail stand allerdings wieder der Nutzername, der aber anscheinend auf Duolingo NICHT existiert....

Wie kann das sein? Als ich auf Unsusricbe drückte, kam ich auch auf der richtigen Seite von Duolingo raus und nicht auf irgendeiner Spam-Fake-Seite.

Wie kann dass allerdings sein, dass der Nutzername und meine e-mail anscheinend nicht in Duolingo enthalten sind, obwohl dieser in der Mail steht?

Meine e-mail wird nun seit September 2021 auf irgendwelchen Seiten regrestriert.

Hier sind alle zusammengefasst:

1. Geo Guesser

2.Crunchyroll

3.Genshin Impact

4.Duolingo

Und noch zwei weitere deren Name mit allerdings nicht einfällt.

Computer, Handy, Internet, Smartphone, Google, Spam, Sicherheit, E-Mail, IT, Phishing

Meistgelesene Beiträge zum Thema Computer