php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.11.2011, 10:45  
vic
Neuer Benutzer
 
Registriert seit: 15.11.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
vic befindet sich auf einem aufstrebenden Ast
Standard Arbeitspfad vor include korrigieren

Hallo zusammen.

Bevor ich zu meiner eigentlichen Frage komme möchte ich erst einmal erklären, was ich überhaupt realisieren möchte!

Die Namen der Pfade sind hier zur Vereinfachung geändert.

Auf meinem Webserver befindet sich ein Webmailer. Zu erreichen ist der und seine Login Maske unter dem Pfad:
/webmail/

Die Login-Maske des Webmailers soll anders aussehen und sich auch woanders befinden! Und zwar in:
/design/

Dort befindet sich die index.php (/design/index.php), die eine Form beinhaltet. Diese Form sendet einfach den Benutzernamen und das Passwort an:
/webmail/index.php

So klappt schon einmal der Login. Nun zu meinem Problem!

Beim Ausloggen aus dem Webmail, wird mit GET "logout" übergeben.
/webmail/index.php?logout

Nach dem ausloggen befindet man sich wieder bei der Webmailer-Login-Maske:
/webmail/index.php

Ich muss aber auf die neue Login-Maske zurück nach dem Logout. Das übergebene Logout muss irgendwie abgefangen werden. So zum Beispiel:
PHP-Code:
if(isset($_GET['logout'])) {
Header("Location: http://example.com/design/index.php"); } 
Jetzt kommt das knifflige! Ich darf nicht eine Datei in /webmail/ anrühren! Das soll nämlich irgendwann mal geupdated werden und danach müsste man wieder alles neu ändern.

Nun mein Lösungsansatz:

In der PHP Datei:
/design/index.php
einfach mit include(/webmail/index.php) nach dem Login auf der /design/index.php bleiben und dort den Logout abfangen!
Klinkt schon mal gut, klappt aber leider so nicht.

Bei include() wird ja bekanntlich nur der Quelltext "eingefügt", die index.php des Webmailer includiert selbst noch einige Dateien, die Pfade dazu sind in /design/ natürlich falsch und die Dateien nicht zu finden.

Der aktuelle Arbeitspfad muss also vor dem include() korrigiert werden!

Versucht habe ich's mit:
PHP-Code:
chdir() 
was leider auch nicht hilft. Nach dem include der /webmail/index.php sucht diese nach z.B. /images/ im Verzeichnis /design/. Vorhanden ist das aber in /webmail/ ...



... hat jemand eine Ahnung wie ich Arbeitsverzeichnis vor dem include() auf /webmail/ setze, aber weiterhin alles in /design/index.php bleibt, damit ich den Logout abfangen kann?

Oder bin ich vielleicht auf dem falschen Weg und es gibt noch eine andere Methode mein Vorhaben zu verwirklichen?

Gruß,

vic
vic ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.11.2011, 11:02  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Zitat:
Jetzt kommt das knifflige! Ich darf nicht eine Datei in /webmail/ anrühren!
Dann wirds imho nichts werden!
Der Logout-Mechanismus befindet sich ja in den Dateien des Wbmailers. Wenn Du das Ziel da nicht verändern darfst/willst, mußt Du damit leben...
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 15.11.2011, 11:03  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.141
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

Also wenn der webmailer beim Logout die /webmail/index.php aufruft, dann ist es egal was du in Dateien unter /design/... machst/includest etc.. da dort nichts ausgeführt wird.. also sieht eher schlecht aus.

Ich wüßte nicht wie man das hinbekommt, ohne eine einzige Datei in /webmail/ anzugreifen, zumindest die /webmail/index.php müßte man dort patchen.. hab leider sonst keine Idee dazu...

LG
__________________
Keine Zahl != ein Zeichen das keine Zahl ist
hausl ist offline   Mit Zitat antworten
Alt 15.11.2011, 11:14  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Wie wäre es damit: Mittels mod_rewrite leitest du Anfragen an /webmail/index.php auf /design/index.php um, dort machst du dein zusätzliches Fu und danach einen include der originalen index.php. Falls darin mit relativen Pfaden gearbeitet wird kommt tatsächlich auch noch das Arbeitsverzeichnis ins Spiel (das hat nichts mit dem Aufruf "von außen" zu tun sondern nur damit, wie z.B. der Pfad von includes aufgelöst wird!):
PHP-Code:
chdir('/webmail/');
include 
'/webmail/index.php'
fab ist offline   Mit Zitat antworten
Alt 15.11.2011, 11:23  
vic
Neuer Benutzer
 
Registriert seit: 15.11.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
vic befindet sich auf einem aufstrebenden Ast
Standard

Erstmal vielen Dank für die Zahlreichen antworten! Bei euch wird man ja schnell bedient - danke sehr!

Zitat:
Zitat von fab Beitrag anzeigen
Wie wäre es damit: Mittels mod_rewrite leitest du Anfragen an /webmail/index.php auf /design/index.php um [...]
Seeehr guter Anfang mit .htaccess, dass halte ich mir als Notoption offen.

Zitat:
Zitat von fab Beitrag anzeigen
[...] kommt tatsächlich auch noch das Arbeitsverzeichnis ins Spiel [...]
PHP-Code:
chdir('/webmail/');
include 
'/webmail/index.php'
Genau das habe ich auch versucht, mit genau dem Code (nur, dass es dann einfach nur include ("index.php") heißt, da wir ja jetzt in /webmail/ arbeiten!):

PHP-Code:
chdir ("../webmail/");
include (
"index.php"); 
Nur leider werden wieder Bilder und andere includierte Skripte nicht geladen, error.log meldet:
Code:
[Tue Nov 15 10:56:38 2011] [error] [client 127.0.0.1] File does not exist: /var/www/designl/images, referer: http://127.0.0.1/
[Tue Nov 15 10:56:38 2011] [error] [client 127.0.0.1] File does not exist: /var/www/design/images, referer: http://127.0.0.1/
[Tue Nov 15 10:56:38 2011] [error] [client 127.0.0.1] File does not exist: /var/www/design/images, referer: http://127.0.0.1/
Und so weiter, und so weiter! Also obwohl wir das Arbeitsverzeichnis gewechselt haben (was doch genau den selben Effekt hätte, als würden wir /webmail/index.php so ausführen, oder?), sucht er im /design/ Pfad.
vic ist offline   Mit Zitat antworten
Alt 15.11.2011, 11:28  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Zitat:
Zitat von vic Beitrag anzeigen
Seeehr guter Anfang mit .htaccess, dass halte ich mir als Notoption offen.
Bis dahin braucht dich der Rest meines Beitrags aber auch nicht zu interessieren :P

Was stört dich daran so dass es für dich nur eine Notoption ist? Die einzige andere Lösung, die mir einfällt geht ebenfalls den Weg über die Serverkonfiguration, ist aber deutlich dreckiger. Wie schon gesagt wurde, mit deinem Skript selbst kannst du das Verhalten des fremden Skripts nicht beeinflussen sobald die Kontrolle dort liegt.
fab ist offline   Mit Zitat antworten
Alt 15.11.2011, 13:46  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von vic Beitrag anzeigen
Nur leider werden wieder Bilder und andere includierte Skripte nicht geladen, error.log meldet: […]
Und so weiter, und so weiter! Also obwohl wir das Arbeitsverzeichnis gewechselt haben (was doch genau den selben Effekt hätte, als würden wir /webmail/index.php so ausführen, oder?), sucht er im /design/ Pfad.
Mach dir bitte klar, wer da „sucht“.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 15.11.2011, 14:04  
vic
Neuer Benutzer
 
Registriert seit: 15.11.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
vic befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von fab Beitrag anzeigen
[...]Was stört dich daran so dass es für dich nur eine Notoption ist? [...]
Stören tut es mich nicht. Hatte mich an der include-Variante fest gebissen und wollte noch ein wenig herum probieren, bevor ich die .htaccess-Variante ausprobiere.

Zitat:
Zitat von ChrisB Beitrag anzeigen
Mach dir bitte klar, wer da „sucht“.
Der includierte Code in der /design/index.php also letztendlich geht das von dem Skript aus.
vic ist offline   Mit Zitat antworten
Alt 15.11.2011, 14:07  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von vic Beitrag anzeigen
Zitat:
Mach dir bitte klar, wer da „sucht“.
Der includierte Code in der /design/index.php also letztendlich geht das von dem Skript aus.
Die richtige Antwort wäre gewesen: Der Client.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 15.11.2011, 16:17  
vic
Neuer Benutzer
 
Registriert seit: 15.11.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
vic befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
Die richtige Antwort wäre gewesen: Der Client.
Was bedeutet, dass das Arbeitsverzeichnis zu erst von der aktuell aufgerufenen PHP Datei (nämlich das, in welches sich eben jene befindet) festgelegt wird, sehe ich das richtig? Und es gibt keine Möglichkeit, dass innerhalb dieser Datei bzw. deren Ausführung zu ändern?
Wenn das so ist, komme ich mit der "include()"-Variante wirklich nicht weiter.

Sieht jemand noch eine andere Möglichkeit, mein Vorhaben zu realisieren (nicht böse sein, fab. Ich habe deinen Vorschlag nicht vergessen!)?

Die Logout-Prozedur habe ich bereits abfangen können, in dem ich:
PHP-Code:
include ("../design/webmail_logout.php"); 
in die Konfigurationsdatei des Webmailers eingefügt habe. Die Datei ist die einzige, die bei einem Update sicher nicht überschrieben wird.
Der Code der webmail_logout.php ist:
PHP-Code:
    if (isset($_GET['_task'])) {
        if (
$_GET['_task'] == "logout") {
        
Header("Location: http://xx.xx.xx.xx/design/webmail_login.php"); } } 
Mein Vorhaben wäre bereits erfolgreich abgeschlossen, wenn auch der Login nun funktionieren würde. In der webmail_login.php wird einfach der Benutzername und das Passwort an die index.php vom Webmailer übergeben. Leider klappt das nicht, da der Webmailer selbst vor dem eigentlichen Login schon eine Session aufbaut und einen "Token" generiert, was übersprungen wird, wenn ich die Benutzerdaten von einer anderen Form absende.

Ein include() sollte eigentlich dieses Problem lösen aber leider funktioniert das ja nicht.
vic ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] "falsche" json resultes korrigieren salcin PHP Einsteiger 5 14.06.2011 23:10
HTML Code überprüfen und automatisch korrigieren Crypt PHP Tipps 2010 8 10.08.2010 15:56
Texte verfassen & korrigieren, Fotos texter1985 Beitragsarchiv 1 08.02.2009 22:53
Quelltext korrigieren PHP Tipps 2007 7 02.01.2007 23:05

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php arbeitsverzeichnis, php include pfad, pfade in includes auflösen php, login maske webserver php xx, index.php\ in den pfaden., php includes aktueller pafd, login bevor index.php, php arbeits verzeichnis ändern, php vor include pfäde auflösen, php include pfade

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:24 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum