Sponsor-Board.de
Antwort schreiben  Thema schreiben 

Lizenzsystem

Verfasser Nachricht

Beiträge: 255
Bewertung: 5
Registriert seit: May 2012
Status: offline


Beitrag: #1
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
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 108
Bewertung: 6
Registriert seit: Apr 2012
Status: offline


Beitrag: #2
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
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 677
Bewertung: 0
Registriert seit: Feb 2013
Status: offline


Beitrag: #3
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
 
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 108
Bewertung: 6
Registriert seit: Apr 2012
Status: offline


Beitrag: #4
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
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 255
Bewertung: 5
Registriert seit: May 2012
Status: offline


Beitrag: #5
RE: Lizenzsystem

Splak schrieb:
*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
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 108
Bewertung: 6
Registriert seit: Apr 2012
Status: offline


Beitrag: #6
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 Tongue )

Code:
<?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:

Code:
<?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
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben  Thema schreiben 

 Druckversion anzeigen
 Thema einem Freund senden
 Thema abonnieren
 Thema zu den Favoriten hinzufügen

Sponsor-Board.de

Community
Über uns
Partner
Powered by Mybb: Copyright 2002-2024 by MyBB Group - Deutsche-Übersetzung von Mybb.de
 
© 2007-2024 Sponsor-Board.de - Hosted by OVH

Willkommen auf SB!   Sie benötigen ein Sponsoring?   1. Anmelden   2. Sponsoring-Anfrage erstellen   3. Nachrichten von Sponsoren erhalten   Kostenlos!   Jetzt registrieren