Das kommt darauf an - ich würde nicht einen Großteil meines Vermögens in ein Auto investieren.

Wenn ich nur einen niedrigen 5 stelligen Betrag gespart hätte, würde ich davon maximal 20-25% für ein Auto ausgeben - oder worauf zielt deine Frage ab?

Wenn das Auto teuerer als 9 netto Montagsgehälter ist, steht es nicht mehr in Relation zum Einkommen meiner Meinung nach....

...zur Antwort
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!

...zum Beitrag

Ich habe gerade sehr viele Fragezeichen über meinem Kopf, da ich nicht wirklich verstanden habe was du eigentlich erreichen möchtest.
Ich glaube du weißt noch nicht so genau, was du eigentlich tust und was du vor hast. (Das soll aber um Gottes willen kein Vorwurf sein - jeder hat mal klein angefangen! Und wenn ich heute meine Codes von damals sehen würde .... 🙈)

Authentifizierungsinformationen (Benutzername, Kenntwort, ... etc) sollten nirgendwo im Klartext persistiert sein. Und diese Daten brauchst du auch eigentlich nur 1x bei der Authentifizierung, danach nicht mehr. Dementsprechend gibt es auch keinen Grund sie irgendwo in einer Session abzulegen.

Du hast bereits einen Fehler in deinem Konzept und der wird deine komplette weitere Entwicklung komplizierter machen als sie letztlich sein müsste.

...zur Antwort

Dein Problem ist dass dein Code kein valides XML erzeugt.
Du kannst nicht dein Root Element (=pantomime) schließen und dann ein weiteres, paralleles Element "draw" schreiben.

Dein XML würde in etwa so aussehen:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<pantomime>
  <word>foo</word>
</pantomime>
<draw>
  <word>bar</word>
</draw>

Und sollte in etwa so aussehen um valide zu sein:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- es fehlt ein umschließendes Root Element sobald du neben pantomime ein weiteres Element schreibst -->
<root>
  <pantomime>
    <word>foo</word>
  </pantomime>
  <draw>
    <word>bar</word>
  </draw>
</root>

Wie du siehst fehlt die ein umschließendes Root Element für die Elemente pantomime und draw.

...zur Antwort
phpMyAdmin: Fehler bei der Konfiguration?

Moin zusammen,

nachdem ich XAMPP auf meinem Rechner neu eingerichtet habe, bekomme ich jetzt Fehlermeldungen bei phpMyAdmin:

Fehler: mysqli::query(): (HY000/1018): Verzeichnis von '.' nicht lesbar (Fehler: 13 &quot;Permission denied&quot;)

Logisch, der Fehler ist "offensichtlich", er kann ein Verzeichnis nicht lesen. Lese+Schreib-Rechte geben hab ich schon versucht.

Wenn ich auf den Link "Finden Sie heraus warum" gehe, gibt er mir die Möglichkeit, eine Datenbank anzulegen und die Konfigurationsspeicher-Tabellen einzurichten.

Wenn ich auf "anlegen" klicke, kommt eine weitere Fehlermeldung:

Die config.inc.php spuckt das hier aus:

$cfg['blowfish_secret'] = 'xampp'; /* YOU SHOULD CHANGE THIS FOR A MORE SECURE COOKIE AUTH! */

/**
 * Servers configuration
 */
$i = 0;

/**
 * First server
 */
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
/* Server parameters */
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = true;

/**
 * phpMyAdmin configuration storage settings.
 */

/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = '';

/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';

/**
 * End of servers configuration
 */

Heute Mittag hat alles noch wunderbar funktioniert. Ich hatte dann versucht, mit compose phpmailer zu installieren. Da bekam ich dann Probleme mit den Rechten bei den Ordnern (innerhalb von lampp) und hab da womöglich irgendwas kaputt gemacht und jetzt alles neu installiert mit dem Ergebnis, dass MySQL Probleme macht.

Weiß jemand Rat? ^^

...zum Beitrag

Du hast dem Prozess wohl die Rechte entzogen auf das Dateisystem zu schreiben. Einfachste Lösung ist die Rechte für das Verzeichnis für alle schreibbar zu machen. (da es sich hier sowieso nur um eine lokale Entwicklungsumgebung handelt)

Besser ist zu schauen welcher Benutzer die Dienste startet und dann diesen die entsprechenden Rechte zu gewähren

...zur Antwort

Ich habe mir den Ergotopia NextBack geholt und bin sehr zufrieden damit. Liegt aber etwas über deinem geplanten Budget

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.