Avatar billede x-man Nybegynder
09. oktober 2004 - 22:18 Der er 22 kommentarer og
1 løsning

Fejlmeddelse i forbindelse med sessions

Jeg er forholdsvis ny i php, og jeg har hamret hovedet mod muren med et irriterende problem.

Jeg har lavet en login funktion på min hjemmeside :

<?
session_cache_limiter('private');
session_start();
require("php_funktioner.php");

$brugernavn = $_REQUEST["unavn"];
$password = $_REQUEST["passw"];

aabn_forbindelse_og_vaelgdb();
$resultat = mysql_query("SELECT id,unavn,honor,frag,passw FROM medlemmer WHERE unavn = '$brugernavn'");
if (!$resultat) {
echo "Det indtastede brugernavn eksisterer ikke!";
}else{
$row = mysql_fetch_array($resultat);
if($row['passw'] == $password){
$nr = $row['id'];
$user = $row['unavn'];
$rank = $row['honor'];
$skills = $row['frag'];
$kode = $row['passw'];

echo "<br><br><br><br><center><div id=\"text3\">You are now logged in ! <br> Welcome $user</div><br><a href=\"index.php\" class=\"stat\">OK !</a></center>";

$_SESSION['logt_in'] = 1;
$_SESSION['ID'] = $nr;
$_SESSION['unavn'] = $user;
$_SESSION['honor'] = $rank;
$_SESSION['frag'] = $skills;

}else {
echo "<center><div id=\"text3\">Invalid user informations !</div><br> <a href=\"../index.htm\" class=\"stat\">OK !</a></center>";
}
}
luk_forbindelse();
?>

Mit web hotel ligger hos B-One, og de kører samme setup som jeg har hjemme. de har baer en Linux platform, hvor jeg har windows.
Det virker helt som det skal på mit eget setup.

Den fejlmeddelse jeg får er :


Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /customers/joint-forces.com/joint-forces.com/httpd.www/JF_web/members/login.php:2) in /customers/joint-forces.com/joint-forces.com/httpd.www/JF_web/members/login.php on line 4

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /customers/joint-forces.com/joint-forces.com/httpd.www/JF_web/members/login.php:2) in /customers/joint-forces.com/joint-forces.com/httpd.www/JF_web/members/login.php on line 4

og jeg har læst alt hvad jeg kunne finde om det i dokumentationen til php. (altså det vil sige, det jeg tror der er om det).

Mit helt store spørgsmål er, hvorfor den skriver at headers allerede er sat ?

Jeg håber virkelig at der er nogle der kan gennemskue det :o)
(og B-ONE's support kan ikke hjælpe)
Avatar billede sukos Juniormester
10. oktober 2004 - 09:25 #1
Linie 4
require("php_funktioner.php");

Så tjek at du ikke bruger noget output i funktion.php, eller at du har noget luft før <?php i filen
Avatar billede bojo Nybegynder
10. oktober 2004 - 09:26 #2
session_start skal sendes før "alt" andet og session_cache_limiter  sender headers - se her under - prøv at byt om på dem.

session_start();
session_cache_limiter('private');


----------------------------------------------------------

Description
string session_cache_limiter ( [string cache_limiter])


session_cache_limiter() returns the name of the current cache limiter. If cache_limiter is specified, the name of the current cache limiter is changed to the new value.

The cache limiter defines which cache control HTTP headers are sent to the client.
Avatar billede x-man Nybegynder
10. oktober 2004 - 12:45 #3
Hey Sukos
Sorry, mne det er mig derer klodsset ... Jeg har en "link" linie øverst til css. Så line 4 = session_start();
Det der er helt vildt sort i det, er at der 
i dukomentationen står, at man skal starte ALLE sider med sessions på, med session_start(); ... Men det er det der kommer som fejlmeddelse ???

Bojo :o) ... sorry men jeg fatter krone af den smøre der. Jeg har slettet min linie med : session_cache_limiter('private');
det virkede lige så lidt før jeg fandt den, som efter.
Jeg ved ikke engang hvad den linie skal gøre godt for .... Er sku lidt bange for at jeg har stirret mig blind på det her...

jeg har lige skrevet til B-One for at få hjælp *G* : No GO ! *g*
Avatar billede coderdk Praktikant
10. oktober 2004 - 14:08 #4
session_start() skal være det første, overhovedet på siden:

<?php

  session_start();

?>
<html>
  <head>
  <link rel="stylesheet" href="/stil.css" title="mit stylesheet">
  <title>Siden</title>
  </head>
  <body>
<?php

  echo "Hej";

?>
  </body>
</html>
Avatar billede x-man Nybegynder
10. oktober 2004 - 16:44 #5
Sorry Coderdk

samme resultat .. den kommer stadig med en fejlmeddelse på linje 3 = session_start();

jeg har nu skrevet : (altså bare lige toppen af det)



<?php
session_start();
require("php_funktioner.php");
?>
<link rel="stylesheet" type="text/css" href="../style/opdaterstyle.css">
<?
$brugernavn = $_REQUEST["unavn"];
$password = $_REQUEST["passw"];

aabn_forbindelse_og_vaelgdb();

og det virker minus ???
Avatar billede michael_stim Ekspert
10. oktober 2004 - 16:51 #6
Pröv at skrive ob_start(); längst oppe og ob_end_flush(); til sidst i dit dokument.
<?php
ob_start();
session_start();
require("php_funktioner.php");
?>
<link rel="stylesheet" type="text/css" href="../style/opdaterstyle.css">
<?
$brugernavn = $_REQUEST["unavn"];
$password = $_REQUEST["passw"];

