PHP für Peer to Peer Kommunikation?

Bluebonnet

Experte
Thread Starter
Mitglied seit
03.12.2013
Beiträge
10
Hi Leute,

ich soll für ein Uniprojekt ein Programm entwicklen, bei dem unter anderem Teilnehmer in Gruppen eingeteilt werden und dann gegeneinander "spielen". Die grobe Grundidee ist jeweils random Paare zu bilden, beide tippen eine Zahl und einer gewinnt nach bestimmten Kriterien.
Meine Betreuer (die keine Ahnung von IT haben) hätten das ganze gern ausschließlich in php+html (ohne javascript oder ähnliches), ohne allerdings konkrete Gründe zu haben (sie meinen das ist sicherer?? :/).
Lässt sich diese Idee überhaupt sinnvoll ausschließlich in php realisieren oder welche Sprachkombination wäre besser geeignet? Mir scheint php eigentlich sehr umständlich dafür?
Kennt jemand ein gutes Tutorial für Anwendungen die Kommunikation zwischen 2 bestimmten Usern erlauben wie oben (oder eventuell für ein einfaches Multiplayergame - das wäre ja ähnlich)? Ich habe leider weder große php, html noch javascript Vorkenntnisse, kann allerdings passabel objektorientiert programmieren und mich sicher schnell einlesen. Die meisten Tutorials, die ich finde, behandeln eben keine Peer-to-Peer Kommunikation; mit allgemeinen Grundlagen wie ifs und Schleifen oder Website- oder Umfragenerstellung ist mir leider nicht sonderlich geholfen.
Danke schonmal für eure Hilfe!
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
dazu muss du z.b. per header() funktion in php alle 3 sek die seite neu laden lassen um die eingaben ohne zutun der user (f5) anzeigen zu lassen etc... ich würde das was mir da grade an ideen zu dem thema kommen als unpraktisch aber durchführbar bewerten :fresse2:

im endeffekt wäre es dann eine sich selber ständig neu ladende webseite die bei jedem load die neusten ergebnise darstellt ....
 
Stimmt so nicht ganz. Man muss nicht die Seite ständig neu laden. Siehe zum Beispiel AJAX. Dort werden durch diverse Javascripts nur teile der Seite ausgetauscht. Der Anwender merkt davon nichts. Über Javascript wird sogar der Request zum Server abgesetzt um die Daten einzublenden. Siehe zum Beispiel google. Dort wird beim Tippen bereits eine Liste mit Vorschlägen angezeigt. Auch diese Liste wird im Hintergrund vom Server abgefragt ohne die Seite neu zu laden.

Rest sollte machbar sein. Selbst die Kommunikation untereinander ist recht einfach. Du musst nur die URL des Gegenspielers aufrufen und dabei deine Daten übergeben. Dein Gegenspieler speichert die Daten ab. Läuft ähnlich wie bei Session Daten nur eben nicht an eine Session gebunden sondern an den Server gebunden. Dann kann dein Gegenspieler in seinem Browser deine Daten sehen. Bei einem Zug seinerseits passiert das gleiche bei dir. Problem ist die Sicherheit weil er den Aufruf schnell und einfach Hacken kann und dann ungültige Daten schicken kann. Das lässt sich auch nicht mit Hidden Fields oder ähnlichem Verhindern.

Sicher, dass du die Aufgabe richtig verstanden hast? Könnte es eventuell sein, dass ein zentraler Server die PHP Seite bekommt und dann jeder Anwender nur die URL des Servers aufruft? Warum sollte jeder Client einen Webserver installieren? Macht irgendwie wenig Sinn. Sollte eigentlich ein zentraler Server gemeint sein, sieht die Sache natürlich anders aus. Dann brauchst du dir um die Kommunikation keine Sorgen machen. Einfach alle Daten aller Spieler in einer Datenbank (Notfalls SQLLite) speichern. Dann wäre es ein klassisches Browsergame.

- - - Updated - - -

Sorry für Doppelpost. Proxy verhindert das Editieren.

Deine Betreuer haben nicht ganz Unrecht. Wenn du eine ordentliche PHP Anwendung schreibst und dabei die üblichen Sicherheitslücken wie SQL Injection beachtest, hast du am Ende eine sehr sichere Seite. Bei deinem E-Mail Postfach kann auch kein unbefugter so einfach die Daten einsehen. Die komplette Komunikation läuft auf dem Server. Der kann alle vom Client geschickten Daten validieren. Manipulation nur sehr schwer möglich.

Anders sieht es bei einer Client Anwendung mit zum Beispiel Java aus. Java hat den Vorteil, dass du als Programmier nicht so viel Schaden anrichten kannst. Das heißt ein Virus hätte schlechte Karten. Für den Anwender ist Java daher sicherer als eine kompilierte Exe. Das ist aber die Sicherheit aus Anwendersicht. Aus Programmsicht ist jede Clientanwendung ein Sicherheitsrisiko. Der Anwender kann wenn er will den Quellcode verändern und dann lustige Maphacks schreiben. Wäre auch in deinem Fall möglich. Jeder Anwender hätte die Möglichkeit seine Clientanwendung so zu manipulieren, dass er immer Gewinnt. Er hat im Speicher die Daten des Gegenspielers und kann darauf Aufbauend immer die richtige Zahl generieren, die mit einer Zufallszahl nichts mehr zu tun hat.
 
Danke für eure Antworten!
Hmm... vielleicht haben wir da tatsächlich aneinander vorbei geredet. Sie meinten was von direkter Kommunikation, aber vielleicht war das im übertragenen Sinn gemeint und ein zentraler Server mit Datenbank tuts auch. Das hat dann tatsächlich auch den Sicherheitsvorteil, wenn ich das richtig verstehe.
Im dem Fall ginge es dann theoretisch auch relativ einfach ausschließlich mit PHP, richtig? Allerdings hätte ich dann das "direkte Kommunikation/Reaktion simulieren"-Problem, weil z.B. alle 3 Sekunden laden vermutlich zu langsam wäre. Spricht ein wichtiger Grund dann dagegen, z.B. ajax zu verwenden? Ohne was anderes als PHP ist "ständig neu laden" vermutlich die beste Lösung, richtig?
 
techniken wie ajax habe ich nicht erwähnt da im eingangspost 'php+html (ohne javascript oder ähnliches)' angegeben wahr, währe aber eigentlich das mittel der wahl für eine solche anwendung ;)

für php benötigt man halt einen entsprechenden server. das kann natürlich auch der pc eines der beiden nutzer, die kommunizieren sollen, sein...
zusätzlich kommt natürlich das problem hinzu, das du das eingabe fenster entsprechend cachen musst, damit eine eingabe des users bei einem neuladen der seite erhalten bleibt ....
wie gesagt, möglich ist es aber php und html alleine sind eher unpraktisch für das anwendungsgebiet und ohne z.b. ajax und jquery kommt man um einen kompletten refresh der seite nicht herum :fresse2:


kleine idee nebenbei beim tippen ....
eigentlich sollte es möglich sein, das anzeigefenster in einem iframe zu laden und nur diesen zu refreshen während das eingabefenster für den user ausserhalb des iframes davon unberührt bliebe .....
 
Danke - dann werd ich mal schaun, ob ich nicht doch auch was anderes verwenden darf, das würde das ganze dann doch etwas vereinfachen.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh