Fehlermeldung beim Loginbereich

tadlos

Mitglied
Hallo,

ich muss diese Woche ein Homepageprojekt für die Schule fertig machen.
Wollte eigentlich nur ein Beispielskript aus dem Internet nehmen.
Leider klappt das nicht. Der Code besteht aus 4 Dateien.
Login.php; Logout.php;sessionhelpers.ic.php und soll-geschuetzt-werden.php

Wenn ich die login.php aufrufe, kommt die Fehlermeldung(Die Eingabefelder werden trotzdem unterhalb angezeigt):
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\login2\login.php:6) in C:\xampp\htdocs\login2\login.php on line 8

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\login2\login.php:6) in C:\xampp\htdocs\login2\login.php on line 8


Wenn ich mich mit den richtigen Daten einlogge, dann kommt die Meldung(Die eigentliche Seite wird trotzdem unter der Fehlermeldung angezeigt):
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\login2\login.php:6) in C:\xampp\htdocs\login2\login.php on line 8

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\login2\login.php:6) in C:\xampp\htdocs\login2\login.php on line 8


Und wenn ich die Soll-geschuetzt-werden.php aufrufen will kommt die Fehlermeldung:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\login2\soll-geschuetzt-werden.php:9) in C:\xampp\htdocs\login2\soll-geschuetzt-werden.php on line 11

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\login2\soll-geschuetzt-werden.php:9) in C:\xampp\htdocs\login2\soll-geschuetzt-werden.php on line 11
Sie sind nicht eingeloggt.

Anmelden


Der Inhalt der folgenden Dateien:

Login.php
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
<?php
// error_reporting(0);
session_start();
include_once('sessionhelpers.inc.php');

if ( isset($_POST['login']) ) {
    $userid = check_user($_POST['username'], $_POST['userpass']);
    if ( $userid ) {
        login($userid);
    } else {
        echo '<p>Ihre Anmeldedaten waren nicht korrekt!</p>';
    }
}

if ( !logged_in() ) {
    echo <<<END
<form method="post" action="login.php">
<label>Benutzername:</label> <input name="username" type="text"><br />
<label>Passwort:</label> <input name="userpass" type="password" id="userpass"><br />
<input name="login" type="submit" id="login" value="Einloggen">
</form>
END;
} else {
    echo '<p><a href="soll-geschuetzt-werden.php">News</a></p>';
    echo '<p><a href="logout.php">Ausloggen</a></p>';
}

?>
</head>

<body>



</body>
</html>

logout.php:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<?php
// error_reporting(0);
session_start();
include_once('sessionhelpers.inc.php');

echo '<p>Sie sind ';
if ( !logged_in() ) {
    echo 'nicht ';
}
echo 'eingeloggt.</p>';

logout();

echo '<p>Sie sind ';
if ( !logged_in() ) {
    echo 'nicht ';
}
echo 'eingeloggt.</p>';

echo '<p><a href="login.php">Einloggen</a></p>';

?>
</body>
</html>

sessionhelpers.inc.php:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<?php


/**
 * @return void
 */
function connect () {
    $con = mysql_connect('localhost', 'root') or exit(mysql_error());
    mysql_select_db('beuth', $con) or exit(mysql_error());
}


/**
 * @param string $name
 * @param string $pass
 * @return boolean
 */
function check_user ( $name, $pass ) {
    // magic quotes anpassen
    if ( get_magic_quotes_gpc() ) {
        $name = stripslashes($name);
        $pass = stripslashes($pass);
    }
    // escapen von \x00, \n, \r, \, ', " und \x1a
    $name = mysql_real_escape_string($name);
    // escapen von % und _
    $name = str_replace('%', '\%', $name);
    $name = str_replace('_', '\_', $name);

    $sql = 'SELECT UserId FROM users WHERE UserName = \'' . $name . '\' AND UserPass=\'' . md5($pass) . '\'';
    if ( !$result = mysql_query($sql) ) {
        exit(mysql_error());
    }
    if ( mysql_num_rows($result) == 1 ) {
        $user = mysql_fetch_assoc($result);
        return ( $user['UserId'] );
    } else {
        return ( false );
    }
}


/**
 * @param int $userid
 * @return void
 */
function login ( $userid ) {
    $sql = 'UPDATE users SET UserSession = \'' . session_id() . '\' WHERE UserId = ' . ((int)$userid);
    if ( !mysql_query($sql) ) {
        exit(mysql_error());
    }
}


/**
 * @return boolean
 */
function logged_in () {
    $sql = 'SELECT UserId FROM users WHERE UserSession = \'' . session_id() . '\'';
    if ( !$result = mysql_query($sql) ) {
        exit(mysql_error());
    }
    return (mysql_num_rows($result) == 1);
}


/**
 * @return void
 */
