Login System wie umsetzen?

Du brauchst Grafiken, gute Programme oder Leute die dir helfen? Frag hier.
Benutzeravatar
Hoto
Beiträge: 294
Registriert: 01.09.2004 22:51

Login System wie umsetzen?

Beitrag von Hoto »

Ich denke mal ich bin hier im richtigen Forum...

Ich bin gerade mit einem größeren Projekt beschäftigt, das u.a. auch einen eigenen Messenger haben soll. Dazu wird natürlich ein Server gebraucht, über den man sich einloggen muss und auf dem eine Datenbank mit allen Accounts und deren zugehörigen Daten liegen.

Die eine Möglichkeit wäre nun selbst eine Serversoftware dafür zu schreiben, wozu ich dann allerdings einen richtigen Server brauche, damit dieser ordentlich läuft.

Die andere Möglichkeit, die ich mir überlegt habe, wäre dazu normalen Webspace zu verwenden und alles per PHP und MySQL zu regeln. Das Program loggt sich also über ein PHP Script ein und kommt so dann auch an die Daten. Ich frage mich nun allerdings ob das sinnvoll ist und ich nicht etwas entscheidendes übersehe?

Daher würde ich gerne mal eure Meinung dazu hören, bevor ich mich jetzt länger damit unnötig befasse.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

für ein normales Login reicht php mit MySQL

php wertet die gesendeten Daten aus (zB über GET) und verbindet sich mit MySQL und checkt dort was so ab geht ^^
und php gibt dann wiederrum eine html oder so aus die mal dann sieht ...

Ich verwante so zB server für ein spiel, ein Serevr "logt sich ein" und ist dann in der Liste für alle sichtbar.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Hoto
Beiträge: 294
Registriert: 01.09.2004 22:51

Beitrag von Hoto »

Ja, genau so hab ich mir das in etwa vorgestellt.

Es müsste doch theoretisch folgendes möglich sein:

Ein User loggt sich per PHP Script ein, in der DB wird seine aktuelle IP Adresse gespeichert. Nun loggt sich ein anderer User ein und dieser will dem anderen User eine Nachricht schreiben. Diese Nachricht wird dann an ein PHP Script gesendet, welche die Nachricht in die DB speichert und am Ende an die IP des Zielusers ein Signal sendet. Auf die Art weiß der Zielclient, dass eine neue Nachricht da ist und kann wiederum ein PHP Script starten um die Nachricht direkt abzuholen.

Das sollte so eigentlich möglich sein, oder? Und es müsste die Resourcen schonenste Variante sein. Natürlich könnte man die Nachricht auch direkt von Client zu Client senden, allerdings sind so die User geschützter, weil der Empfänger so nicht die IP des Absenders und umgekehrt hat.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Ich bin mir nicht sicher ob man mit PHP was senden kann, aber ich würde einfach von jedem Client aus alle 5 sek. eine Anfrage senden obs was neues gibt, auf die Artundweise kriegt man auch schnell mit wann ein User (unfreiwillig) offline geht^^
(\/) (°,,,°) (\/)
Benutzeravatar
Hoto
Beiträge: 294
Registriert: 01.09.2004 22:51

Beitrag von Hoto »

Ich hab mir das jetzt gerade noch nicht näher angesehen (sitze erst seit 2 Mins wieder am PC), aber damit müsste es doch gehen?

http://de2.php.net/manual/de/function.fsockopen.php

Damit sollte es doch möglich sein eine Verbindung zum PB Programm aufzubauen und Daten zu senden.

Alle 5 Sekunden den Server abzufragen dürfte doch schnell bei ein paar duzend Nutzern für zu viel Traffic auf dem Webserver sorgen. Um zu prüfen ob die Verbindung unfreiwillig abgebrochen wurde reicht es auch alle 60 Sekunden ein Ping oder so zu senden.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Ja, das geht, hab mich mit dingen in der Richtung noch nicht beschäftigt...
Die schonendere Variante is das auf jeden Fall.
(\/) (°,,,°) (\/)
Benutzeravatar
Hoto
Beiträge: 294
Registriert: 01.09.2004 22:51

Beitrag von Hoto »

Jo, dann werd ich mich damit mal versuchen. Sollte erstmal kein so großes Problem sein. Die richtigen Herausforderungen wie das sichere verschlüsseln der Daten und andere Dinge kommen dann alle noch. Das Ganze soll ja dann auch möglichst sicher sein.

In der Richtung hab ich selbst auch noch nichts gemacht, aber zum Glück kenne ich mich sowohl mit PB als auch mit dem ganzem HTML, CSS, PHP und MySQL Kram inzwischen ganz gut aus. Also hängt es weniger an den Sprachen als viel mehr an der Umsetzung selbst. Ich hab da ganz gern vorher schon ein halbwegs fertiges Bild von der Umsetzung im Kopf, ehe ich daran gehe, ansonsten wüsste ich gar nicht wie ich überhaupt erst anfangen sollte. ;) Macht doch auch viel mehr Spaß Dinge umzusetzen, die schon im Kopf existieren. :mrgreen:

Von daher hat mir der Thread jetzt schon sehr geholfen, auch wenn die eigentliche Frage ob PHP oder richtige Serversoftware nicht beantwortet wurde, wenn ich aber so recht drüber nachdenke, das letzteres wohl darauf hinauslaufen würde, dass die Serversoftware unter Linux laufen würde, will ich die Antwort gar nicht wissen, weil mit Linux kenne ich mich kaum bis gar nicht aus.
Benutzeravatar
Hoto
Beiträge: 294
Registriert: 01.09.2004 22:51

Beitrag von Hoto »

So, ich hab mir da mal schnell was zum testen zusammen gebastelt:

Code: Alles auswählen

InitNetwork()
CreateNetworkServer(0,6000,#PB_Network_TCP)
Buffer.l = AllocateMemory(1024)

Repeat
  Select NetworkServerEvent()
    Case 1
      Debug "Neuer Client connected"
    Case 2
      PokeS(Buffer, Space(1048), 1048)
      length.l = ReceiveNetworkData(EventClient(), Buffer, 1024)
      message.s = PeekS(Buffer, length)
      Debug "Daten empfangen: "+message
    Case 4
      Debug "Client disconnected"
  EndSelect
Delay(10)
ForEver
Diesen Code im Debug Modus laufen lassen und dann die URL mit dieser php Datei mit folgendem Inhalt ausführen:

Code: Alles auswählen

<?php
 $IP = $_SERVER['REMOTE_ADDR'];
 $PORT = 6000;
 
 $fp = fsockopen("tcp://".$IP, $PORT, $errno, $errstr, 5);
 fwrite($fp,"Erfolgreicher Test! Dieser Text wurde von PHP gesendet!");
 fclose($fp);
 echo $IP.':'.$PORT;
?>
Wenn man nun jetzt noch die PHP Datei statt im Browser über das PB Programm aufruft, hat man schon die grundlegende Funktion, wie ich mir das vorgestellt habe. Irgendwelche Einwände oder Verbesserungsvorschläge?

Damit sollte es ein leichtes sein ein Login System mit Rückmeldung zum Client zu machen. Und auf die gleiche Art können dann später auch Nachrichten zwischen den Benutzern ausgetauscht werden. Sieht doch eigentlich so perfekt aus.

Edit: leider musste ich gerade feststellen, dass mein Webhoster so gut wie alle Ports gesperrt hat. Da muss ich dann später wohl einen anderen Hoster für mein Projekt nutzen. Naja, egal, bis dahin tut es auch erstmal mein lokaler Server. Das dauert ohnehin noch einige Zeit, bis das Programm so weit ist.
Zuletzt geändert von Hoto am 27.03.2009 02:32, insgesamt 2-mal geändert.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

So wird das nicht (zumindest nicht ohne probleme) funktionieren.
Das Problem is das der Router nicht weis an welche IP im Netzwerk er die Daten die ihm das PHP-Script schickt überhaupt weiterleiten soll, man muss dafür erst via IP-Forwarding den entsprechenden Port auf die entsprechende IP weiterleiten, und das würde ich den wenigstens Nutzern zumuten...
Sobald ein Server auf dem eigentlichen NutzerPC läuft hast du dieses Problem, daher auch mein Ansatz mit der automatischen Anfrgae alle 10 sek. auf die Art und weise is der PC nämlich immer Client...
(\/) (°,,,°) (\/)
Benutzeravatar
Hoto
Beiträge: 294
Registriert: 01.09.2004 22:51

Beitrag von Hoto »

Also bei mir im Netzwerk funktioniert das ohne das ich was am Router machen musste. Ich werde das mal näher testen.
Zuletzt geändert von Hoto am 25.03.2009 18:34, insgesamt 1-mal geändert.
Antworten