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 18: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 19: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 20:02

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

mfg, sesselhocker

servman 17.04.2006 20: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 20: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 20: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 21: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 15:48 Uhr.

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