WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   PHP - Sessionverwaltung (http://www.wcm.at/forum/showthread.php?t=189837)

sesselhocker 17.04.2006 17:51

PHP - Sessionverwaltung
 
Hi!

Ich bin noch ein ziemlicher PHP-Neuling und habe ein Problem mit der Sessionverwaltung. Hier die Codes:

<html>

<head>
<title>Login</title>
<?php
include("includes/database.inc.php");
include("includes/session.inc.php");
?>
</head>

<body>
<form action="<?php echo $_SERVER[PHP_SELF]; ?>" method="post">
Name: <input type="text" name="formname">
Password: <input type="password" name="formpw">
Senden: <input type="submit" name="formsub">
</form>

<?php
connectdb("testdb");
if (!empty($_POST[formsub])) {
$sql=mysql_query("SELECT * FROM user");
while ($pointer=mysql_fetch_assoc($sql)) {
if ($pointer[user]==$_POST[formname] && $pointer[pw]==$_POST[formpw]) {
setsession("testname","testvalue");
}
}
}
disconnectdb();
?>
</body>

</html>


Hier die Datei database.inc.php:

<?php
$connection=mysql_connect("xxx", "xxx", "xxx");

function connectdb($database) {
global $connection;
mysql_select_db($database, $connection);
}

function disconnectdb() {
global $connection;
mysql_close($connection);
}
?>


Und hier die Datei session.inc.php:

<?php
function setsession($varname,$varvalue) {
session_start();
session_name("Session");
$sessionid=session_id();
$_SESSION[$varname]=$varvalue;
}
?>


Wenn ich die Datei nun ausführe kommen folgende Meldungen:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Programme\xampp\htdocs\website\login.php:6) in C:\Programme\xampp\htdocs\website\includes\session .inc.php on line 3
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Programme\xampp\htdocs\website\login.php:6) in C:\Programme\xampp\htdocs\website\includes\session .inc.php on line 3


session.path_name (oder so ähnlich) in der php.ini verweist auf das richtige Verzeichnis, und es wird auch ein Sessioncookie abgelegt. Wo liegt das Problem?

Danke schon mal für die Antworten,
sesselhocker

servman 17.04.2006 18:43

hallo,

hatte mal das selbe problem.
versuch mal, den code
PHP-Code:

<?php
include("includes/session.inc.php");
?>

ganz an den anfang deines sources zu setzen.

sesselhocker 17.04.2006 19:02

@servman: Danke für den Tipp, aber das hat leider auch nichts geholfen.

mfg, sesselhocker

servman 17.04.2006 19:07

meines wissens nach mußt du eine session erzeugen bzw. aufrufen, bevor du daten auf den bildschirm schreibst, also noch vor <html> und allem.

sesselhocker 17.04.2006 19:18

Hab ich auch so gemacht, geholfen hats aber nicht...

mfg, sesselhocker

EDIT: Könnte es vielleicht etwas damit zu tun haben, dass ich die Datenbankverbindung vorher aufbaue?

T.dot 17.04.2006 19:54

Du führst das session_start() erst beim Aufruf deiner Funktion aus. Dies muss aber bereits vor der Anzeige des HTML Codes geschehen.

Dh. probiers mal so:

<?php
session_start();
?>
<HTML>
usw.

sesselhocker 17.04.2006 20:02

Ok, ich habs jetzt! Danke für den letzten Tipp, der war entscheidend. Ich hab zwar folgendes an den Anfang (vor <html>) gesetzt... :

<?php
connectdb("testdb");
if (!empty($_POST[formsub])) {
$sql=mysql_query("SELECT * FROM user");
while ($pointer=mysql_fetch_assoc($sql)) {
if ($pointer[user]==$_POST[formname] && $pointer[pw]==$_POST[formpw]) {
setsession("testname","testvalue");
}
}
}
disconnectdb();
?>

...aber das hat nicht geklappt. Jetzt hab ich es nur so gemacht, wie von T.dot beschrieben (session_start() ALLEINE am Anfang), und das hat geklappt. Danke für eure schnelle Hilfe!

mfg, sesselhocker


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag