Ankündigung

Einklappen
Keine Ankündigung bisher.

mysqli ssl remote/localhost und include vs global

Einklappen

Neue Werbung 2019

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

  • mysqli ssl remote/localhost und include vs global

    Hallo zusammen,

    als ich vor 2Jahren angefangen habe PHP zu lernen habe ich irgendwie was gelesen, dass man Globals vermeiden soll. Mittlerweile stelle ich mir aber die Frage, ist das wirklich so?
    Deshalb habe ich es immer so gemacht das ich die benötigten Dateien immer via include in Funktionen eingebunden habe, zB. Sprachfiles, MySQLi Verbindung etc...
    Also so:
    PHP-Code:
    function foo(){
    include_once 
    "datei1";
    include_once 
    "datei2";....

    Ich bin mir ziemlich sicher, dass das kein guter Programmierstil ist?!? Wäre es nicht besser die Dateien per include am Anfang der Datei einzubinden und auf die entsprechenden Variablen per global zuzugreifen, oder gibt es eine noch bessere Methode? Bin für jeden Tipp offen.
    Soviel zu Punkt 1.

    Zu Punkt 2.:
    Desweiteren habe ich ein Script das auf einem Server läuft das auf die DB eines anderen Servers zugreifen muss, aber gleichzeitig eigene Datenbank hat.
    Da ich vermute, dass über mysqli_connect das Passwort etc. im Klartext übertragen werden würde, wollte ich das ganze gerne über SSLKeys machen.
    Hierbei stellt sich mir aber gerade die Frage: Wenn ich diese Methode benutzte, müssen dann alle Datenbankabfragen per SSLKey geschehen, oder ist auf localhost immernoch Benutzer:Password möglich? Oder kann man das für jeden Benutzer einzeln definieren?

    Das wird mir leider aus der Anleitung http://www.chriscalender.com/tag/require-ssl/ nicht ersichtlich.

    Gruß
    prophet


  • #3
    Mir ist die mysqli.ssl-set function durchaus bekannt, aber die Documentation beantwortet meine Frage nicht.

    Der Autoloader bringt ja nur was wenn man Klassen includiert, was ist mit einzelnen Variablen wie zb. ein Array das Phrasen enthält?

    Kommentar


    • #4
      sry, war aus deinem post nicht zwingend ersichtlich.
      mit dem table user der database mysql hast du dich sicher ausführlich beschäftigt?

      classen, gut, mein fehler. ab und an nutze ich noch define.

      Kommentar


      • #5
        Am Besten wäre es, wenn du eine objektorientierte Programmierung mittels Dependency Injection/Service Container nutzt. Eventuell musst du diesen Satz 3x lesen und die Begriffe nachlesen - es ist etwas ganz anderes, als du jetzt machst.

        Programmierung mittels einem Haufen Funktionen und globals trifft man heute nur noch in Wordshit an, dem Paradebeispiel an schlechtem Programmierstil schlechthin.

        Für welche Verbindungen du SSL voraussetzt ist Sache des Datenbankservers. Das kannst du für jede Kombination aus Benutzer + Host selber einstellen. MySQL ist - soweit mir bekannt - nicht super was Subnetze angeht, aber das betrifft dich hier wohl kaum.

        Besser als jede Verbindung mittels SSL aufzubauen wäre es, einen SSH-Tunnel auf dem Server aufzubauen. Das spart einiges an Overhead.
        GitHub.com - ChrisAndChris - RowMapper und QueryBuilder für MySQL-Datenbanken

        Kommentar


        • #6
          Ahh verdammt, hatte den Thread vor lauter Klausuren vollkommen vergessen -.-"

          mit dem table user der database mysql hast du dich sicher ausführlich beschäftigt?
          Ja habe ich. Habe es mit dem SSLKey nach erneutem lesen hinbekommen.

          objektorientierte Programmierung mittels Dependency Injection/Service Container nutzt.
          OOP ist mir ein Begriff, nutze ich auch zum Großteil. 3x??... mindestens Habe davon bisher noch nie etwas gehört. Muss gestehen, verstehe den Ansatz noch nicht so wirklich, muss mich damit mal noch intensiver befassen.

          einem Haufen Funktionen
          Meinst du damit, dass alle Funktionen in ne Klasse gesteckt werden sollen? Kannst du mir den Sinn dahinter erklären? Wieso sollte ich zb. eine Funktion, die.... hmm mir fällt auf Anhieb kein Beispiel ein, dass ohne Klasse mehr Sinn ergeben würde.

          Werde mir das mit dem SSH-Tunnel mal genauer anschauen. Versuche immer bestmöglichst Overhead zu vermeiden!

          Kommentar


          • #7
            Für DI/IOC siehe z.B. diesen Artikel: http://www.itwissen.info/definition/...ection-DI.html

            Bei Google findest du einen Haufen an Informationen über Dependency Injection, Inversion Of Control, Service Container, ... Objektorientierte Programmierung genauso. Das mag ich hier nicht erläutern.

            Das "einem Haufen Funktionen" war wie folgt gemeint: Anstelle, dass du eine Funktion hast, packst du diese Funktion in eine Klasse. Das ermöglicht dir, die Funktion aufzuteilen. Also einzelne Aufgaben wiederum zu zerstückeln:

            PHP-Code:
            function getOptions($databaseConnection$optionname$anotherParam, ...) {
            // do some messy code
            }

            // wird zu
            class OptionContainer {
              public function 
            __construct($databaseConnection) { }
              public function 
            getOption($name) { }
              private function 
            internalMethod() { }

            Verdeutlicht das Prinzip:
            - 1 Klasse 1 Aufgabe
            - Filigrane Aufteilung innerhalb der Klasse
            - Loslösen von irgendwelchen Abhängigkeit (einfügen durch Setter, Constructor)

            Für weitere Informationen konsultiere man Google.
            GitHub.com - ChrisAndChris - RowMapper und QueryBuilder für MySQL-Datenbanken

            Kommentar

            Lädt...
            X