Sascha: HTML-Formlur anderer Seite zur Verfügung stellen, aber Layout...

Hallo,

wir würden gerne ein paar anderen Personen eine HTML-Seite mit einem HTML-Formular, welches an ein PHP-Auswertungsscript verknüpft ist, zur Verfügung stellen, das diese das z.B. mittels iframe in ihre eigene Homepage integrieren können.

Die HTML-Seite/Formular und das PHP-Script sollen auf unserer Homepage verblieben und dort sozusagen gehostet werden. Den entsprechenden Link dazu den Personen mitteilen auch kein Problem.

Nun aber die Frage, die uns interessieren würde: Wäre es irgendwie Möglich, das diese jeweiligen Personen sich die Seite nach eigenen Vorstellungen sich konfigurieren können, also z.B. andere Hintergrundfarbe oder so? Allerdings sollen diese Personen keinen FTP-Zugang oder so zu unserem Homepage-Hostingplatz erhalten. Wäre sowas realisierbar und falls ja, wie könnte man sowas realisieren?  Wäre sowas mit CSS möglich bzw. könnten die dann irgendwie ihre eigene CSS auf ihrem Server irgendwo ablegen bzw. was müsten wir dann in unserer Seite dann eintragen?

Wäre super, wenn uns jemand weiterhelfen könnte. Besten Dank vorab.

Sascha

  1. Hi,

    wir würden gerne ein paar anderen Personen eine HTML-Seite mit einem HTML-Formular, welches an ein PHP-Auswertungsscript verknüpft ist, zur Verfügung stellen, das diese das z.B. mittels iframe in ihre eigene Homepage integrieren können.

    das halte ich für ein schwieriges Unterfangen, da zum Formular ja zwingend auch die Auswertung gehört. Und die ist ja nicht für alle Nutzer identisch, oder?

    Nun aber die Frage, die uns interessieren würde: Wäre es irgendwie Möglich, das diese jeweiligen Personen sich die Seite nach eigenen Vorstellungen sich konfigurieren können, also z.B. andere Hintergrundfarbe oder so?

    Du könntest diese Einstellungen für alle legitimierten Nutzer des Formulars auf deinem Server speichern und verwalten, und jeder Nutzer bekommt eine eindeutige User-Id. Diese User-Id wird bei der Einbindung des Formulars als URL-Parameter übergeben und bestimmt das konkrete Layout des Formulars, vielleicht auch Einzelheiten zur Verarbeitung der Daten.

    So long,
     Martin

    --
    Die letzten Worte des Systemadministrators:
    Nur gut, dass ich ein intaktes Backup habe.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hallo,

      die Auswertung ist für alle gleich. Funktioniert ja auch.

      OK User-ID vergeben und auf unseren Server hosten auch denkbar. Könntest du mir vielleicht ein Beispiel verraten wie ich das da realisieren kann, was du mir vorgeschlagen hast? Dann brauche ich mehrere CSS-Dateien, eine pro User oder wie? Wäre super, besten Dank vorab.

      Viele Grüße

      Sascha

      Hi,

      wir würden gerne ein paar anderen Personen eine HTML-Seite mit einem HTML-Formular, welches an ein PHP-Auswertungsscript verknüpft ist, zur Verfügung stellen, das diese das z.B. mittels iframe in ihre eigene Homepage integrieren können.

      das halte ich für ein schwieriges Unterfangen, da zum Formular ja zwingend auch die Auswertung gehört. Und die ist ja nicht für alle Nutzer identisch, oder?

      Nun aber die Frage, die uns interessieren würde: Wäre es irgendwie Möglich, das diese jeweiligen Personen sich die Seite nach eigenen Vorstellungen sich konfigurieren können, also z.B. andere Hintergrundfarbe oder so?

      Du könntest diese Einstellungen für alle legitimierten Nutzer des Formulars auf deinem Server speichern und verwalten, und jeder Nutzer bekommt eine eindeutige User-Id. Diese User-Id wird bei der Einbindung des Formulars als URL-Parameter übergeben und bestimmt das konkrete Layout des Formulars, vielleicht auch Einzelheiten zur Verarbeitung der Daten.

      So long,
      Martin

      1. Lieber Sascha,

        bitte zitiere sinnvoll (Du kannst mich nachmachen wenn Du willst). TOFU ist hier unerwünscht. Danke.

        Könntest du mir vielleicht ein Beispiel verraten wie ich das da realisieren kann, was du mir vorgeschlagen hast?

        Ungefähr so: http://example.org/daten/formular.php?userid=1234

        Dann brauche ich mehrere CSS-Dateien, eine pro User oder wie?

        Genau. Und Dein PHP-Skript kann diese auf der User-ID basierend in das Dokument einbinden.

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Hallo,

          Ungefähr so: http://example.org/daten/formular.php?userid=1234

          Dann brauche ich mehrere CSS-Dateien, eine pro User oder wie?

          Genau. Und Dein PHP-Skript kann diese auf der User-ID basierend in das Dokument einbinden.

          dann müste ich dann praktisch sowas in der Art in meine Formularseite reinschreiben?

          <link rel="stylesheet" type="text/css" href="$userid.css">

          dann würde der wenn ich eine Datei namens 1234.css hätte das Layout sich aus dieser Datei holen oder wäre das so falsch?

          Gruß

          Sascha

          1. Lieber Sascha,

            <link rel="stylesheet" type="text/css" href="$userid.css">

            gut ist das nicht. Aber es könnte Deinen Anforderungen genügen.

            Liebe Grüße,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
            1. Hallo,

              <link rel="stylesheet" type="text/css" href="$userid.css">

              gut ist das nicht. Aber es könnte Deinen Anforderungen genügen.

              Warum ist das nicht gut bzw. was wäre besser?

              LG
              Patty

              1. Hi,

                <link rel="stylesheet" type="text/css" href="$userid.css">
                gut ist das nicht. Aber es könnte Deinen Anforderungen genügen.
                Warum ist das nicht gut bzw. was wäre besser?

                es ist nicht gut, weil hier eine Benutzereingabe ungeprüft eingesetzt wird (zumindest sehen wir nicht, ob Sascha sich um eine Überprüfung Gedanken gemacht hat). Man kann also jeden beliebigen Sch*** als User-ID übergeben und so das Dokument kaputtmachen, aber auch fremden Code wie etwa Javascripts einschleusen.

                Besser ist in jedem Fall, die User-ID gegen eine Liste (Tabelle) der erlaubten Werte zu prüfen und aus dieser Tabelle dann auch den Namen der zugehörigen CSS-Ressource oder sogar das Stylesheet an sich zu lesen.

                Ciao,
                 Martin

                --
                Ein Patriot ist jemand, der bereit ist, sein Land gegen seine Regierung zu verteidigen.
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                1. Hallo,

                  es ist nicht gut, weil hier eine Benutzereingabe ungeprüft eingesetzt wird (zumindest sehen wir nicht, ob Sascha sich um eine Überprüfung Gedanken gemacht hat). Man kann also jeden beliebigen Sch*** als User-ID übergeben und so das Dokument kaputtmachen, aber auch fremden Code wie etwa Javascripts einschleusen.

                  Besser ist in jedem Fall, die User-ID gegen eine Liste (Tabelle) der erlaubten Werte zu prüfen und aus dieser Tabelle dann auch den Namen der zugehörigen CSS-Ressource oder sogar das Stylesheet an sich zu lesen.

                  ich habe mir mal Gedanken gemacht bezüglich Überprüfung, habe mir da auch ein paar Zeilen zusammengebastelt, allerdings weiss ich leider nicht ob das so im großen ganzen richtig ist bzw. ob ich noch etwas optimieren oder erweitern könnte? Vielleicht kann sich das jemand mal anschauen und mir gegegenfalls da etwas unter die Arme greifen? Wäre super, besten dank vorab.

                  So gehen wir mal von dem Beispiel:

                  http://example.org/daten/formular.php?userid=1234  aus.

                  Sprich URL-Parameter bzw. Variable wäre $userid ...

                    
                  <?PHP  
                    
                  // Überprüfung ob userid-Variable in den möglichen Auswahlvariablen der einzelnen User vorkommt oder nicht  
                  // Sprich existiert der User oder nicht?  
                    
                  $userid = array(  
                          "user1" => 1234,  
                          "user2" => 5678,  
                          "user3" => 9012  
                         );  
                    
                  $checked_userid = isset($userid[$_GET["select_userid"]]) ? $_GET["select_userid"] : "default";  
                    
                    
                  // Überprüfung ob userid-Variable in numerischer Form vorliegt?  
                    
                    
                  $checked_userid2 = isset($_GET["numeric_userid"]) ? $_GET["numeric_userid"]+0 : 0;  
                    
                    
                  if ( "default" == $checked_userid ) {  
                    
                     echo "Sorry, Sie sind nicht berechtigt, diese Seite zu verwenden!";  
                    
                   } else if ( "0" == $checked_userid2 ) {  
                    
                     echo "Sorry, Sie verwenden keine zulässige User-ID ";  
                    
                   } else {  
                    
                     echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"$userid.css\">";  
                    
                   }  
                    
                  ?>  
                  
                  

                  Könnte man vielleicht als dritte Überprüfung noch irgendwie überprüfen von welcher URL/Domain das ganze aufgerufen wird und dann irgendwie prüfen ob die Ausführung von dieser URL/Domain erlaubt ist oder nicht? Falls sowas geht, wie mache ich sowas und wie baue ich das ein? Danke für die Hilfe.

                  Viele Grüße

                  Sascha

                  1. Lieber Sascha,

                    ich würde mir nicht so viele Gedanken um "Sie dürfen hier aber nicht" machen, sondern einfach prüfen, ob die User-ID bekannt ist - oder eben nicht.

                    // Überprüfung ob userid-Variable in den möglichen Auswahlvariablen der einzelnen User vorkommt oder nicht
                    // Sprich existiert der User oder nicht?

                    $userid = array(
                            "user1" => 1234,
                            "user2" => 5678,
                            "user3" => 9012
                           );

                    $checked_userid = isset($userid[$_GET["select_userid"]]) ? $_GET["select_userid"] : "default";

                    Das ist schon ein guter Anfang. Mir wäre es persönlich für meine Projekte lieber, die URLs sähen in etwa so aus:

                    http://example.com/daten/default.css
                    http://example.com/daten/u1234.css
                    http://example.com/daten/u5678.css
                    http://example.com/daten/u9012.css

                    Irgendwie finde ich es besser, wenn ein Dateiname mit einem Buchstaben beginnt.

                    Als nächstes möchtest Du doch eine hoffentlich vorhandene CSS-Datei einbinden, oder nicht? Also sollte Deine Prüfung einzig und alleine auf deren Vorhandensein ausgerichtet sein:

                    $css = array_key_exists('select_userid', $_GET) ?  
                        preg_replace('~\D~', '', $_GET['select_userid']) : ''; // alle Nicht-Ziffern raus!  
                      
                    $css = is_file("./$css.css") ? "./$css.css" : "./default.css";  
                      
                    echo sprintf(  
                        '<link rel="stylesheet" type="text/css" media="screen" href="%s" />',  
                        $css  
                    );
                    

                    Liebe Grüße,

                    Felix Riesterer.

                    --
                    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)