 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
29.05.2004, 18:57
|
#1
|
|
TP-Supporter
Registriert seit: Aug 2003
Ort: NRW
|
Problem mit header () und include() -> Lösung unmöglich?
Hallo, Forum!
Ich hab mich jetzt schon schön weit vorrangearbeitet, aber hänge nun vor einem riesen Problem:
Ich habe folgende Seite (zu beachten die Navigation mit includes!)
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/Strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>css design</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="window">
<div id="left">
<div class="navigation">
<p class="nav-head">Menü</p>
<a class="nav" href="<?php echo $PHP_SELF."?content=home"; ?>">Startseite</a>
<a class="nav" href="<?php echo $PHP_SELF."?nav=schule&content=schule"; ?>">Unsere Schule</a>
<a class="nav" href="<?php echo $PHP_SELF."?nav=wir&content=wir"; ?>">Über uns</a>
<a class="nav" href="<?php echo $PHP_SELF."?nav=projekte&content=projekte"; ?>">Projekte</a>
<a class="nav" href="<?php echo $PHP_SELF."?nav=kontakt&content=kontakt"; ?>">Kontakt</a>
<a class="nav" href="<?php echo $PHP_SELF."?content=impressum"; ?>">Impressum</a>
</div>
<div class="login">
<p class="login-head">Login</p>
<div id="login">
<div class="loginform"><form name="loginform" action="<?php echo $PHP_SELF."?content=login"; ?>" method="POST">
Name:
<input size="15" type="text" name="login">
Passwort:
<input size="15" type="text" name="passwort">
<input type="submit" value="Login"></p>
</form>
</div>
</div>
</div>
<div class="news">
<p class="news-head">Aktuelles</p>
<div id="news">Freitag, 28.05.2004:</div>
<div id="news">Grundgesrüst der Seite steht, Designs und interaktive Inhalte folgen in der ProWo ;)</div>
</div>
</div>
<div id="right">
<div class="subnavigation">
<p class="subnavigation-head">Untermenü</p>
<div class="subnav">
<?php
switch($nav)
{
case "": include("nichts.php"); break;
default: include("!$nav.php");
}
?>
</div>
</div>
<div class="content">
<p class="content-head">Inhalt</p>
<div id="content">
<?php
switch($content)
{
case "": include("404.php"); break;
default: include("$content.php");
}
?>
</div>
</div>
</div>
<br style="clear:both;" />
</div>
</body>
</html>
Wenn der Benutzer nun Seine Daten eingibt und sich einloggen möchte, soll die interne Seite nach einer überprüfung durch
Code:
<?php
session_start ();
$connectionid = mysql_connect ("localhost", "DB44537", "7dyl9st0");
if (!mysql_select_db ("DB44537", $connectionid))
{
die ("Verbindung zur Datenbank konnte nicht hergestellt werden!");
}
$sql = "SELECT ".
"Id, Name, Vorname, Geburtstag, Wohnort, Adresse ".
"FROM ".
"benutzerdaten ".
"WHERE ".
"(Name like '".$_REQUEST["Name"]."') AND ".
"(Passwort = '".md5 ($_REQUEST["Passwort"])."')";
$result = mysql_query ($sql);
if (mysql_num_rows ($result) > 0)
{
$data = mysql_fetch_array ($result);
$_SESSION["user_id"] = $data["Id"];
$_SESSION["user_name"] = $data["Name"];
$_SESSION["user_vorname"] = $data["Vorname"];
$_SESSION["user_geburtstag"] = $data["Geburtstag"];
$_SESSION["user_wohnort"] = $data["Wohnort"];
$_SESSION["user_adresse"] = $data["Adresse"];
header ("PHP_SELF?content=intern");
}
else
{
header ("PHP_SELF?content=fehler");
}
?>
auf die entsprechende Seite weitergeleitet werden.
Nun ist es aber so, dass der "headers already set" blabla on line x fehler angezeigt wird.
ehrlich gesagt weiß ich nicht mehr weiter.
Wie (wenn überhaupt) ist es möglich, diese entsprechenden Seiten (interner bereich oder errorseite) als Link an den Include Befehl zu übergeben?
MfG
Stefan
ps.: Ich hoffe ihr versteht, was ich überhaupt meine...
__________________
"Auch wer regelmäßig zu spät kommt, hat eine gewisse Zuverlässigkeit aufzuweisen"
|
|
|
29.05.2004, 19:04
|
#2
|
|
Guest
Registriert seit: Aug 2002
|
session_start() muss ganz im Anfang stehen, weil nachher kein Header mehr gesendet werden kann. Also die erste Seite, die du gepostet hast sollte ganz am Anfang session_start() stehen haben.
|
|
|
29.05.2004, 19:08
|
#3
|
|
TP-Supporter
Registriert seit: Aug 2003
Ort: NRW
|
Ja, das ist ja auch nicht das Problem.
Das Problem macht der header (),
da der "mitten in der Seite" Steht, da er ja included wurde.
Und normalerweise müsste der header () ja auch am Anfang der Seite stehen, bzw es darf keine Ausgabe vor ihm stehen. Jedoch wenn ich ihn an den Anfang der Seite stelle, "kann" er ja nicht mehr die Seite aufrufen, die durch die Überprüfung der Logininfos gefordert wird.
__________________
"Auch wer regelmäßig zu spät kommt, hat eine gewisse Zuverlässigkeit aufzuweisen"
|
|
|
29.05.2004, 19:51
|
#4
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
ohne dein problem genau gelesen/verstanden zu haben:
schau dich mal um output-buffering um.
ob_start()
ob_flush()...
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
29.05.2004, 21:31
|
#5
|
|
TP-Senior
Registriert seit: Jan 2004
Ort: München
|
der header()-Befehl geht nur, wenn vorher noch keine daten (z.b. html-tags) an den user geschickt wurden!
falsch:
<html>
<body>
Text
<?php header() ... ?>
richtig:
<?php header() ...?>
<html>...
|
|
|
29.05.2004, 21:35
|
#6
|
|
Guest
Registriert seit: Aug 2002
|
@mexabit ach nein, wirklich?! 
s. oben. 
|
|
|
29.05.2004, 22:03
|
#7
|
|
TP-Supporter
Registriert seit: Aug 2003
Ort: NRW
|
hehe jo, soweit war ich ja auch schon, das ist ja grade mein problem : D
mh mit dem flush hatte ich auch kurz irgendwo gesehn, aber was genau das ist weiß ich nicht...
m,uss ich dann mal gucken 
mfg
Stefan
__________________
"Auch wer regelmäßig zu spät kommt, hat eine gewisse Zuverlässigkeit aufzuweisen"
|
|
|
30.05.2004, 01:11
|
#8
|
|
TP-Senior
Registriert seit: Jan 2004
Ort: München
|
@strogij: Die Kernaussage ist gleich, aber ich dachte, ich bringe es nochmal konkret auf den Punkt 
|
|
|
30.05.2004, 03:15
|
#9
|
|
TP-Supporter
Registriert seit: Aug 2003
Ort: NRW
|
Schade, ob_start () und flush helfen nicht weiter soweit ich das sehe...
Gibt es keine andere Möglichkeit, eine Variable an den Include zu senden?
Ich habs ja jetzt per url gemacht, bestünde nicht die Möglichkeit,
nach der Überprüfung der Logindaten, die Seiten (intern oder fehler)
in einer Variable ($content) zu speichern, welche dann von
Code:
include("$content.php");
angenommen und ausgelesen bzw included wird?
Kann mir keiner helfen? 
__________________
"Auch wer regelmäßig zu spät kommt, hat eine gewisse Zuverlässigkeit aufzuweisen"
|
|
|
30.05.2004, 04:46
|
#10
|
|
TP-Supporter
Registriert seit: Aug 2003
Ort: NRW
|
Hui...
*gähn*
Hab jetzt nochmal überlegt und gegrübelt und ausprobiert.
Bin zu einer evtl möglichen Lösung (wenn auch umständlich) gekommen, habe nur ein kleines Problem:
Ich muss wissen, ob das Formular (zum Login) benutzt bzw abgeschickt wurde. Wie kann ich in einer if abfrage sehen, ob dies der Fall war?
Ich hatte gedacht, es geht so:
Code:
<form name="loginform" action="<?php echo $PHP_SELF."?geschickt=ja"; ?> method="POST">
Aber anstatt nur die Variable $geschickt an die URL anzuhängen, werden die Werte von name und passwort angehänt (die geschickt variable fällt einfach so weg!?).
Hat vl. jm einen Tipp? Mit Beispielcode zum Veranschaulichen wäre nicht schlecht - ich hoffe doch mal dass es dafür eine Lösung gibt 
Werde jtzt mal in Bettchen gehen 
MfG
Stefan
__________________
"Auch wer regelmäßig zu spät kommt, hat eine gewisse Zuverlässigkeit aufzuweisen"
|
|
|
30.05.2004, 12:58
|
#11
|
|
TP-Supporter
Registriert seit: Aug 2003
Ort: NRW
|
Um auch diese Frage endlich zu beenden...
Nach insgesamt über 8 Stunden Arbeit, Recherche, ...
habe ich endlich eine Lösung gefunden:
Code:
<form name="loginform" action="<?php echo $PHP_SELF; ?>" method="POST">
Name:
<input size="15" type="text" name="name">
Passwort:
<input size="15" type="text" name="passwort">
<input type="submit" name="submit" value="senden"></p>
</form>
Das ist das Formular (in der index.php (oder wie auch immer) enthalten - $php_self halt), bei dem besonders wichtig sind:
Code:
<input name="submit" value="senden">
Denn, wenn der "Senden"Button gedrückt wurde (und nur dann) wird die erforderliche Seite geöffnet:
Code:
<?php
if(isset($submit) && $submit=="senden"){
switch($login)
{
case "": include("404.php"); break;
default: include("$login.php");
}
}
Ist das nicht der Fall (also wurder der Button nicht gedrückt),
wird die normale Inhalseite geöffnet (die durch die URL ermittelt wurde):
Code:
else{
switch($content)
{
case "": include("404.php"); break;
default: include("$content.php");
}}
?>
Das ist zwar umständlich, aber es funktioniert alles - bis jetzt zumindest : D
Danke an alle, die mir hier geholfen haben.
Ich hoffe noch viele andere haben hier ein paar "Antworten" gefunden!
MfG
Stefan
__________________
"Auch wer regelmäßig zu spät kommt, hat eine gewisse Zuverlässigkeit aufzuweisen"
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| 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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 11:23 Uhr.
|
 |