aabn_forbindelse_og_vaelgdb();
......
ob_end_flush();
Avatar billede x-man Nybegynder
10. oktober 2004 - 18:23 #7
hej michael_stim

det er prøvet nu ... stadi samme resultet ... den ignorere det nye tiltag og skriver samme fejl som tidligere og peger stadig på session_start(); ...

dang det er for latterligt irriterende
Avatar billede coderdk Praktikant
10. oktober 2004 - 18:26 #8
x-man, i følge din kode er det linie 2, er du sikker på at du ikke har en blank linie før? eller blot et tegn?
Avatar billede bojo Nybegynder
10. oktober 2004 - 18:26 #9
det er ikke fordi denne php fil er inkluderet i en anden som du så kalder vel
Avatar billede michael_stim Ekspert
10. oktober 2004 - 18:29 #10
Citat: Jeg har en "link" linie øverst til css. Så line 4 = session_start();
Session_start skal väre linie 2.
Linket til css må du lägge under session_start()
Avatar billede x-man Nybegynder
10. oktober 2004 - 18:31 #11
Hele min side ser sådan ud :

<?php
ob_start();
session_start();
require("php_funktioner.php");
?>
<link rel="stylesheet" type="text/css" href="../style/opdaterstyle.css">
<?
$brugernavn = $_REQUEST["unavn"];
$password = $_REQUEST["passw"];

aabn_forbindelse_og_vaelgdb();
$resultat = mysql_query("SELECT id,unavn,honor,frag,passw FROM medlemmer WHERE unavn = '$brugernavn'");
if (!$resultat) {
echo "Det indtastede brugernavn eksisterer ikke!";
}else{
$row = mysql_fetch_array($resultat);
if($row['passw'] == $password){
$nr = $row['id'];
$user = $row['unavn'];
$rank = $row['honor'];
$skills = $row['frag'];
$kode = $row['passw'];

echo "<br><br><br><br><center><div id=\"text3\">You are now logged in ! <br> Welcome $user</div><br><a href=\"index.php\" class=\"stat\">OK !</a></center>";

$_SESSION['logt_in'] = 1;
$_SESSION['ID'] = $nr;
$_SESSION['unavn'] = $user;
$_SESSION['honor'] = $rank;
$_SESSION['frag'] = $skills;

}else {
echo "<center><div id=\"text3\">Invalid user informations !</div><br> <a href=\"../index.htm\" class=\"stat\">OK !</a></center>";
}
}
luk_forbindelse();
ob_end_flush();
?>

og det er en side jeg kalder fra en login form på min index side.

jeg er ikke helt klar over om det er det du mener bojo ?

og coderdk, mener du om jeg har et mellemrum mellem toppen af siden og mit første <? ... ?
Avatar billede michael_stim Ekspert
10. oktober 2004 - 18:33 #12
Ja, du må ikke have noget mellemrum.
Avatar billede x-man Nybegynder
10. oktober 2004 - 18:35 #13
michael_stim ... DANG der var den !!!! Det er sku da FOR vildt ... jeg tester lige de andre sider hvor jeg har en session_start(); i toppen ... jeg vender fluks tilbage med resultatet ... :o)
Avatar billede bojo Nybegynder
10. oktober 2004 - 18:37 #14
som sukos sagde 10/10-2004 09:25:13
Avatar billede michael_stim Ekspert
10. oktober 2004 - 18:39 #15
Läs forresten hvad sukos skrev i morges kl. 09:25 (Förste kommentar)
Avatar billede michael_stim Ekspert
10. oktober 2004 - 18:40 #16
Var vi enige om bojo ;o)
Avatar billede bojo Nybegynder
10. oktober 2004 - 18:42 #17
hehehe
Avatar billede x-man Nybegynder
10. oktober 2004 - 19:18 #18
Ja den er sku god nok :o) ... Sorry Sukos ...

Nu virker det jeg spurgte om, og det er det vigtigste ! så dette spørgsmål må være lukket som sådan ...

Er der dog nogle af jer der evt. vil hjælpe mig med næste fase ?
Samme fejl, ny side og ny årsag *g*

-- jeg opretter det som nyt spørgsmål ---
tusinde tak for hjælpen :o)
Avatar billede x-man Nybegynder
10. oktober 2004 - 19:19 #19
Hey hvorfor kan jeg ikke give point for besvarelsen ?
Avatar billede michael_stim Ekspert
10. oktober 2004 - 19:25 #20
Bed dem du syndtes skal have point om at lägge et svar ;o)
Avatar billede x-man Nybegynder
10. oktober 2004 - 19:30 #21
DEt virker det virker det virker !!!!

også det andet der ikke virkede virker nu *g*

michael_stim du må meget gerne ligge et svar, endnu engang tak for hjælpen ;o)
Avatar billede michael_stim Ekspert
10. oktober 2004 - 19:35 #22
Syndtes nu alle i tråden er berettiget (isär sukos da han jo kom med det rette svar), så fordel dem bare når alle har lagt et svar ;o)
Avatar billede x-man Nybegynder
10. oktober 2004 - 19:55 #23
Ja det kan du have helt ret i. Jeg er også enig i at alle hjalp mig.
Men det var nu dit svar der gjorde lige det rigtige :o)

alligevel tak til alle :o)
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