Avatar billede bjarniolsen Nybegynder
19. november 2003 - 23:05 Der er 35 kommentarer og
1 løsning

session fejl - hjælp!!

hver gang jeg bruger session_start(), får jeg denne fejl:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at C:\Programmer\Apache Group\Apache2\htdocs\www\loginsessions\members.php:2) in c:\php\phpinclude\accesscontrol.php on line 2

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at C:\Programmer\Apache Group\Apache2\htdocs\www\loginsessions\members.php:2) in c:\php\phpinclude\accesscontrol.php on line 2

Notice: Undefined index: uid in c:\php\phpinclude\accesscontrol.php on line 7

Notice: Undefined index: pwd in c:\php\phpinclude\accesscontrol.php on line 8

Nogen der ved hvad det betyder?


Her er mit script:

<?php
session_start();

include_once 'fejl.php';
include_once 'db_conn.php';

$uid = isset($_POST['uid']) ? $_POST['uid'] : $_SESSION['uid'];
$pwd = isset($_POST['pwd']) ? $_POST['pwd'] : $_SESSION['pwd'];

if(!isset($uid)){
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title>Log ind...</title>
</head>
<body>
<br>
<a href="logud.php">Log ud</a><br>
<h4>Du skal logge ind for at fortsætte...</h4>
Opret dig som bruger <a href="ny_bruger.htm">her</a>...<br />
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
brugernavn:<br>
<input type="text" name="uid" /><br>
password:<br>
<input type="password" name="pwd" /><br>
<input type="submit" name="login" value="Login" />
</form>
</body>
</html>
<?php
exit;
}

$_SESSION['uid'] = $uid;
$_SESSION['pwd'] = $pwd;

dbConnect("kyl");
$sql = "SELECT * FROM brugere WHERE brugernavn ='$uid' AND password = '$pwd'";
$result = mysql_query($sql);
if(!$result){
  error('accesscontrol - databasefejl ved tjek af login...');
}

if(mysql_num_rows($result) == 0){
  unset($_SESSION['uid']);
    unset($_SESSION['pwd']);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title>Adgang nægtet!!</title>
</head>
<body>
<h4>Adgang nægtet!!</h4>
Dit brugernavn eller password er forkert, eller også er du ikke registreret<br>
Prøv at logge ind igen - <a href="<?=$_SERVER['PHP_SELF']?>">klik her</a>.<br>
Eller registrer dig som bruger - <a href="opret.php">klik her</a>.<br>
</body>
</html>
<?php
exit;
}

$navn = mysql_result($result,0,'brugernavn');
?>
Avatar billede bjarniolsen Nybegynder
19. november 2003 - 23:09 #1
Der bliver gemt en session cookie i mappen. Så det virker.
Avatar billede bjarniolsen Nybegynder
19. november 2003 - 23:11 #2
Og scriptet går videre til:

<a href="logud.php">Log ud</a><br>
<h4>Du skal logge ind for at fortsætte...</h4>
Opret dig som bruger <a href="ny_bruger.htm">her</a>...<br />
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
brugernavn:<br>
<input type="text" name="uid" /><br>
password:<br>
<input type="password" name="pwd" /><br>
<input type="submit" name="login" value="Login" />
</form>
</body>
</html>
Avatar billede googolplex Novice
19. november 2003 - 23:12 #3
Indsæt følgende i starten af din side:

<?php
ob_start();
?>

Indsæt følgende i slutningen:

<?php
ob_end_flush();
?>

Det plejer at løse problemet :)
Avatar billede squashguy Nybegynder
19. november 2003 - 23:13 #4
kalder du members.php, som så inkluderer ovenstående script?

problemet er, at du kan ikke sende headers afsted, når først noget output er sendt til browseren.
Avatar billede bjarniolsen Nybegynder
19. november 2003 - 23:23 #5
member.php ser således ud:
<?php
include 'accesscontrol.php';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Members</title>
</head>
<body>
<br><br><br>
Velkommen <?=$navn?>! <br>
Du er i Members only...
</body>
</html>

accesscontrol.php var scriptet fra før
Avatar billede bjarniolsen Nybegynder
19. november 2003 - 23:24 #6
så ja
Avatar billede squashguy Nybegynder
19. november 2003 - 23:25 #7
du har ikke tilfældig nogle mellemrum/tomme linier i starten af member?

den siger du har noget output på linie 2
Avatar billede googolplex Novice
19. november 2003 - 23:26 #8
Virkede det ikke ?
Avatar billede bjarniolsen Nybegynder
19. november 2003 - 23:27 #9
nej. desværre
Avatar billede bjarniolsen Nybegynder
19. november 2003 - 23:31 #10
Hej squashguy
det virkede sgu!!!

nu står der kun:

Notice: Undefined index: uid in c:\php\phpinclude\accesscontrol.php on line 7

Notice: Undefined index: pwd in c:\php\phpinclude\accesscontrol.php on line 8

og det er sgu nok bare en skrive fejl... det har jeg ikke fået kigget på.

Tak for hjælpen. (begge to)
Avatar billede bjarniolsen Nybegynder
19. november 2003 - 23:35 #11
var der nogen der fik points?
er ny her...
Avatar billede googolplex Novice
19. november 2003 - 23:37 #12
Du skal oprette et svar før du kan få point :P
Avatar billede squashguy Nybegynder
19. november 2003 - 23:39 #13
$uid = isset($_POST['uid']) ? $_POST['uid'] : $_SESSION['uid'];

du kontrollerer om post-variablen uid eksisterer, hvis ikke hiver du den ud fra session ; hvis den ikke eksisterer som en session-variabel får du fejl. så der skal et tjek mere på
Avatar billede bjarniolsen Nybegynder
19. november 2003 - 23:39 #14
jeg tænkte om du eller squashguy fik points for at hjælpe mig??
Avatar billede googolplex Novice
19. november 2003 - 23:42 #15
Hehe, jeg tog fejl af jeres navne :P

Der er vel squashguy der skal have point, så bed ham om at lægge et svar.
Avatar billede bjarniolsen Nybegynder
19. november 2003 - 23:44 #16
squashguy:
hvilket chek?
Avatar billede squashguy Nybegynder
19. november 2003 - 23:49 #17
f.eks.

$uid = isset($_POST['uid']) ? $_POST['uid'] : (isset($_SESSION['uid']) ? $_SESSION['uid'] : null);

og det samme med pwd
Avatar billede bjarniolsen Nybegynder
19. november 2003 - 23:54 #18
Du er kanon!!!
nu virker det. Tak skal du ha.
Avatar billede bjarniolsen Nybegynder
20. november 2003 - 11:21 #19
Hej squashguy.
Du mangler vist at få dine points...
Avatar billede bjarniolsen Nybegynder
20. november 2003 - 11:21 #20
Jeg venter lidt. Ellers tager jeg dem tilbage..
Avatar billede squashguy Nybegynder
20. november 2003 - 13:54 #21
Jeg kan ikke selv tage dem, du skal give dem til mig.. :)
Avatar billede bjarniolsen Nybegynder
20. november 2003 - 14:10 #22
kom med et svar, så får du dem
Avatar billede squashguy Nybegynder
20. november 2003 - 14:11 #23
synes ellers jeg har lagt et svar..

Svar: squashguy
19/11-2003 23:39:53
Avatar billede squashguy Nybegynder
20. november 2003 - 14:11 #24
men du kan da godt få et svar mere :)
Avatar billede bjarniolsen Nybegynder
20. november 2003 - 14:12 #25
ja gør det. har på fornemmelsen at jeg har misforstået hvordan man giver points...
Avatar billede squashguy Nybegynder
20. november 2003 - 14:13 #26
du mangler bare vælge at acceptere svaret..
Avatar billede bjarniolsen Nybegynder
20. november 2003 - 14:14 #27
ja, men hvor?
Igår var der en knap til det, men den er der ikke mere.
Avatar billede squashguy Nybegynder
20. november 2003 - 14:17 #28
hmm. flaget ud for spørgsmålet er godt nok også grønt. Og jeg har lagt et svar. mærkeligt, en bug?
Avatar billede bjarniolsen Nybegynder
20. november 2003 - 14:18 #29
har du klikket "svar" af? den til <-- venstre
Avatar billede squashguy Nybegynder
20. november 2003 - 14:18 #30
jep. 2 gange:

Svar: squashguy
19/11-2003 23:39:53

Fortsat svar: squashguy
20/11-2003 14:11:42
Avatar billede bjarniolsen Nybegynder
20. november 2003 - 14:19 #31
Hvad gør vi så?
Avatar billede squashguy Nybegynder
20. november 2003 - 14:19 #32
prøv selv at lægge et svar, og afvis det.
Avatar billede bjarniolsen Nybegynder
20. november 2003 - 14:22 #33
ok. her er det
Avatar billede bjarniolsen Nybegynder
20. november 2003 - 14:22 #34
så kom den. nu skulle du få points
Avatar billede squashguy Nybegynder
20. november 2003 - 14:23 #35
jeps. takker :)
Avatar billede bjarniolsen Nybegynder
20. november 2003 - 14:23 #36
cool. ha det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester