PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : sehr wichtig!!! Session



maik15
11-12-2005, 11:29
Hi!

Wollte gerade ein Login-System basteln und als ich nach dem passwort vergleich mit der Datenbank eine session starten wollte, kommt das:

Warning: session_start() [function.session-start]:
Cannot send session cookie - headers already sent by (output started at D:\xampp\xampp\htdocs\Scripte\index.php:13) in D:\xampp\xampp\htdocs\Scripte\index.php on line 46

Warning: session_start() [function.session-start]:
Cannot send session cache limiter - headers already sent (output started at D:\xampp\xampp\htdocs\Scripte\index.php:13) in D:\xampp\xampp\htdocs\Scripte\index.php on line 46

Der Code dieser Seite sieht so aus:

<html>
<head>
<title>title</title>
<meta name="author" content="Maik">
<meta name="robots" content="noindex">
<link rel="stylesheet" type="text/css" href="data/style.css">
</head>
<body leftmargin="12" topmargin="12">
<div class="body"><br>
<div class="size22px"><b>title</b></div><br>
<div class="size16px"><b>login</b></div>
<img src="data/bilder/1x1.gif" width="1" height="100"><br>
<form action="<?php echo $PHP_SELF; ?>" method="post">
<table align="center">
<tr>
<td align="right">user:</td>
<td align="left"><input type="Text" name="user" size="15"></td>
</tr>
<tr>
<td align="right">passwort:</td>
<td align="left"><input type="Password" name="passwd" size="15"></td>
</tr>
<tr>
<td align="center" colspan="2"><input type="Submit" name="senden" value="Senden"></td>
</tr>
</table>
</form>
<a href="data/passwort.php" class="link">passwort vergessen</a><br><br><br>
<?php
//
// Datan pr&uuml;fen
//
if(isset($senden)) {
if(!empty($_REQUEST['user']) AND !empty($_REQUEST['passwd'])) {
$db=mysql_connect("localhost","user","passwd") or die ("Verbindung zur Datenbank fehlgeschlagen!");
mysql_select_db("login",$db);
$check_SQL="SELECT * FROM user WHERE user='" . $_REQUEST['user'] . "' AND passwd='" . $_REQUEST['passwd'] . "'";
$result=mysql_query($check_SQL);
$auth_check=mysql_num_rows($result);
mysql_close();

if($auth_check==1) {
//
// Session starten
//
session_start();

$_SESSION['user'] = $user;
$_SESSION['passwd'] = $passwd;

?>
du hast dich erfolgreich eingeloggt!<br><br>
<div class="size12px">
wenn du in 5 sekunden nicht automatisch weitergeleitet wirst, dann klick bitte hier: <a href="data/index.php?sid=<?php echo $sid; ?>" class="link">weiter</a>
</div>
<script type="text/javascript">
window.setTimeout("window.location.href='data/index.php?sid=<?php echo $sid; ?>';", 4500);
</script>
<?php
}
}
}
?>
</div>
</body>
</html>

An was liegt das?
Ein Freund von mir hat auch kein Fehler gefunden...

Gruß
Maik

magpie
11-12-2005, 12:22
Hi

Der Fehler kommt daher, dass du schon eine Ausgabe an den Browser geschickt hast. Wenn du eine Session starten willst, darfst du vorher noch nichts ausgegeben haben.


Anmerkung: Bei Verwendung Cookie-basierter Sessions müssen Sie session_start() aufrufen, bevor irgend etwas an den Browser geschickt wird.


http://de3.php.net/manual/de/function.session-start.php


magpie

maik15
11-12-2005, 12:33
OK, das geht jetz.
Aber jetzt gibts ein neues Prob...
Ich schreibe in die Session mittels $_SESSION['abc'] = 'xxx'; einen Wert ein.
Auf der nächsten seite, die nach 5 sec automatisch aufgerufen wird, steht am anfang session_start(); um die session wieder aufzunehmen.
dann wollte ich denWert wieder ausgeben mit echo $_SESSION['abc']; aber da kommt nix.
Das script läuft bei mir auf dem Localhost und 2 freunde von mir haben es aus dem netz über meine ip getestet und bei denen gehts.

Warum geht das bloß bei mir vom localhost aus ned?

Gruß
Maik

Turbohummel
11-12-2005, 14:15
hm, gute Frage.

mach mal var_dump($_SESSION) und gucke, was da rauskommt. Ansonsten ein sehr interessanter Fehler.

PS. irgendwie is alles von dir wichtig, kann das sein?

maik15
11-12-2005, 14:37
mit var_dump($_SESSION) kommt das: array(0) { }
Und was sagt das jetz aus?

Sind ned alle wichtig, aber manche sind ned für mich, sondern freunde (!!!ich verkaufe keine Scripte!!!) und da gibts sonst etwas zeitdruck^^

Maik

PS: von einem Rechner aus dem Netzwerk kann ich auch zugreifen und dort wird dies auch angezeigt.
also bloß nicht vom Local-PC also meinem.

nEox
11-12-2005, 16:58
Hallo,

hast du evtl. Cookies deaktiviert?

Du kannst du die Session-ID auch per URL übergeben:

/dateiname.php?<?php print session_name() . '=' session_id(); ?>

Grüße,
nEox

maik15
11-12-2005, 17:12
das übergeben der id geht...
da steht imma ein normaler session-code...
Mit den cookies, bei zonealarm aber ich "alle erlauben" und wo kann ich die noch einstellen?

Maik

maik15
11-12-2005, 21:10
Hm, es müsste an meinem php liegen!
Ich habe das script mal auf mein ftp geladen und siehe da, dort gehts auch.

oben bei Menu @ sollte hinter dem @ testuser stehen.
bei mir aufm pc stht dahinter nix...

soll ich mal die ausgabe der php info speichern und hier (als datei auf meinem ftp) posten?
evt kann jmd damit was anfangen...

Eine neuinstallation von XAMPP 1.5.0-pl1 hat auch nichts gebracht.

Maik