• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

<Include> macht Stress...

Status
Für weitere Antworten geschlossen.

Nightmare

Neues Mitglied
Ich habe ein Problem um eine Website von nem Kumpel fertig zu stellen.

Nachdem mir stundenlanges Googeln nicht weiter geholfen hat, poste ich hier verzweifelt mein Problem.

Ich habe ein Loginscript mit Include in den Header eingebunden. Da sich dieses Loginscript in einem Unterverzeichnis vom Server befindet, und von der Hauptseite eingebunden wurde, wird das Script ausgeführt, als währe es im Hauptverzeichniss. Kann ich irgendwie dem Include Befehl sagen, in welchem Verzeichnis das Script ausgeführt wird??? Oder gibt es einen anderen Befehl eine Datei einzubinden und dann auch in dem Ordner auszuführen, in dem sie liegt???

MFG
 
Wenn du den Login in deinem Unterverzeichnis ausführen willst, musst du im <form>-Tag auch ein korrektes Ziel angeben. Da hilft ein wenig Kenntnis im Verzeichnis. "./" ist aktuelles Verzeichnis, "../" is ein Verzeichnis zurück. Wenn du also das Form in nem untergeordneten Ordner ausführen wills:

HTML:
<form action='../login.php' [...]></form>
 
Warum muss es den unbedingt im unterverzeichnis ausgeführt werden? Ich kann mir keinen fall vorstellen indem das zwingend erforderlich ist.

Ansonsten musst du es wohl wie NetzSchleicher gesagt hat im entsprechenden unterverzeichnis aufrufen anstatt es einzubinden. Das ginge über eine weiterleitung einen link oder über einen aufruf durch ein formular.
 
Die Antwort auf deine Frage ist ziemlich einfach^^

Da ich an dieser Seite unter anderem auch vom Browser aus rumbastel (mit nem Editorscript), ist der Server äuserst aufgeräumt, damit ich den Überblick nicht verliere. Da aber das Loginscript für mehrere Nutzer ist, die zusätzlich noch einer Klasse zugewiesen werden können (Stdmember,Clan u.s.w) besteht das Loginscript nicht nur aus einer Datei. Wenn ich also das Script mit Include in den Header einbaue, der vom Hauptverzeichnis gestartet wird, wird das Loginscript ebenfalls vom Hauptverzeichniss geöffnet. Wenn ich nun versuche mich einzuloggen findet er eine Datei nicht. Wenn ich dann im Loginscript vor jeden Verweis auf eine andere Datei (login/) schreibe, funktioniert es wieder.

Das ganze Problem bei der Sache ist, das das Loginscript auch von einer anderen Seite gestartet wird, und zwar direkt. Das bedeutet, das das Script auf den nicht vorhandenen Ordner (login/login/) zugreifen will. Da ich es ziemlich für sinnlos halte ne zweite Datei (z.b. Login2.html) zu erstellen, ohne die zusätzlichen Angaben (/login) vor jedem Dateiverweis zu setzen, muss es ja auch noch einen anderen Weg geben.

Bei dem Versuch, das script mit
<form action='login/login.php' [...]></form>
einzubinden kam folgende Fehlermeldung:

Parse error
: syntax error, unexpected '<' in
/insanitysite/Include/lefter.php on line 11

Da ich gerade erst mit Php angefangen habe, kapier ich natürlich garnicht, was mir das sagen soll.
Line 11 ist auf jeden Fall der Eintrag (form action)
 
Was hällst du davon das du für den pafd eine variable erstellst. Diese wird von aufrufenden Script festgelegt und somit passt sich der pfad immer perfekt an das aufrufende Script an.
 
Hey Prophet,

Das ist eine verdammt gute Idee, ich werde mich da mal durch http://www.php.net/manual/de/ durchschlagen.

Ich bedanke mich ganz herzlich für eure Hilfe^^

@Alty
Was meinst du mit:

code?
<Loremm Ipsum>

Oder besser gesagt, was hat das mit meinem Problem zutun????
 
Zuletzt bearbeitet von einem Moderator:
Ja du sollst den fehlerhaften code posten...
lorem ipsum ist nur blindtext, da hier ne mindestlänge herrscht.
 
Das mit den Variablen war eine gute Idee, das hat es mir einiges leichter gemacht. Dennoch lässt sich der Includebefehl bei dem Loginscript nicht mit einer Variablen ein.

PHP:
<?php include("',$login,'");?>
Nachdem das nicht funktioniert hat, habe ich es wie folgt probiert:

PHP:
<?php include("$login");?>
Der erste Code scheint vollkommen falsch zu sein, da auf der Webside ein dicker Fehler rausgehauen wird. Er würde (',XXX/login/login.php,') nicht finden können, also habe ich in dem Code die oberen Striche und die beiden Kommas rausgenommen.
Interesanterweise zeigt er jetzt in dem freien Platz, wo das Loginscript hin soll, gar nichts, nicht einmal eine Fehlermeldung kommt zutage...

Wenn ich aber nem direkten Verzeichnisswechsel bei Include einsetzte ohne die Variable, kommt was ich begehre. Die Variable ist auch okay, die habe ich mit einem Link gechekt...

Das Irritiert mich^^
 
...und ist unheimlich aufwendig in der wartung @ FleyerShaver.


Soweit ich dich verstehe ändert sich nur das verzeichnis nicht die Datei richtig?
Die einbindende Datei mach also folgendes:
PHP:
<?php
$login = 'das/verzeichnis/indem/login-php/liegt/';
include($login.'login.php');
?>

Innderhalb der login php werden dann alle includes so durchgeführt:
PHP:
<?php 
include($login.'include1.php');
include($login.'include2.php');
include($login.'include3.php');
?>

So legt $login fest in welchem verzeichnis alle projekt übergreifenden Daten und includes liegen und das unabhängig vom aufrufenden script.
 
@gollum1990

So ein Müll, ich habe jetzt jeden Krimskrams ausprobiert, nur nicht das, was du jetzt vorgeschlagen hast.

Natürlich funktioniert es...
Ich habe §login immer in Anführungszeichen gesetzt. Was ja auch normal wäre, wenn man die Datei ohne Variable einbindet :oops:

@Prophet

Genau so funktioniert das Script nicht wirklich. Die Datei, mit der man sich einlogt ist login.html (die mit Include auf die eigendliche Website eingebunden wird) . Diese Datei nimmt nur die Daten "name" und "pass" auf und sendet sie an eine Php weiter die ebenfalls mit einer Variable aufgerufen wird. Die Php Datei erkennt dann ob es sich um einen Member oder um einen Administrator handelt und verweist dann auf die jeweilig unabhängige Website auf dem Server. Also brauchte ich nur ein Include mit Variable.

Die Seite ist zwar noch nicht offiziell online, aber ihr könnt ja trotzdem mal nen Blick drauf werfen, auch wenn es die reinste Baustelle ist.^^

http://insanityside.in.funpic.de/news.php


Ich danke euch sehr, es sind doch die kleinen Fehler, vor denen man die Augen verschließt und beim besten Willen nicht auf die Lösung kommt.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben