PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : include fehler


OlliT
15.08.2003, 18:04:46
Hi,

hab da nen problem,

ich wollte in einer index.php mehrere dateien includen, an unterschiedlichen stellen

das mache ich doch einfach mit include("filename");

einzeln lassen sich die files ausführen nur nicht wenn sie in dieser index datei sind.

also ich nutze todos als heißt das include("file.php?todo=110") und dann gibs fehler... ohne todo nicht.

mfg

OlliT

chris17
15.08.2003, 18:24:00
Hi OlliT,

was gibt's denn für Fehler?

Wenn Du der file.php die Variable "todo" "bekanntmachen willst", geht's auch so...

$todo = 110;
include("file.php");


Grüsse

OlliT
15.08.2003, 21:30:49
Hier kommt die fehlermeldung

Warning: main(login3.php?todo=110): failed to open stream: No such file or directory


deine Variante ging leider nicht, war das gleiche wie ohne ?todo.

OlliT
15.08.2003, 21:32:05
Und diese meldung steht genau daunter

Warning: main(): Failed opening 'login3.php?todo=110' for inclusion (include_path='.:/usr/lib/php')

einzeln aufgerufen gibts natürlich keine fehlermeldung

Nev
15.08.2003, 22:05:26
Hi @ll

Man kann in der Funktion requered bzw. include, beim File keine Parameter angeben.

Macht auch keinen Sinn.

Da das File includiert wird, stehen die Variablen vor dem Include, im Include und nach dem Include zurverfügung.

chris17
15.08.2003, 22:09:04
einzeln aufgerufen gibts natürlich keine fehlermeldung
d.h. include("login.php"); funktioniert? Stimmen die Pfadangaben?

Wie sprichst Du "todo" in der login.php an?
Evtl. mit $_GET['todo'] weil Du die Variable an den Dateinamen anhängen wolltest?

Grüsse

OlliT
15.08.2003, 22:14:36
ja genau mit $GET wie gesagt wenn man es einzeln mit todo aufruft gehts, wenns ohne todo aufgerufen wird geht auch inclue,
Nev sagte ja auch das es gar nicht geht, weil die gesamte datei includiert wird, was ich aber ja gar nicht will. In einem teil werden parameter fürs template übergeben, im anderen teil werden die login informationen ausgewertet, wollte halt keine 2 scripte daus machen, weil es ja eigentlich zusammen gehört.

Nev
15.08.2003, 22:25:45
Hi @gain

Es geht schon nur, ned so wie ihr es angegangen seit.

Die Werte welche in der beim Aufruf der Include-Datei benötigt werden, müssen ja bei der aufgerufenen URL verfügbar sein.

das heißt wenn ich in der URL
?todo=110
steht

schaut es folgender massen aus
include ("login3.php");

in der login3.php
kann man genauso auf die GET-Werte zugreifen, genauso als würde sie alleine Aufgerufen.

Also es funkt genauso!!

nur kann include ("login3.php?todo=110");
ned

Hoffe es ist nun klar was ich damit gemeint habe

OlliT
16.08.2003, 08:30:12
sorry, aber ich habs nicht ganz verstanden, bzw sehe ich keine lösung für mich, also soweit ich es verstanden habe, kann man mit include(login.php) keine Werte aufrufen, nur möchte ich doch halt nur diesen Wert in der Logindatei angezeigt haben. Wie greife ich denn auf die werte zu wenn ich include(login.php) aufgerufen habe?

Ben20
16.08.2003, 08:48:58
Ein Include ist wie wenn Du das was includiert (schreckliches Wort) in die Datei geschrieben hättest


Bsp:


//login.php
echo "Hallo";

//index.php
machwas();
include 'login.php';
machnochwas();



ist das gleiche wie




//Dateix
machwas();
echo "Hallo";
machnochwas();


Variablen die vor dem Include gesetzt wurden sind auch dem Include bekannt. Vars die innerhalb des includes gesetzt werden sind auch nach dem Include in der restlichen Datei bekannt!

OlliT
16.08.2003, 09:04:34
Das ist mir schon klar, ich arbeite sonst auch viel mit include dateien, aber habe noch nie gleich beim auruf irgendwelche werte mit übergeben wollen, und das möchte ich jetzt aber es geht nicht, weil er dann die datei angeblich nicht mehr findet. kann ich die datei nicht includen und dann auf den wert zugreifen? es ist ein $GET Wert.

OlliT
16.08.2003, 09:26:01
So ich glaube ich habe es verstanden!

So wie ich es machen möchte funktioniert es nicht. ich möchte ja die datei die includen will gleich mit den Werten aufrufen, wie schon oben mehrmals geschreiben include("login.php?todo=123"); das geht ja irgendwie nicht, aber wenn ich jetzt nur include("login.php"); mache und die gesamte seite dann mit dem wert aufrufe http://123.de/index.php?todo=123 greift er auch auf die login.php richtig drauf zu, das heißt aber alle anderen include dateien dürfen nichts mit 123 haben, jedefalls würde es ja sonst falsch dagestellt werden, bzw auf einen anderen bereich zugegriffen werden. Ist es jetzt so richtig wie ich es geschreiben habe, oder gibt es doch noch eine möglichkeit auf die direkt mit werten zuzugreifen?

chris17
16.08.2003, 09:43:44
Hi OlliT,

$_GET['todo'] = 110;
include("login.php");

So schon probiert?

OlliT
16.08.2003, 09:47:38
Ja, aber das macht er auch nicht, nur wenn ich die index.php datei mit ?todo=110 aufrufe steht es dort so wie es soll.

OlliT
16.08.2003, 09:51:09
so hier nochmal ein beispiel

hier die index.php


<html>
<head>
<title>CHAT-SH</title>
</head>

<body>

<?php include("login.php"); ?>

</body>
</html>



und hier die login.php



if ($GET['todo'] == 110)
{
Name:
Passwort:
etc....
}



und dann möchte ich natürlich nur login.php?todo=110 einbinden und nicht nur login.php. Verstanden?

Wenn ich nun index.php?todo=110 aufrufe, geht es, aber das würde sich ja auch auf die ganzen anderen include dateien auswirken.

chris17
16.08.2003, 09:55:25
index.php:

<html>
<head>
<title>CHAT-SH</title>
</head>

<body>

<?php
$_GET['todo'] = 110;
include("login.php");
?>

</body>
</html>

Das sollte doch funktionieren!?!

OlliT
16.08.2003, 10:04:05
Bei mir nicht, nur wenn ich dann die index.php mit todo aufrufe erscheint es dann auch, deine variante beschränkt sich so wie es aussieht darauf, das nur wenn todo=110 übermittelt wird auch das include ausgeführt wird, denn wenn ich todo=109 mit deiner vairante ausführe, wird gar nichts mehr angezeigt, wenn ich allerdings


$_GET['todo'] = 110;


weglasse, dann kann ich per index.php?todo= auf alle teile der login zugreifen, aber das will ich ja alles gar nicht, das nur mal am rande, weil mir das aufgefallen ist.

Also hab ich immernoch keine lösung :-(

chris17
16.08.2003, 10:14:03
...
weil die gesamte datei includiert wird, was ich aber ja gar nicht will
...


...
Wenn ich nun index.php?todo=110 aufrufe, geht es, aber das würde sich ja auch auf die ganzen anderen include dateien auswirken.

Du sagst es ja selbst, die login.php scheint gar nicht geeignet zu sein, includiert zu werden...
So, wie es aussieht, musst Du das Konzept überdenken. -> Evtl. Template-Parameter und Login-Daten trennen...

Grüsse

chris17

OlliT
16.08.2003, 19:13:32
So jetzt muss ich mich mal entschuldigen.

Es geht alles wie du es gesagt hast, nur mein blöder IE hat das wohl gecacht, obwohl das alles abgeschaltet ist. Hab eben mal meinen rechner neustarten müssen und dann feststellen müssen das es klappt.

Vielen Dank für deine Ausdauer und entschuldige bitte den IE fehler.

OlliT

|Coding
16.08.2003, 22:10:57
hi,

für ie probleme muss man sich nicht entschuldigen. das ist doch ein m$ produkt :-))

chris17
17.08.2003, 09:19:47
Uiuiui, der böse Cache!!!
Geht schon in Ordnung :-))))
Das Schöne daran, sowas passiert in aller Regel nicht nochmal.
Apropos IE-Fehler, kennste schon den Opera?

Gruss

P.S.: Immer fest auf "F5" ;-)

OlliT
17.08.2003, 11:07:32
Jupp, nutze alle Browser, weil mein chat ja compatibly bleiben soll, jedenfalls soweit es geht. Und F5 ist meine am meist benutzte taste ;-)


Du meinst das passiert nicht nochmal? Na das hoffe ich auch, erst ein neustart brachte den erfolg, obwohl ich ja extra den cache deaktiviert habe, bei einer 8 Mbit strecke brauch ich kein cache.

Danke nochmal.

chris17
17.08.2003, 18:19:23
HALT! STOPP!
Du meinst das passiert nicht nochmal? Na das hoffe ich auch, erst ein neustart brachte den erfolg, obwohl ich ja extra den cache deaktiviert habe, bei einer 8 Mbit strecke brauch ich kein cache.
... ich meins eher so:
Wenn Du in Zukunft ein Skript schreibst, wirst Du darauf achten, dass Du immer schöne "frische Daten" im Browser hast!

Ich hab' damit nicht gemeint, dass Dein System ohne Neustart auskommt. :-)

P.S.: Kannst auch mal bei Selfhtml nach "Cache" suchen -> <meta http-equiv="expires" content="0">