2 MySQL Verbindungen bei einem Skript?

HCWD

Erfahrenes Mitglied
servus leute.

hab da eine kleine frage. gehen wir davon aus: wir haben ein skript (CMS), dass mit einem admin panel für den administrator beim login ausgestattet ist. in diesem adminpanel will ich ein bereich "Module" integrieren. ich will die möglihckeit erzwingen, dass man sich weitere Module in das CMS rein integrieren kann durch reinkopieren der neuen Daten (vom so genannten Modul) und anklicken um es zu aktiveren.

das war so das grundwissen, damit ihr es euch in etwa vorstellen könnt.
jetzt meine problemstelle: wenn man diese daten reinkopiert soll man jedoch nicht die möglihckeit haben es gleich anwenden zu können, sondern erst dann wenn man nen extra eintrag in die Mysql datenbank besitzt. Dieser eintrag soll durch diese Modulrubirk per nem kleinen Formular getätigt werden, indem man erst die kundennummer, dann den Modulnamen und als letztes nen lizenzkey eintippt und abschickt. Jetzt kommts! ich hab ja schon eine mysql verbindung mit der lokalen datenbank. jedoch will ich beim versenden der verifizierungsdaten sich zu einer ganz anderen Datenbankverbinden, die sogar nicht auf dem LOCALHOST sitzt. wie kann ich somit eine 2. verbindung aufbauen ohne, dass der nutzer groß was umschalten muss per skript.

am besten wäre es, wenn diese verbindung unabhängig voneinander parallel laufen würden. wir gehen davon aus, dass man die datenbankparameter nicht extra als user eintippen muss, sondern die sind dann schon im code eingerichtet.

hätte ja jemand eine idee, wie man dieses problem lösen könnte, rein theoretisch mit paar kleinen codebeispielen?
 
Hi!

Einfachste wäre, wenn du eine Klasse für die DB Anbindung benutzen würdest!

Dies hier wäre z.B. so eine Klasse: (Allerdings sehr minimal)
PHP:
class db {
    // function to connect to the mysql server
    function connect($mysqluser,$mysqlpass,$mysqlhost,$mysqldb)
    {
        // connect to mysql server
        $link = @mysql_connect($mysqlhost,$mysqluser, $mysqlpass);
        mysql_select_db($mysqldb);
        
        return $link;
    }
    
    // function to select a sql query
    function sql($sql)
    {
            return mysql_query($sql);
    }
}

Im Script schaut das dann so aus:
PHP:
$dbLocal = new db;
$dbLizensServer = new db;

if ($dbLocal->connect('foo','bar','localhost','db_cms')) {
	$qry = $dbLocal->sql('SELECT * FROM tbl');
} else {
	echo 'Keine Verbindung zur lokalen Datenbank';
}


if ($dbLizensServer->connect('wichtig','ganzwichtig','lizensserver.domain.tld','db_modullizensen')) {
	$qry = $dbLizensServer->sql('INSERT INTO tbl ....');
} else {
	echo 'Keine Verbindung zum Lizensserver';
}

Du solltest nur eins bedenken:
Wenn du die Passwörter im Script vom Lizensserver hinterlegst, kann natürlich jeder der sich den Sourcecode anschaut mit den Daten auf deinen Datenbankserver mit den Lizensschlüsseln für die Module.

Desweiteren musst du beachten, wie Serverintensiv die ganze sache wird und ob das Script auch weiterhin arbeitet, falls dein DB Server mal nicht zu erreichen ist.
 
Zuletzt bearbeitet:
danke für die hilfe. werde mich mal mit deinem beispiel auseinander setzen und versuchen darauf zu baisieren.

bezüglich deiner ratschläge: wie ist des möglich die anmeldedaten und lizenzschlüssel raus zu fischen, wenn es doch nur per query geschieht und als md5 direkt als vergleich (if- anweisung) verarbeitet wird.

vielleicht muss ich zu meinem projekt sagen: der lizenzschlüssel wird dem kunden per email zugeschickt und beim eintippen des lizenzkeys wird der aktuelle lizenzkey abgerufen vom lizenzserver und anhand der kundennummer und dem modul (beides muss übereinstimmen) die lizenznummer (als md5 kodierung) abgerufen und mit dem eingegebenen key verglichen.

gibt es eine sichere lösung? würd mich über eine etwas ausführlicherer aufklärung freuen.
 
bezüglich deiner ratschläge: wie ist des möglich die anmeldedaten und lizenzschlüssel raus zu fischen, wenn es doch nur per query geschieht und als md5 direkt als vergleich (if- anweisung) verarbeitet wird.

vielleicht muss ich zu meinem projekt sagen: der lizenzschlüssel wird dem kunden per email zugeschickt und beim eintippen des lizenzkeys wird der aktuelle lizenzkey abgerufen vom lizenzserver und anhand der kundennummer und dem modul (beides muss übereinstimmen) die lizenznummer (als md5 kodierung) abgerufen und mit dem eingegebenen key verglichen.

Nein das mein ich doch garnicht :-)
Die Methode kannte ich bis dahin doch garnicht.

Aber du baust doch in deinem Programm irgendwo eine Verbindung zu dem Datenbankserver auf, wo du die Lizensschlüssel abgleichen willst oder?
Diese Verbindungsdaten (Mysqlbenutzer + Mysqlpasswort) werden irgendwo im Script hinterlegt.
Da PHP OpenSource ist, kommt auch jeder an diese Zugangsdaten ran und kann somit auf deinen Datenbankserver connecten und per INSERT z.b. einen eigenen gültigen Lizensschlüssel einfügen oder gar einen anderen raussuchen, löschen usw.

Daher würde ich vielleicht ehr ein PHP Script schreiben, welches du über das andere Script befragen kannst (mit $_GET oder so).
Vorrausgesetzt der Server unterstützt das laden von externen Scripten.
 
ok so weit verstanden. jetzt blick ich langsam durch, jedoch hab ich dazu noch eine frage.
externe skripte: ich müsste doch dann theoretisch dieses externe skript auch in php programmieren und somit ist es auch wieder antastbar. dann verstehe ich darin die sicherheit nicht ganz. oder sehe ich dies irgendwie falsch?

greetz
 
Ja das Script musst du auch in PHP Programmieren.
Doch sind die Verbindungsdaten dann in dem Script auf deinem Server. Wo nur du dran kommen solltest.
Wenn dann muss schon eine Sicherheitslücke im Script ausgenutzt werden aber da kann man eigentlich relativ gut vorsorgen, also Benutzereingaben prüfen usw.
Jedenfalls hat nicht jeder gleich die Mysql Verbindungsdaten sondern nur eben die Schnittstelle die du für dein Script bereitstellst.
 
achso ok. vielen dank für die infos. werd mich mal da ran setzen und mich in dieser richtung schlauer machen.

thx 4 help
 
Zurück