fabians12: Variablen an Server senden und speichern?

Hallo,

ich suche schon seit Tagen im Netz nach einer Lösung für folgendes Problem:
Eine Javascript Variable soll an meinen Server gesendet werden und dort in einer Datei gespeichert werden.
Im Netz hab ich verschiedene Ansichten zum Thema "Javascript-Datei erstellen" gelesen, die Einen schreiben es geht, Andere wiederum nicht?
Wie würdet ihr das machen?

Danke im vorraus
Fabian

  1. Moin,

    Eine Javascript Variable soll an meinen Server gesendet werden und dort in einer Datei gespeichert werden.

    Es gibt verschiedene Möglichkeiten:

    * du erstellst ein Formular, setzt die Variable in ein hidden-Feld und submittest
    * du benutzt AJAX um ein PHP-Skript aufzurufen, welches dir die Variable schreibt

    Javascript kann Dateien nicht direkt auf einen Server schreiben. Du brauchst immer eine Serverschnittstelle, die das für dich übernimmt. PHP wäre IMHO am einfachsten. Es würde aber sicherlich auch mit Perl oder Python funktionieren.

    Grüße Marco

    1. Javascript kann Dateien nicht direkt auf einen Server schreiben. Du brauchst immer eine Serverschnittstelle, die das für dich übernimmt. PHP wäre IMHO am einfachsten. Es würde aber sicherlich auch mit Perl oder Python funktionieren.

      Serverside Javascript wäre auch eine Zusatzoption. Das schöne daran ist, dass du eventuellen Code für Sicherheitsabfragen auf Client und Server wiederverwenden lässt. Im Moment bieten allerdings die wenigsten Hoster diese Technik an.

      1. Ich habe jetzt schon ein funktionierendes php-script auf dem Server, das eine Datei erstellt. Ich habe nur noch Probleme damit, wie ich die Variable von meinem Client-Javascript zu meinem Server-php-script bekomme?
        Ich hab jetzt schon ewig gegoogelt, die einfachste Möglichkeit soll ein Formular zu senden.
        Hat vielleicht wer etwas Ähnliches im Einsatz und etwas Code für mich?

        1. Ich habe jetzt schon ein funktionierendes php-script auf dem Server, das eine Datei erstellt. Ich habe nur noch Probleme damit, wie ich die Variable von meinem Client-Javascript zu meinem Server-php-script bekomme?
          Ich hab jetzt schon ewig gegoogelt, die einfachste Möglichkeit soll ein Formular zu senden.
          Hat vielleicht wer etwas Ähnliches im Einsatz und etwas Code für mich?

          Was ist denn genau dein Wunsch?
          Möchtest du beim Klicken auf einen Link oder beim Absenden eines Formulars Variablen an dein PHP-Skript übermitteln?
          Oder möchtest im Hintergrund ganz heimlich ein PHP-Skript mit bestimmten Parametern aufrufen?

          In allen Fällen läuft das ganze wie folgt ab.
          Du schickst eine HTTP-Anfrage an den Server und entscheidest dich für eine Übermittlungsmethode von Parametern. In den meisten Fällen wird diese Methode GET oder POST sein.

          Bei GET werden die Variablen vereinfacht ausgedrückt hinten an den Link gehangen, ein Beispiel:
          http://example.com/index.php?foo=bar

          Einen solchen Link könntest du mit Javascript wie folgt erzeugen:

            
          var foo = "bar";  
          document.write('<a href="http://example.com/index.php?foo='+foo+'">Klick mich</a>');  
          
          

          In deinem PHP-Skript kannst du den Wert von foo, dann so auslesen:

            
          $foo = $_GET["foo"];  
          
          

          Bitte beachte aber, dass beim Übermitteln von Parametern bestimmte Sicherheitsmechanismen zu gewährleisten sind. Der Beispielcode, wie er oben steht, ist so in keinem Fall zu empfehlen, sondern soll nur der Veranschaulichung dienen.

          1. Danke für den hilfreichen Post.
            Aber das Problem ist, dass das PHP-Skript dann im Browser mit den übergegeben Variablen ausgeführt wird.
            Ich muss das Skript aber am Server laufen lassen, weil ich eine Datei mit den übergebenen Variablen direkt am Server erstellen muss.
            Geht das überhaupt?

            Danke im vorraus

            1. Hallo,

              Aber das Problem ist, dass das PHP-Skript dann im Browser mit den übergegeben Variablen ausgeführt wird.

              nein, PHP wird grundsätzlich vom Server ausgeführt. Geh nochmal kurz zurück zu den Grundlagen.

              Ich muss das Skript aber am Server laufen lassen, weil ich eine Datei mit den übergebenen Variablen direkt am Server erstellen muss.
              Geht das überhaupt?

              Klar, und nur so.

              Danke im vorraus

              Aberr gerrn doch.

              Ciao,
               Martin

              --
              Um mit einem Mann glücklich zu werden, muss eine Frau ihn sehr gut verstehen und ein bisschen lieben.
              Um mit einer Frau glücklich zu werden, muss ein Mann sie sehr lieben und darf gar nicht erst versuchen, sie zu verstehen.
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              1. nein, PHP wird grundsätzlich vom Server ausgeführt. Geh nochmal kurz zurück > zu den Grundlagen.

                Echt?
                Aber warum wird meine Testdatei am Server nicht erstellt, wenn ich das Skript so: http://example.com/meinskript.php
                aufrufe?

                1. Hi,

                  nein, PHP wird grundsätzlich vom Server ausgeführt. Geh nochmal kurz zurück > zu den Grundlagen.
                  Echt?

                  ja, echt. :-)

                  Aber warum wird meine Testdatei am Server nicht erstellt, wenn ich das Skript so: http://example.com/meinskript.php
                  aufrufe?

                  Dafür gibt es unzählige Gründe. Fehler im Script, Fehler in der Logik, keine Schreibberechtigung im Verzeichnis, falscher Pfad, ungültiger Dateiname ...
                  Ohne das Script konkret zu sehen, kann man nur lustig spekulieren.

                  Ciao,
                   Martin

                  --
                  Du kannst dem Leben nicht mehr Tage geben.
                  Aber dem Tag mehr Leben.
                  Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                  1. Das ist das PHP-Skript am Server:

                    <?php
                      $filename = "test.txt";
                      $vari = "hallo123";

                    $fileio = fOpen($filename,'w');
                      fWrite($fileio,$vari);
                      fClose($fileio);
                    ?>

                    1. Hallo,

                      Das ist das PHP-Skript am Server:

                      <?php

                      $filename = "test.txt";
                        $vari = "hallo123";

                      $fileio = fOpen($filename,'w');
                        fWrite($fileio,$vari);
                        fClose($fileio);
                      ?>

                        
                      das ist simpel und "im Prinzip" richtig. Die gemischte Groß/Kleinschreibung in Funktionsnamen ist zwar unüblich (normal ist durchgehende Kleinschreibung), aber PHP ist da zumindest bei Funktionsnamen tolerant. Schlecht ist, dass du komplett auf Fehlerüberprüfung verzichtest.  
                        
                      Was hast du denn schon für Debugging-Schritte unternommen?  
                       \* Wird das Script tatsächlich ausgeführt? - Mach eine Testausgabe an den Client.  
                       \* Aktiviere die Ausgabe von Fehlermeldungen. - Welche bekommst du?  
                       \* Gelingt fopen()? - Du prüfst das Ergebnis gar nicht. Warum nicht?  
                       \* Falls $fileio gültig ist: Was liefert fwrite()? - Im Erfolgsfall die Zahl der geschriebenen Bytes.  
                        
                      Ach ja, falls das funktionstüchtige Script (wenn es denn soweit ist) wirklich keine Ausgabe an den Client senden soll, dann würde ich empfehlen, den HTTP-Status "204 No Content" zu senden.  
                        
                      So long,  
                       Martin  
                      
                      -- 
                      Die letzten Worte des Privatdetektivs:  
                      Jetzt wird es mir klar: SIE sind der Mörder!  
                      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                      
          2. Hallo,

            Bei GET werden die Variablen vereinfacht ausgedrückt hinten an den Link gehangen

            nein, ge_hängt_.
            "Ich habe den Mantel an die Garderobe gehängt, da hat er dann wochenlang gehangen."
            Du erkennst den Unterschied, hoffe ich.

            In deinem PHP-Skript kannst du den Wert von foo, dann so auslesen:

            $foo = $_GET["foo"];

            Bitte bring die Neulinge nicht noch auf dumme Gedanken! Dieses sinnlose Umkopieren sieht man oft genug! Besser wird es davon nicht. Richtiger wäre: Über die Variable $_GET['foo'] kann man auf den Wert des übermittelten Parameters zugreifen.

            Ciao,
             Martin

            --
            F: Was ist eigentlich aus deinem schlimmen Durchfall geworden?
            A: Mein Arzt hat mir Valium verschrieben.
            F: Und das hilft?
            A: Naja, ich mach mir immer noch in die Hose. Aber inzwischen ist es mir egal.
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. Hi!

    Du musst zwischen Client und Server unterscheiden. Javascript auf dem Cleint kann auf dem Server gar nichts. Es kann lediglich Ressourcen anfordern und Parameter verschicken - wie jeder HTML Link oder jedes Formular.

    Wi schon erwaehnt kannst Du das nicht nur per Formular sondern auch per AJAX erledigen. Letzteres hat den Vorteil, dass nur Daten hin und her geschoben werden, die Seite selbst aber nicht neu geladen wird.

    Bei solchen Spielereien musst du natuerlich alle normalen Sicherheitsaspekte wie bei jeder Usereingabe beruecksichtigen.

    --
    Signaturen sind blöd!
    1. Moin,

      [AJAX] hat den Vorteil, dass nur Daten hin und her geschoben werden, die Seite selbst aber nicht neu geladen wird.

      Ein recht gutes Tutorial gibt es hier (leider englisch):
      http://www.w3schools.com/ajax/default.asp

      Grüße Marco

      1. Hi,

        Ein recht gutes Tutorial gibt es hier (leider englisch):
        http://www.w3schools.com/ajax/default.asp

        And it's no, nay, never - No nay never no more - Will I link to w3schools - No never no more!

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.