function logout () {
    $sql = 'UPDATE users SET UserSession = NULL WHERE UserSession = \'' . session_id() . '\'';
    if ( mysql_query($sql) ) {
        exit(mysql_error());
    }
}

connect();

?>

</body>
</html>

soll-geschuetzt-werden.php:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<?php
// error_reporting(0);
session_start();
include_once('sessionhelpers.inc.php');

echo 'Sie sind ';
if ( !logged_in() ) {
    echo 'nicht ';
}
echo 'eingeloggt.<p />';

if ( !logged_in() ) {
    echo '<p><a href="login.php">Anmelden</a></p>';
}



if ( logged_in() ) {
    echo '<p>Geschützter Bereich</p>';

    echo '<p><a href="logout.php">Ausloggen</a></p>';
}

?>
</body>
</html>
 
Ja klasse.. Klappt alles.. Musste halt nur die session_start() Funktion ganz an den Anfang der Seite setzen. Also wirklich in die erste Zeile.. Danke..

@spikaner: Wie meinst du das? Meinst du ich soll <?php session_start(); ?> in die sessionhelpers.inc.php einfügen oder wie meinst du das?

Gruß Stefan
 
Dass die „sessionhelpers.inc.php“-Datei noch HTML enthält könnte ebenfalls zu Problemen führen. Und dass du error_reporting auf null setzt, ist auch keine gute Idee. Du solltest besser die Fehler beseitigen als nur die Meldung dieser zu deaktivieren.
 
Hallo,
das funkioniert doch nicht alles so..
Bisher hatte ich einfach in der soll-geschuetzt-werden.php unter dem Code:

PHP:
if ( logged_in() ) {
    echo '<p>Geschützter Bereich</p>';

    echo '<p><a href="logout.php">Ausloggen</a></p>';
}

einfach nur die Datei eingefügt, die geöffnet werden sollte.
Habe nur die Include Funktion benutzt.

Nur wenn ich das auf diese Weg mache,
könnte ja jeder die einzelnen Dateien manuell aufrufen.
Das ist ja auch nicht richtig.

Also wollte ich in dem Code mit echo arbeiten und in diesen Befehl das gewünschte Formular anzeigen lassen. Nur leider geht das nicht, habe schon alle " gegen ' ausgetauscht, geht leider immer noch nicht. Doch sollte doch klappen oder nicht?

Hier nochmal ein Beispiel wie ich das machen würde:

PHP:
if ( logged_in() ) {
	echo('<table width='200' border='0'>
  <tr>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
  </tr>
</table>
');}
?>

Hoffe ihr könnt mir da weiterhelfen
 
Du hast da ein klein wenig zuviel getauscht...
PHP:
if ( logged_in() ) {
    echo('<table width="200" border="0">
  <tr>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
  </tr>
</table>
');}
HTML verwendet IMMER " ...
Wenn du in php das echo mit '...' eingrenzt, dann müssen die " NICHT auskommentiert werden...
 
Ahh ja.. Das ist schonmal gut.. nur wenn ich das so mache wie unten dargestellt,
dann sehe ich auf der Seite immer "" method="post" class="Stil4">" verstehe nicht warum nur das angezeigt wird.

PHP:
if ( logged_in() ) {
echo
('
<form action="<?php echo $_REQUEST["../PHP_SELF"]; ?>" method="post" class="Stil4">
<table width="64%" border="0" align="center" cellpadding="2" cellspacing="0" background="background">
  <tr>
    <td width="61" align="left" valign="top" class="Stil10">Übungen</td>
    <td  width="373" align="left" valign="top" class="Stil10">Neue Aufgabe hinzufügen</td>
  </tr>
  <tr>
    <td height="121" colspan="2" align="left" valign="top" background="../Page/Bilder/uebungen.gif"  class="Stil5">&nbsp;</td>
    </tr>
  <tr>
    <td width="61" align="left" valign="top"  class="Stil5"><span class="Stil11">Buch</span></td>
    <td width="373" align="left" valign="top" class="Stil5"><input type="text" name="form_buch" size="58" border="0" id="form_name" /></td>
  </tr>
  <tr>
    <td width="61" align="left" valign="top"  class="Stil5"><span class="Stil11">Kategorie</span></td>
    <td width="373" align="left" valign="top" class="Stil5"><input type="text" name="form_kategorie" size="58" border="0" /></td>
  </tr>
  <tr>
    <td width="61" align="left" valign="top"  class="Stil5"><span class="Stil11">Seite</span></td>
    <td width="373" align="left" valign="top" class="Stil5"><input type="text" name="form_seite" size="58" border="0" /></td>
  </tr>
  <tr>
    <td width="61" align="left" valign="top"  class="Stil5"><span class="Stil11">Nummer</span></td>
    <td width="373" align="left" valign="top" class="Stil5"><input type="text" name="form_nummer" size="58" border="0" /></td>
  </tr>
  <tr>
    <td width="61" align="left" valign="top"  class="Stil5"><span class="Stil11">Aufgabe</span></td>
    <td width="373" align="left" valign="top" class="Stil5"><textarea name="form_aufgabe" cols="50" rows="8" border="0" id="form_beitrag"></textarea></td>
  </tr>
  <tr>
    <td width="61" align="left" valign="top"  class="Stil5"><span class="Stil11">Lösung</span></td>
    <td width="373" align="left" valign="top" class="Stil5"><input type="text" name="form_loesung" size="58" border="0" /></td>
  </tr>
  <tr>
    <td width="61" align="left" valign="top"  class="Stil5"><span class="Stil11">Bewertung</span></td>
    <td width="373" align="left" valign="top" class="Stil5"><input type="text" name="form_level" size="58" border="0" id="form_level" /></td>
  </tr>
  <tr>
    <td class="Stil5" align="left" valign="top" ><input name="do" type="hidden" value="insert" /></td>
    <td align="left" valign="top" class="Stil5"><input type="submit" value="Eintragen" name="submit" /></td>
  </tr>
</table>
</form>
')
;}
?>

Wie kann das sein, dass nur das angezeigt wird?


Gruss Stefan

Mh es hat irgendwas mit dem PHP Befehl davor zu tun.
Wenn ich den weglasse kommt die Fehlermeldung nicht mehr.
Sehr komisch..
 
Hallo erstmal an alle, ist ja mein erster Beitrag hier.

Ich versteh nicht warum du in einem echo-Befehl versuchst ein php-Script zu starten. Ich würd das folgendermaßen machen:

PHP:
if (logged_in())  {
echo ('
<form action="'.$_REQUEST["../PHP_SELF"].'" method="post" class="Stil4">
<table width="64%" border="0" align="center" cellpadding="2" cellspacing="0" background="background">
  <tr>
    <td width="61" align="left" valign="top" class="Stil10">Übungen</td>
    <td  width="373" align="left" valign="top" class="Stil10">Neue Aufgabe hinzufügen</td>
  </tr>
  <tr>
    <td height="121" colspan="2" align="left" valign="top" background="../Page/Bilder/uebungen.gif"  class="Stil5">&nbsp;</td>
    </tr>
  <tr>
    <td width="61" align="left" valign="top"  class="Stil5"><span class="Stil11">Buch</span></td>
    <td width="373" align="left" valign="top" class="Stil5"><input type="text" name="form_buch" size="58" border="0" id="form_name" /></td>
  </tr>
  <tr>
    <td width="61" align="left" valign="top"  class="Stil5"><span class="Stil11">Kategorie</span></td>
    <td width="373" align="left" valign="top" class="Stil5"><input type="text" name="form_kategorie" size="58" border="0" /></td>
  </tr>
  <tr>
    <td width="61" align="left" valign="top"  class="Stil5"><span class="Stil11">Seite</span></td>
    <td width="373" align="left" valign="top" class="Stil5"><input type="text" name="form_seite" size="58" border="0" /></td>
  </tr>
  <tr>
    <td width="61" align="left" valign="top"  class="Stil5"><span class="Stil11">Nummer</span></td>
    <td width="373" align="left" valign="top" class="Stil5"><input type="text" name="form_nummer" size="58" border="0" /></td>
  </tr>
  <tr>
    <td width="61" align="left" valign="top"  class="Stil5"><span class="Stil11">Aufgabe</span></td>
    <td width="373" align="left" valign="top" class="Stil5"><textarea name="form_aufgabe" cols="50" rows="8" border="0" id="form_beitrag"></textarea></td>
  </tr>
  <tr>
    <td width="61" align="left" valign="top"  class="Stil5"><span class="Stil11">Lösung</span></td>
    <td width="373" align="left" valign="top" class="Stil5"><input type="text" name="form_loesung" size="58" border="0" /></td>
  </tr>
  <tr>
    <td width="61" align="left" valign="top"  class="Stil5"><span class="Stil11">Bewertung</span></td>
    <td width="373" align="left" valign="top" class="Stil5"><input type="text" name="form_level" size="58" border="0" id="form_level" /></td>
  </tr>
  <tr>
    <td class="Stil5" align="left" valign="top" ><input name="do" type="hidden" value="insert" /></td>
    <td align="left" valign="top" class="Stil5"><input type="submit" value="Eintragen" name="submit" /></td>
  </tr>
</table>
</form>
');
}
?>

Hab dir deinen Code mal bearbeitet. Ansonsten müsste alles richtig sein.

Mfg
 
Hey super Beitrag fürs Erste ;-).
Ja weiß ich auch nicht.. Habe mich auf meinen früheren Code festgeguckt und nicht so drüber nachgedacht.. Danke nochmal..
 

Neue Beiträge

Zurück