Ole: Kleine Scriptanpassung

Guten Morgen,

ich setze Wordpress als CMS für mehrere Projekte ein. Nun hatte ich es satt dutzende von WP-Installationen zu pflegen und bin dabei auf eine nette Möglichkeit gestoßen mit einer Wordpressinstallation mehrere Domains zu bedienen.

Auf Open Sourced Brain bin ich auf den Artikel Multi-(Sub)Domain-WordPress gestoßen. Ich Verwende "Version 2" für mein Anliegen.

Nun ist es jedoch so, dass das Script bei Domains ohne Bindestrich hervorragend funktioniert, bei Domains mit Bindestrich jedoch einen haufen SQL-Fehler bei der Wordpress-Installation produziert. Ich vermute, dass MySQL keine Bindestriche in Tabellennamen mag.

Wie kann ich das Script so modifizieren, dass auch Bindestrich-Domains keine Probleme mehr machen? z.B. durch den Austausch des "-" gegen "_".

Danke
Ole
(8-)>

--
Stickstoff eignet sich nicht für Handarbeiten.
  1. Hallo

    Nun ist es jedoch so, dass das Script bei Domains ohne Bindestrich hervorragend funktioniert, bei Domains mit Bindestrich jedoch einen haufen SQL-Fehler bei der Wordpress-Installation produziert. Ich vermute, dass MySQL keine Bindestriche in Tabellennamen mag.

    Ja, das steht so in der Dokumentation. Das ist auch ganz logisch.

    alpha-beta

    wird gelesen als

    alpha - beta

    und die Spalten alpha und beta gibt es vermutlich nicht. Und selbst wenn, wäre das Ergebnis nicht das gewünschte ...

    Übrigens mögen auch andere Datenbankmanagementsysteme aus gleichem Grund keine Bindestriche in Tabellennamen. Selbstverständlich erzählt die Dokumentation der Datenbankmanagementsysteme, mit welchen Zeichen solche Namen einzupacken sind, damit das DBMS doch damit umgehen kann:

    Bei MS-Access und MS SQL-Server wird der Name in eckige Klammern gepackt, wie es bei MySQL geht, steht im Kapitel Database, Table, Index, Column, and Alias Names, nämlich mit Backticks.

    Ich rate Dir dringend an, das Skript auf weitere naheliegende Fehler, wie mangelnder Absicherung gegen SQL-Injection, zu überprüfen. Deine bisherige Beschreibung hört sich nicht vertrauenserweckend an.

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,

      Ja, das steht so in der Dokumentation. Das ist auch ganz logisch.

      [...]
      Jupp

      Wenn man den Tabellennamen jedoch in Anführungszeichen setzt, "mag" MySQL auch Bindestriche, da sie dann wohl nicht als Operatoren angesehen werden.

      Ich rate Dir dringend an, das Skript auf weitere naheliegende Fehler, wie mangelnder Absicherung gegen SQL-Injection, zu überprüfen. Deine bisherige Beschreibung hört sich nicht vertrauenserweckend an.

      Hmmm...jetzt machst du mir ein wenig Angst.

      Ich weiß nicht in wie weit du dir die verlinkten Seiten durchgelesen hast. Das Script generiert aus dem "HTTP_HOST" ein Prefix, welches zur Identifizierung der Tabellen in der Datenbank dient.
      Für die Domain "exmaple.de" bekommen die Tabellen das Prefix "example_".

      Invieweit bestehen in dem Script Lücken/Fehler? Ich bin relativ neu auf dem Gebiet PHP, daher stehe ich etwas auf dem Schlauch.

      so long
      Ole
      (8-)>

      --
      Stickstoff eignet sich nicht für Handarbeiten.
  2. Hi

    Ich hab das ganze jetzt so gelöst:

    $table_prefix = ereg_replace( "[^A-Za-z0-9]", "_", $_SERVER["HTTP_HOST"] ).'_';

    so long
    Ole
    (8-)>

    --
    Stickstoff eignet sich nicht für Handarbeiten.
    1. Hallo,

      Für die Domain "exmaple.de" bekommen die Tabellen das Prefix "example_".
      $table_prefix = ereg_replace( "[^A-Za-z0-9]", "_", $_SERVER["HTTP_HOST"] ).'_';

      Da frag' ich mich doch glattt was passiert wenn Du neben 'example.de' auch 'example.com' verwalten willst, welche jedoch unterschielichen Inhalt haben sollen;-)

      Grüße
        Klaus

      1. Hallo Klaus,

        Da frag' ich mich doch glattt was passiert wenn Du neben 'example.de' auch 'example.com' verwalten willst, welche jedoch unterschielichen Inhalt haben sollen;-)

        Tippfehler von mir, "example_" ist natürlich Unfug.

        für "example.de" erhalte ich das prefix "example_de_" und
        für "example.com" erhalte ich das prefix "example_com_"

        so long
        Ole
        (8-)>

        --
        Stickstoff eignet sich nicht für Handarbeiten.