Lizenzsystem
|
Verfasser |
Nachricht |
|
Beiträge: 255
Bewertung: 5
Registriert seit: May 2012
Status:
offline
|
Lizenzsystem
Guten Morgen,
ich bin aktuell dabei ein Lizenzsystem zu bauen.
Die Idee ist ein HTML/PHP Formular zu haben, da den Code einzugeben, und das Formular fragt dann die MySQL Datenbank ob dieser Code existiert.
Jetzt zu meinem Problem:
Ich will das dieses Script nach "erfolgreicher" Code eingabe eine Datei erstellt wo der Code gespeichert wird und dann soll jedes mal, wenn die Webseite aufgerufen wird die MySQL Datenbank frägt ob dieser Code gültig ist.
Meine Datenbank sieht so aus:
Gültig = 0 oder 1
Key = xxxx-yyyy-zzzz
Benutzt = 0 oder 1
Benutzt soll halt heißen ob der Code schon mal eingegeben wurde, Gültig bei 1 sagt das Script einfach "ok" und bei 0 soll er die Meldung bringen: Lizenz Gesperrt.
Sowas in der Art wie Teklab hat.
Hat jemand ne Idee?
Gruß Nicolas
[Link: Registrierung erforderlich]
[Link: Registrierung erforderlich]
Dieser Beitrag wurde zuletzt bearbeitet: 01.02.2014 12:49 von Nicolas | CN.
|
|
01.02.2014 11:49 |
|
|
Beiträge: 108
Bewertung: 6
Registriert seit: Apr 2012
Status:
offline
|
RE: Lizenzsystem
*Denkfehler von mir*
Du willst also, dass man auf deine Datenbank zugreift sprich DomainA.de soll auf den Webserver von DeinerDomain.de zugreifen, per externen Zugriff.
Das heißt ja, dass DomainA.de eine Datei , die eine Verbindung zur Lizenz-Datenbank DeinerDomain.de, hat.
Das heißt dann wiederum, Inhaber von DomainA.de kann mit der Datenverbindung die Datenbank auslesen. ( so verstehe ich das )
// Andersrum:
DomainA.de hat eine lokale Datenbank, wo der Lizenzcode drinne steht. Das heißt Inhaber von DomainA.de kann den Lizenzcode jederzeit ändern.
Vorschlag:
CURL Abfrage auf deinen Webspace, der den Lizenzcode an dein Skript weitergibt, dementsprechend eine Datenbank-Abfrage macht und das Resultat per JSON an DomainA zurückgibt.
Solche Sachen kann der Inhaber von DomainA aber immer ausklammern, rauslöschen oder was auch immer. Du musst es dann solchen Leuten schwerer machen, indem du einen weiteren Code einfügt, der dann die letzte Überprüfung der Lizenzierung checkt und nach Ablauf einer Frist selber handelt.
Dieser Beitrag wurde zuletzt bearbeitet: 01.02.2014 13:50 von Splak.
|
|
01.02.2014 13:30 |
|
|
Beiträge: 677
Bewertung: 0
Registriert seit: Feb 2013
Status:
offline
|
RE: Lizenzsystem
@Splak: Wieso liest er die DB aus, er kann doch eine API bereitstellen die nur das Benötigte offen legt?
|
|
01.02.2014 13:49 |
|
|
Beiträge: 108
Bewertung: 6
Registriert seit: Apr 2012
Status:
offline
|
RE: Lizenzsystem
@simon: Hab den Vorschlag nochmal hinzugefügt. Dieser Gedankengang war von mir, so hat sich das gelesen für mich.
MfG
|
|
01.02.2014 13:57 |
|
|
Beiträge: 255
Bewertung: 5
Registriert seit: May 2012
Status:
offline
|
RE: Lizenzsystem
*Denkfehler von mir*
Du willst also, dass man auf deine Datenbank zugreift sprich DomainA.de soll auf den Webserver von DeinerDomain.de zugreifen, per externen Zugriff.
Das heißt ja, dass DomainA.de eine Datei , die eine Verbindung zur Lizenz-Datenbank DeinerDomain.de, hat.
Das heißt dann wiederum, Inhaber von DomainA.de kann mit der Datenverbindung die Datenbank auslesen. ( so verstehe ich das )
Ja
// Andersrum:
DomainA.de hat eine lokale Datenbank, wo der Lizenzcode drinne steht. Das heißt Inhaber von DomainA.de kann den Lizenzcode jederzeit ändern.
Falsch, da die MySQL Verbindungsdaten auf dem externen Server läuft mit dem Server, und man sich nur als Root von extern anmelden darf.
Vorschlag:
CURL Abfrage auf deinen Webspace, der den Lizenzcode an dein Skript weitergibt, dementsprechend eine Datenbank-Abfrage macht und das Resultat per JSON an DomainA zurückgibt.
Solche Sachen kann der Inhaber von DomainA aber immer ausklammern, rauslöschen oder was auch immer. Du musst es dann solchen Leuten schwerer machen, indem du einen weiteren Code einfügt, der dann die letzte Überprüfung der Lizenzierung checkt und nach Ablauf einer Frist selber handelt.
Ok, wäre auch eine Idee
[Link: Registrierung erforderlich]
[Link: Registrierung erforderlich]
|
|
01.02.2014 14:08 |
|
|
Beiträge: 108
Bewertung: 6
Registriert seit: Apr 2012
Status:
offline
|
RE: Lizenzsystem
Ja, also bedeutet das, du brauchst eine API dafür.
Wenn der externe Zugriff nicht erlaubt ist, kann derjenige Webserver ( DomainA.de ) nicht auf die Lizenzdatenbank zugreifen per MySQL Verbindung. ( ist ja verboten )
Dann empfehle ich dir mit Hashcodes zu arbeiten, welches das neue PHP 5.5 direkt mitbringt und ein wenig zu tricksen.
Die Abfrage: ( Nicht getestet, Denkfehler können immer vorhanden sein )
<?PHP
$licensecode = $_GET['license'];
/* PHP Code mit MySQL(i) Abfrage */
/* SELECT hash FROM licenses WHERE code = '$licensescode' */
/* $hash = hash in der DB */
if (password_verify($licensecode, $hash)) { // Wenn der Lizenzcode mit dem Hash übereinstimmt
if (password_needs_rehash($hash, PASSWORD_BCRYPT)) {
$hash = password_hash($licensecode, PASSWORD_BCRYPT);
$update = "UPDATE licenses SET hash = '$hash' WHERE licensecode = '$licensecode'";
$result = mysql_query($update);
}
$isValid = 1;
$isInuse = 1;
} else { // Wenn der Lizenzcode nicht mit dem Hash übereinstimmt übereinstimmt
$isValid = 0;
$isInuse = 0;
}
$output = array('license' => $licensecode, 'isValid' => $isValid, 'isInuse' => $isInuse );
echo json_encode($output);
?>
cURL Abfrage wäre dann:
<?PHP
$apiURL = "http://www.deinedomain.de?license=".$license;
$refURL = "http://www.wo-muss-das-ergebnis-ausgegeben-werden.de";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiURL);
curl_setopt($ch, CURLOPT_REFERER, $refURL);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$http_status = curl_getinfo($http, CURLINFO_HTTP_CODE);
$output = curl_exec($ch);
curl_close($ch);
$result = json_decode($output, true);
echo $result['license'];
echo $result['isValid'];
echo $result['isInuse'];
?>
Ist alles nicht getestet und auch nicht dafür geeignet es zu kopieren. Es ist lediglich ein Denkanstoß, wie man das umsetzen könnte.
MfG
|
|
01.02.2014 14:50 |
|
|