variablenfunktion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • variablenfunktion

    Ich möchte auf einer Seite auf eine Datenbank zugreifen und auf eine weitere von mehreren Datenbanken.

    Dazu habe ich folgendes versucht: ich setze zunächst eine konkrete Datenbank (WortA) ein und der Versuch ist erfolgreich:
    PHP-Code:
    include '../functions/AAA.inc.php';
    include 
    "../functions/BBB.inc.php";
    $fach"WortA";
    $func =$fach;
    $conn_id $func (); 
    Im Ordner functions befinden sich die Datenbankanbindungen WortA .. WortB ... WortC .. :
    PHP-Code:
    function WortA ()
    {
        
    $db_name " ";
        
    $host_name " ";
        
    $user_name " ";
        
    $password " ";

    $conn_id = @mysql_connect ($host_name$user_name$password); ... 
    Das wars denn schon, denn folgende Änderung führt zu Fehlermeldung: undefinierte Funktion.
    Geändert wurde ausschließlich die Bezeichnung der Datenbank, also:
    PHP-Code:
    $fach=$_GET["fach"];
    $func =$fach;
    $conn_id $func (); 
    Der Wert der Variablen $fach kann an anderer Stelle der Seite problemlos ausgegeben werden, also: WortA .. WortB ...

    Über Hinweise würde ich mich freuen !

    ps: bei einem Versuch mit switch ergab sich ein ähnliches Problem.

  • #2
    Schreib mal die genaue Fehlermeldung!
    visit bepeppered.net

    Kommentar


    • #3
      Testausgaben?

      Wie heißt die Funktion, wo hast du sie definiert? Ist die Fehlermeldung denn nicht ziemlich eindeutig?

      Kommentar


      • #4
        Angaben

        Hier die exakte Fehlermeldung:

        Call to undefined function: ()
        bezogen auf die Zeile derselben Seite:
        PHP-Code:
        $conn_id $func (); 
        Zur Vorgehensweise s.o.: die Variablenfunktion verweist auf eine Funktion mit der Bezeichnung $fach.
        Der Benutzer soll zwischen verschiedenen Bezeichnungen wählen können, wonach die Variablenfunktion die jeweilige Datenbankanbindung gleichen Namens im Ordner functions aufruft.

        Wenn ich - wie oben aufgezeigt - für $fach den Wert "WortA" bzw. Englisch einsetze, läuft alles problemlos.

        Wenn ich dagegen in demselben Script
        PHP-Code:
        $fach=$_GET["fach"]; 
        einsetze, erhalte ich die Fehlermeldung.


        Andererseits: an anderen Stellen der Seite kann ich den jeweiligen Wert von $_GET["fach"] ausgeben.
        Ich kann also z.B. die Bezeichnung der Seite Englisch, Mathe ... ausgeben.

        Wenn noch unklar bitte nachfragen!

        Kommentar


        • #5
          versuch zuerst:
          PHP-Code:
          $func(); //nur so 
          und gibmal ?fach=die weiter

          Kommentar


          • #6
            Erledigt

            Zunächst:
            vielen Dank
            für die Mithilfe - auch ich habe zwar an die 'grundsätzlichen Fragen' gedacht - aber wohl an die falschen.

            Mein Skript enthielt: get_self_path
            und danach war der Wert von $fach nicht mehr verfügbar - das habe ich korrigieren können.

            Ansonsten: die Variablenfunktion ist für den oben genannten Zweck gut geeignet (wenn einmal alles funktioniert).

            Kommentar


            • #7
              versuche trotzdem solch ein konstrukt zu vermeiden, es kann ein großes sicherheitsproblem geben.

              Kommentar


              • #8
                problematische Lösung

                Bitte präzisiere den Hinweis :
                worin liegen die Risiken von
                get_self_path ?
                Welche bessere Wege dienen demselben Zweck?
                Anmerkung:
                die (wieder) aufgerufene Seite wird in einer Session verwendet;
                die autorisierten User und ihre Rechte auf Zugriff zur den Datenbanken werden vor dem Insert-Befehl nochmals geprüft.
                Bleiben die Sicherheitsbedenken bestehen?

                Kommentar


                • #9
                  teilweise schon. eine http anfrage geht vom client an den server, d.h. der client kann sie beeinflussen. dabei kann jede funktion ausgeführt werden, die unerwartete ergebisse bringen kann bzw. als teil eines destruktiven mechanismus dienen kann. gib doch ein stichwort weiter bzw. übertrage es in einer session, das anschließend ausgewertet wird und nur im falle einer übereinstimmung gewisse prozesse auslöst.

                  Kommentar


                  • #10
                    Sicherheit

                    Natürlich möchte ich Risiken vermeiden; hier mein Vorgehen:

                    Die Seite mit dem betreffendem Script kann nur geöffnet werden, wenn der user registriert ist, einer Benutzergruppe angehört, sich eingeloggt hat (Session / Benutzergruppe s. Datenbank) und die Benutzergruppe gewählt hat, die zu seiner Identität passt.
                    Wahl der (alternativen) Datenbankanbindung (s.o. Variablenfunktion), zu der eine Berechtigung vorliegt.
                    Danach: Überprüfung der Berechtigung zum Upload (von Dateien) in die jeweilige Datenbank: Identität des Benutzers, Benutzergruppe, Berechtigung zum Upload bestimmter Formate etc. , Berechtigung /Sperre zum Upload (datenbankgestützt).
                    Dann: Ausfüllen des Formulars,
                    get_self_path ,
                    insert

                    Bitte um Rückmeldung, wenn eine Schwachstelle auffällt.

                    Kommentar

                    Lädt...
                    X