php relative Pfade und Verzeichnisse

Ich wundere mich etwas, aber ich kann nicht scheinen zu finden, eine gute, klare Antwort, oder sogar eine Lösung für dieses problem:

Meine PHP-Webseite hat die folgende Struktur:

root
   functions
   generators
   helpers
   scripts
   style
   index.php

Diese sind alle Ordner und ein php-Datei. Funktionen enthält, ein Haufen op-php-Dateien im Zusammenhang mit Datenbank-Verbindung und verschiedene andere Datenbank-Operationen wie einfügen, löschen, aktualisieren,... - Generatoren enthält Klassen zum automatischen generieren von web-Seiten, um Sie alle gleich Aussehen. Helfer sind Klassen, die mit login, logout, registrieren, etc. Scripts sind javascript-und Style ist CSS.

In meinem Generatoren Ordner gibt es eine Datei mainGenerator.php dies erzeugt verschiedene Stücke von der website:

 private function generateLogin()
    {
        if (!isLoggedIn()) {
            echo "
                <h2>Login</h2>
                <form method='post' action='../helpers/login.php' id='loginForm'>
                <p>
                Username:<br/>
                <input class='search' type='text' name='username'/>
                Password:<br/>
                <input class='search' type='password' name='password'/>
                <input name='login' type='image' style='border: 0; margin: 0 0 -9px 5px;' src='style/login.png' alt='Login' title='Login'/><br/>
                No account yet? <a href='../register.php'>Register</a>
                </p></form>";
        } else {
            echo "
                <h2>Welome, <a href='user.php' style='color: #1293EE;'>" .
                 $_SESSION['user_name'] .
                 "</a></h2>
                <a href='logout.php'>Log off</a>";
        }
    }

Dieses Stück code generiert die loginbox auf jeder Seite, oder zeigt eine willkommen-Nachricht, wenn der Benutzer bereits angemeldet ist. Wie Sie sehen können, die Aktion Hinweise auf "../helpers/login.php" denn das ist die relative Lage der loginhelper von diesem generator Sicht.

Nun, hier ist das problem: Wenn ich drücken Sie die Schaltfläche "login" auf der index.php (http://example.com/ProjectName/index.php) es leitet mich zu http://example.com/helpers/login.php und sagt, dass die Datei nicht gefunden wird.

Ich sehen, was das problem ist, die post Aktion sieht der Antrag aus index.php und geht nach oben in einem Verzeichnis und sucht sich dann /helpers/login.php, die nicht existiert, natürlich.

Einem fix sein könnten, um die Aktion zu ändern, um

action='/helpers/login.php'

aber das gibt mir das gleiche problem, soll ich Zugang zu generateLogin (), die in einem bestimmten Unterverzeichnis...
Wie kann dieses problem gelöst werden, ich.e: die Referenz zu /helpers/login.php bleibt richtig, egal von wo ich versuche auf ihn zuzugreifen.

InformationsquelleAutor Matthias | 2011-10-20

Schreibe einen Kommentar