WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 17.04.2006, 17:51   #1
sesselhocker
Senior Member
 
Registriert seit: 05.08.2005
Beiträge: 181


Frage 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
sesselhocker ist offline   Mit Zitat antworten
Alt 17.04.2006, 18:43   #2
servman
Master
 
Registriert seit: 20.06.2001
Ort: Wien/Heimschuh
Alter: 47
Beiträge: 615

Mein Computer

servman eine Nachricht über ICQ schicken servman eine Nachricht über MSN schicken servman eine Nachricht über Skype™ schicken
Standard

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.
servman ist offline   Mit Zitat antworten
Alt 17.04.2006, 19:02   #3
sesselhocker
Senior Member
 
Registriert seit: 05.08.2005
Beiträge: 181


Standard

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

mfg, sesselhocker
sesselhocker ist offline   Mit Zitat antworten
Alt 17.04.2006, 19:07   #4
servman
Master
 
Registriert seit: 20.06.2001
Ort: Wien/Heimschuh
Alter: 47
Beiträge: 615

Mein Computer

servman eine Nachricht über ICQ schicken servman eine Nachricht über MSN schicken servman eine Nachricht über Skype™ schicken
Standard

meines wissens nach mußt du eine session erzeugen bzw. aufrufen, bevor du daten auf den bildschirm schreibst, also noch vor <html> und allem.
servman ist offline   Mit Zitat antworten
Alt 17.04.2006, 19:18   #5
sesselhocker
Senior Member
 
Registriert seit: 05.08.2005
Beiträge: 181


Standard

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?
sesselhocker ist offline   Mit Zitat antworten
Alt 17.04.2006, 19:54   #6
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

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.
T.dot ist offline   Mit Zitat antworten
Alt 17.04.2006, 20:02   #7
sesselhocker
Senior Member
 
Registriert seit: 05.08.2005
Beiträge: 181


Standard

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
sesselhocker ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:45 Uhr.


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