Laden...

Wie kann ich über PHP in JS einen Wert setzen, den ich dann in einer C# Methode verwenden kann?

Erstellt von blizzard vor 3 Jahren Letzter Beitrag vor 3 Jahren 981 Views
B
blizzard Themenstarter:in
33 Beiträge seit 2020
vor 3 Jahren
Wie kann ich über PHP in JS einen Wert setzen, den ich dann in einer C# Methode verwenden kann?

Hallo Forum

Ich hänge hier schon etwas länger an einem problem und wollte euch mal um hilfe bitten.

Ich möchte gerne über php zu js einen wert setzen denn ich dann später in c# verwenden kann.
ich habe meinen code mal unten angefügt. soweit sogut wenn ich mit dem c# client die website besuche und auf diesen button klicke geht die message.box auf und er zeigt mir den inhalt test an.

wie bekomme ich jetzt aber die ip die ich in php festgelegt habe in diese messagebox ?



    class CefCustomObject
    {
        private static ChromiumWebBrowser _instanceBrowser = null;
        private static Form1 _instanceMainForm = null;


        public CefCustomObject(ChromiumWebBrowser originalBrowser, Form1 mainForm)
        {
            _instanceBrowser = originalBrowser;
            _instanceMainForm = mainForm;
        }

        public void box()
        {
            MessageBox.Show("test");
        }
    }

Javascript Code


    <script> 
      $("#button-msg").click(function ()
      {
        cefCustomObject.box(); //hier wird die function ausgeführt
      });
    </script>


** PHP Code**



$serverip = "123.123.123.123:1234"


[Link entfernt] Schließung bzw. Löschung des Themas auf php.de beantragt

5.657 Beiträge seit 2006
vor 3 Jahren

Wenn ich deinen Versuchsaufbau richtig verstehe: Du mußt in PHP einen JavaScript-Code erstellen, der dann eine Variable mit der IP-Adresse erstellt, die du per JS als Parameter an die C#-Methode übergibst. Ob das sinnvoll ist, ist eine andere Frage...

Evtl. solltest du mal erklären, was du _eigentlich _vor hast, und wieso du ausgerechnet auf _diese _Weise mit dem Webserver kommunizieren willst.

@Beitrag auf
>

Bitte beachte unbedingt [Hinweis] Wie poste ich richtig?, Punkt 2.2 Keine Crossposts.

Da du selbst auf den anderen Post hinweist, laß ich den Beitrag mal offen. Normalerweise werden hier Crossposts ohne Ausnahme geschlossen. Das gilt übrigens für viele andere Foren auch.

Weeks of programming can save you hours of planning

B
blizzard Themenstarter:in
33 Beiträge seit 2020
vor 3 Jahren
Hallo MrSparkle Danke erst mal für diese Maßnahme. Ich habe mir das Post-Regelwerk einmal durchgelesen und möchte mich für meinen Crosspost entschuldigen. Ich werde nach diesem post einen Moderator bei php.de kontaktieren und fragen, ob er diesen Beitrag Schließen bzw. Löschen kann. > Du mußt in PHP einen JavaScript-Code erstellen, der dann eine Variable mit der IP-Adresse erstellt, die du per JS als Parameter an die C#-Methode übergibst.

Du hast es mit deiner Beschreibung auf den Punkt gebracht.

Ich Poste dir hier mal meine kleine intern angelegte liste 😉

Fragen: 

[U][B]Wie Sichere ich am besten meine Datenbank gegen das dekompilieren von c# Anwenden [Forms][/B][/U]


[B][MYSQL][/B]
Die MySQL-Datenbank liegt auf einem Linux Dedicated Server
[B][PHP][/B] [[URL]Laravel²[/URL]]
Über PHP werden die Daten der MySQL-Datenbank Hinzugefügt & Abgefragt. 
Und in PHP Entsprechend Behandelt. [[URL]MySQL Datenbank Injection Verhindern[/URL]]


[B][JS] [/B]
Mit JS Werden die benötigten Daten dann an den C#-Client weiter gegeben
Oder Bearbeitet sodass sie in die MySQL-Datenbank eingetragen werden können. 




[U][B][C#-Client][/B] [/U][[URL]CefSharp.WinForms²[/URL], [URL]Bunifu Framework[/URL]] 

Der Client soll voll dynamisch veränderbar bleiben deshalb wird mit Hilfe von CefSharp
eine PHP Website geladen die als asynchrone Informations- und Kommunikations- Plattform dienen soll.

Der Client an sich soll nur interne Funktionen verarbeiten wie zb. 

Das Überprüfen von Modifikationen die für ein spiel gebraucht werden. [ Herrunterladen , Updaten , Löschen ]
Verbinden mit denn jeweiligen Spiele Gameserver
Erstellen und verwenden von Spiele Bezogenen Start Parametern.
Und mehr... 

Ich hoffe, ich konnte dir damit mein Vorhaben etwas erläutern und du verstehst was ich vorhabe.

@Edit: Ich habe denn Themen Titel verändert zu PHP, JS Parameter an C#-Methode übergeben.
Ich hoffe, das dieser aussage kräftiger ist. 😃

4.931 Beiträge seit 2008
vor 3 Jahren

Die PHP-Webseite muß dann entsprechend den in HTML eingebetteten JS-Code erzeugen, z.B.:


<script> 
      $("#button-msg").click(function ()
      {
        cefCustomObject.box('123.123.123.123:1234'); //hier wird die function ausgeführt
      });
</script>

(oder alternativ eine Variable dafür anlegen).

Und dann solltest du von C# aus den Parameter auslesen können:


public void box(string serverIP)
{
    MessageBox.Show(serverIP);
}

F
10.010 Beiträge seit 2004
vor 3 Jahren

Dafür musst Du nicht mehr so einen umweg gehen.

Erstelle mit Dotnet Core 3.1 oder DotNet 5 eine WebApi
und gut.

Läuft auch unter Linux und Du hast nur eine Sprache.

B
blizzard Themenstarter:in
33 Beiträge seit 2020
vor 3 Jahren

@MrSparkle
@Th69
@FZelle

Ich möchte mich bei euch für die hilfe bedanken genau das ist das was ich die ganze zeit nicht hinbekommen habe. jetzt funktiniert es endlich.

Dafür musst Du nicht mehr so einen umweg gehen.

Erstelle mit Dotnet Core 3.1 oder DotNet 5 eine WebApi
und gut.

Läuft auch unter Linux und Du hast nur eine Sprache.

das werde ich mir in naher zukunft dennoch anschauen.
und das system dann eventuell umbauen. 🙂 aber fürs erste reicht das erst mal.

Danke Danke Danke


  <script> 
      $("#button-msg").click(function ()
      {
        cefCustomObject.testBox("<?php echo $serverIP;?>");
      });
  </script>


        public void testBox(string serverIP)
        {
            MessageBox.Show("Die server ip lautet: " + serverIP);
        }

5.657 Beiträge seit 2006
vor 3 Jahren

Aus dem, was du hier und da schreibst, extrapoliere ich mal, daß du einen WebService erstellen willst, und dafür das Rad neu erfunden hast.

Wie FZelle schon schrieb, gibt es dafür bereits fertige Lösungen. Normalerweise würde der Server die Daten im JSON-Format schicken, und der C#-Client direkt auf die Daten zugreifen. Dafür braucht man weder HTML, noch JavaScript, noch CefSharp.

das werde ich mir in naher zukunft dennoch anschauen.

Ich würde dir dringend empfehlen, sofort damit aufzuhören, solchen Code zusammenzuprogrammieren, dich erst einmal zu belesen und zu schauen, wie andere Leute das machen, welche fertigen Tools es dafür gibt, und wie man diese anwendet. Und dann noch einmal ganz von vorne anzufangen, über deine Umsetzung nachzudenken.

Weeks of programming can save you hours of planning

B
blizzard Themenstarter:in
33 Beiträge seit 2020
vor 3 Jahren

Okay ich werde mir das mal anschauen nur beschäftigt mich gerade die frage..
Wie sieht das mit dem aufwand aus. Ich habe schon ein komplettes Backend in PHP geschrieben.
Die mysql Datenbank ist weitgehend fertig erstellt.

Kann ich die API Alternative einfach an mein PHP Projekt anpassen? Und wenn ja mit welchem aufwand, ist das verbunden. ?

EDIT: mir ist gerade eingefallen das mein PHP Framework API's erstellt.

https://quickadminpanel.com/blog/new-api-generator-2019-now-with-laravel-passport/

kann ich auch hiermit arbeiten ?

5.657 Beiträge seit 2006
vor 3 Jahren

Ja, du kannst auch in PHP WebServices erstellen. Wie das geht, wird dir in einem C#-Forum aber kaum jemand sagen können.

Im Client kannst du z.B. RestSharp verwenden.

Weeks of programming can save you hours of planning

B
blizzard Themenstarter:in
33 Beiträge seit 2020
vor 3 Jahren

Okay ich werde mir das mal genauer anschauen.

Jetzt habe ich jedoch noch eine abschließende frage.

Wie sieht das eigendlich aus wenn ich im webinterface einen neuen gameserver hinzufüge.

Wird dies dann im client in echtzeit übertragen bzw. angezeigt. oder muss ich dort etwas beachten damit die Form (usercontroll) neu gezeichent wird und der neue gameserver dann dort auch ersichtlich ist.

5.657 Beiträge seit 2006
vor 3 Jahren

Wir kennen deine Architektur nicht. Evtl. solltest du erst einmal überlegen, wozu du 2 Clients brauchst ("WebInterface" und WinForms). Reicht da nicht eins?

Ansonsten solltest du dich dringend erstmal zu den Technologien belesen, die du da verwenden willst. Wenn der WebService den Client über eine Datenaktualisierung benachrichtigen muß, kannst du z.B. SignalR verwenden. Für den Anfang reicht evtl. auch erstmal ein "Aktualisieren"-Button aus, mit dem die Daten neu vom Server abholt werden können.

Weeks of programming can save you hours of planning

B
blizzard Themenstarter:in
33 Beiträge seit 2020
vor 3 Jahren

Okay ich werde mich in folgende Themen einlesen.

RestSharp
SignalR

Das webinterface ist die php anwendung die schon fertig entwickelt ist und auf meinem webserver liegt diese gibt dann auch die entsprechenden API's aus

Der Client wäre dann die C# Anwendung.

ist SignalR mit Forms Kompatibel?

Ich würde mir die links jetzt mal anschauen und versuchen eine entsprechende test form zu bauen und mich dann wieder melden. 😃

P
441 Beiträge seit 2014
vor 3 Jahren

SignalR ist mit Forms kompatibel.

Es bleibt dennoch die Frage, warum du zwei Clients benötigst. Was kannst du mit der Website nicht umsetzen, was in Windows Forms geht?

B
blizzard Themenstarter:in
33 Beiträge seit 2020
vor 3 Jahren

Okay jetzt habe ich die Frage verstanden. 😃

In Forms möchte ich umsetzen das, wenn ein Benutzer einen Gameserver von uns betreten möchte überprüft wird, ob die entsprechenden costums Mods installiert sind. Sollte dies nicht der fall sein wird dies nach der Zustimmung des Nutzers automatisch in das richtige Verzeichnis installiert.

Zu einem späteren Zeitpunkt möchte ich unsere costum Mods Sichern. So das man diese nur mit dem Client ausführen kann. (Mod Diebstahl verhindern) aber da muss ich mich noch mehr belesen das spielt aber zum jetzigen Zeitpunkt noch keine Rolle:P ich habe mir da noch nicht genug Gedanken drüber gemacht.