Gegen Bilderklau - Das Original (https://www.gegen-bilderklau.net/index.php)
- Design, Website, Copyright (https://www.gegen-bilderklau.net/board.php?boardid=80)
--- Homepagehilfe (https://www.gegen-bilderklau.net/board.php?boardid=27)
---- Homepagehilfe - Archiv (https://www.gegen-bilderklau.net/board.php?boardid=139)
----- [PHP & MySQL] Bei Änderung kommt Fehlermeldung (https://www.gegen-bilderklau.net/thread.php?threadid=172506)


Geschrieben von Paty am 13.06.2010 um 13:29:

  Bei Änderung kommt Fehlermeldung

Hi,
Ich brauche kurz hilfe.Beim Mitgliiederbereich,immer wenn ich einen text dazuschreiben will oder die farbe der links oder so ändere,oder die schriftfarbe kommt diese fehlermeldung: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /users/kunterbunt/www/memberarea.php:4) in /users/kunterbunt/www/memberarea.php on line 4

Kann mir jemand helfen?
LG



Geschrieben von Thorim am 13.06.2010 um 13:53:

 

wäre gut, wenn man den code der memberarea.php hätte

scheinbar wird da in Zeile 4 irgendwas an den Browser ausgegeben, das session_start() muss auf alle Fälle vor jeglicher Ausgabe ausgeführt werden (das schickt ja die Session-ID an den Browser)



Geschrieben von Paty am 13.06.2010 um 13:54:

 

das ist der code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?php session_start();

if(isset($_SESSION["login"])) { // Wenn eingeloggt..

include("header.php");

include("db.php");

include("functions.inc.php");

refresh($_SESSION["login"]); // refresht

?>
<title>memberarea</title>
</head>
<body>
<small style="font-family: Century Gothic; color: rgb(9, 66, 59);"><b>Mitgliederbereich<br>
</b>Hallo!Sch&ouml;n das du dich wiedermal einloggst.<b><br>
</b></small><br>
- <a href="logout.php">Logout</a><br>
- <a href="editprofil.php">Profil &Auml;ndern</a><br>
- <a href="freunde.php">Freundeliste</a> ( Neue
Anfragen)<br>
- <a href="posteingang.php">Posteingang</a> ( Neue)<br>
- <a href="newpn.php">Neue PN</a><br>
<?php if(exist("mitglieder WHERE id = '".$_SESSION["login"]."' AND gruppe = 'Admin'")) { // Wenn Admin

?>
<br>
<b>Admin</b><br>
- <a href="admin.php">Gruppen und Passw&ouml;rter
&auml;ndern</a><br>
<?php }

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

}

?>
</body>
</html>



Geschrieben von Paty am 13.06.2010 um 14:06:

 

jetzt geht es überhaupt nicht..



Geschrieben von Thorim am 13.06.2010 um 14:18:

 

versuchs mal so

php:
1:
2:
3:
4:
5:
6:
7:
<?php session_start(); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?php
if(isset($_SESSION["login"])) { // Wenn eingeloggt..
...



Geschrieben von Paty am 13.06.2010 um 15:04:

 

geht auhc nicht..weil wenn ich mich dann einlogge kommt garnichts..keine fehlermeldung und kein inhalt



Geschrieben von Paty am 13.06.2010 um 17:31:

 

doch ich bin eingeloggt..jetzt kommt diese fehlermeldung:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /users/kunterbunt/www/memberarea.php:5) in /users/kunterbunt/www/memberarea.php on line 5



Geschrieben von Oli am 13.06.2010 um 18:26:

 

Hi,

die Fehlermeldung erscheint, weil bereits Inhalt vor session_start() ausgegeben wurde. session_start() muss ganz am Anfang der Datei stehen, sprich:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
<?php session_start(); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?php

if(isset($_SESSION["login"])) { // Wenn eingeloggt..

include("header.php");

include("db.php");

include("functions.inc.php");

refresh($_SESSION["login"]); // refresht

?>
<title>memberarea</title>
</head>
<body>
<small style="font-family: Century Gothic; color: rgb(9, 66, 59);"><b>Mitgliederbereich<br>
</b>Hallo!Sch&ouml;n das du dich wiedermal einloggst.<b><br>
</b></small><br>
- <a href="logout.php">Logout</a><br>
- <a href="editprofil.php">Profil &Auml;ndern</a><br>
- <a href="freunde.php">Freundeliste</a> ( Neue
Anfragen)<br>
- <a href="posteingang.php">Posteingang</a> ( Neue)<br>
- <a href="newpn.php">Neue PN</a><br>
<?php if(exist("mitglieder WHERE id = '".$_SESSION["login"]."' AND gruppe = 'Admin'")) { // Wenn Admin

?>
<br>
<b>Admin</b><br>
- <a href="admin.php">Gruppen und Passw&ouml;rter
&auml;ndern</a><br>
<?php }

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

} else {
echo "Du bist nicht eingeloggt.";
}

?>
</body>
</html> 


Außerdem dürfen vor dem ersten <?php auch keine Leerzeichen oder Leerzeilen befinden, sonst werden diese natürlich vorher übertragen.


LG,
Oli



Geschrieben von Paty am 13.06.2010 um 18:29:

 

jetzt steht: Du bist nicht eingeloggt.



Geschrieben von Oli am 13.06.2010 um 18:48:

 

Zitat:
Original von Paty_Pu
jetzt steht: Du bist nicht eingeloggt.


Blöde Frage, aber: Sicher, dass du eingeloggt bist? Falls ja, zeig mal bitte das Loginscript.



Geschrieben von Paty am 13.06.2010 um 19:23:

 

ja..ich bin eingeloggt..:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?php session_start(); // Startet die Session

include("header.php");

include("db.php");

include("functions.inc.php");

if(isset($_REQUEST["submit"])) { // Wenn Formular abgeschickt

if(exist("mitglieder WHERE name = '".strip_tags($_REQUEST["name"])."' AND passwort = '".md5($_REQUEST["passwort"])."'") && anzahl("login WHERE ip = '".getenv("REMOTE_ADDR")."' AND erfolgreich = 'nein' AND timestamp > '".(time()-60*30)."'") < 4) { // Wenn Mitglied mit dem Namen und Passwort existiert! und wenn keine falschen logins in den letzten 30 Min. Wieso? um die Seite sicherer zu machen sonst können bruteforcer leicht hacken!

$eintragen = mysql_query("INSERT INTO login (name, ip, timestamp, erfolgreich) VALUES ('".strip_tags($_REQUEST["name"])."', '".getenv("REMOTE_ADDR")."', '".time()."', 'ja')"); // Eintrag in Login!


$abfrage = "SELECT id FROM mitglieder WHERE name = '".strip_tags($_REQUEST["name"])."' LIMIT 0,1";

$ergebnis = mysql_query($abfrage);

while($row = mysql_fetch_object($ergebnis))

{

$_SESSION["login"] = $row->id; // Loggt einen ein!

}

echo "<meta http-equiv=\"refresh\" content=\"0; URL=memberarea.php\">"; // Weiterleitung zur Memberarea

} else { // Wenn falsch eingeloggt

$eintragen = mysql_query("INSERT INTO login (name, ip, timestamp, erfolgreich) VALUES ('".strip_tags($_REQUEST["name"])."', '".getenv("REMOTE_ADDR")."', '".time()."', 'nein')"); // Eintrag in Login!

?>
</head>
<body>
Login schlug fehl.<?php }

} else { // Formular ->

?>
<form action="login.php" method="post">
<table width="90%">
<tbody>
<tr>
<td width="50%"> <b>Name:</b> </td>
<td width="50%"> <input name="name"
type="text"> </td>
</tr>
<tr>
<td width="50%"> <b>Passwort:</b> </td>
<td width="50%"> <input name="passwort"
type="password"> </td>
</tr>
<tr>
<td colspan="2" width="100%"> <input
value="Login" name="submit" type="submit"> </td>
</tr>
</tbody>
</table>
</form>
<?php }

include("footer.php");

?>
</body>
</html>



Geschrieben von Oli am 13.06.2010 um 19:36:

 

Also was mir jetzt aufgefallen ist, ist, dass auch hier wieder die Session nicht ordnungsgemäß gestartet wird. Möglicherweise führt das dazu, dass sie gar nicht existiert, somit ist dein Login natürlich erfolgt, wird aber nicht gespeichert.


Ändere den oberen Teil mit dem session_start() mal wie bei der anderen Datei:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<?php session_start(); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?php

include("header.php");

include("db.php");
[...]


Ansonsten ist mir da jetzt auf den ersten Blick nichts aufgefallen.

P.S.: Wenn du vor dem Code [PHP] und dahinter [/PHP] schreibst, ist der Code besser zu lesen Augenzwinkern .



Geschrieben von Paty am 19.06.2010 um 22:01:

 

funktioniert immer noch nicht._.
Bitte helft mir unglücklich



Geschrieben von Snatsch am 20.06.2010 um 14:05:

 

Bau den Code doch einfach so auf:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:

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

<html>
<head>
<title></title> 
<link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>

<?

Php-Gezeugsel xD  

?>

</body>
</html>




So würde ich persönlich das aufbauen Augenzwinkern . In den header.php kopierst du einfach den Teil, der überprüft, ob du on bist. Das ist der Header, den ich benutze.

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:

<?php 
session_start();
if(!isset($_SESSION['username'])) 
   { 
   echo "Bitte erst <a href="login.html">einloggen</a>";
   exit; 
   } 

?>




Geschrieben von Paty am 20.06.2010 um 15:38:

 

klappt noch immer nicht=/



Geschrieben von Oli am 20.06.2010 um 15:43:

 

Ähm. Dein Loginscript setzt gar kein $_SESSION['username'].
php:
1:
$_SESSION["login"] = $row->id// Loggt einen ein!

Daher ist die Prüfung, ob $_SESSION['username'] gesetzt ist, natürlich immer false.


Probier mal $_SESSION['login'] statt $_SESSION['username'] - oder lass $_SESSION['username'] im Loginscript belegen:
php:
1:
2:
$_SESSION["login"] = $row->id// Loggt einen ein!
$_SESSION["username"] = $row->name//Hier Name in Session speichern

Vorausgesetzt der Name steht in der Tabellenzeile "name". Ggfs. anpassen.



Geschrieben von Paty am 20.06.2010 um 16:50:

 

ich versteh immoment echt nur bahnhof? kann es mir nicht einfach jemand machen?._.



Geschrieben von Snatsch am 20.06.2010 um 17:38:

 

*push* (mit ausdrücklicher Erlaubnis)



Geschrieben von Paty am 20.06.2010 um 22:02:

 

*push*



Geschrieben von Paty am 22.06.2010 um 17:40:

 

hö? da find ich aber nichts..was mir hilft..


Forensoftware: Burning Board, entwickelt von WoltLab GmbH