Avatar billede snigeren Nybegynder
22. oktober 2007 - 13:32 Der er 7 kommentarer og
1 løsning

session bøvl!

Jeg har i min login.html følgende:

Form med 2 felter user/pass. som bliver sendt til login.php

i min login.php har jeg følgende:

<?PHP
include("../db.php");
   
$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);


session_start();
$username = $_POST['username'];
$password = md5($_POST['password']);

$query = "select * from users where username='$username' and password='$password'";

$result = mysql_query($query);

if (mysql_num_rows($result) != 1) {
$error = "Bad Login";
    include "login.html";

} else {
    $_SESSION['username'] = "$username";
    include "index.php";
}

?>


index.php er som følger:

include("../db.php");
   
$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);

session_start();

if ( empty( $username ) ) {

    print "Please login below!";

    include 'login.html';

} else {
//resten af sideindholdet


Når jeg så åbner index.php includerer den godt nok login.html/login.php men jeg får også følgende fejl:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/.../e_shop/admin/index.php:2) in /var/www/.../e_shop/admin/index.php on line 16

line 16 er så der hvor session_start(); kommer

Hvad gør jeg forkert?
Avatar billede 0xffff Nybegynder
22. oktober 2007 - 13:37 #1
Din session_start(); SKAL være den første linie.
Avatar billede jgivoni Nybegynder
22. oktober 2007 - 13:47 #2
Den skal ikke nødvendigvis være den første linie i skriptet, den skal bare kaldes FØR der er outputtet noget.

Problemet opstår som regel af at der er noget whitespace (mellemrum eller linieskift) før eller efter <?php ... ?> i en af de inkluderede filer.

Jeg ville checke db.php og sørge for at ?> er det sidste der er i den fil.
Avatar billede jgivoni Nybegynder
22. oktober 2007 - 13:48 #3
Men selvfølgelig, hvis session_start kaldes inden include er du nok også ude over det problem...
Avatar billede dkfire Nybegynder
22. oktober 2007 - 13:54 #4
Problemet ligger nok mere i at du i din index.php på linje 2 udskriver noget til browseren.
Du må, som de andre også gør opmærksom på, ikke have skrevet noget til browseren før du kalder session_start(). Den nemmeste løsning vil være at ligge session_start() i din index.php.
Avatar billede snigeren Nybegynder
22. oktober 2007 - 14:29 #5
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

den linie gør i hvert fald at jeg får error... er den egentlig vigtig? og i så fald kan jeg ikke bare smide den lidt senere eg. lige inden <html>?
Avatar billede dkfire Nybegynder
22. oktober 2007 - 15:03 #6
Den linje er vigtig for din html, men det er html og derfor skal det først skrives til browseren efter session_start().
Og ja linjen skal være lige før <html>.
Avatar billede snigeren Nybegynder
22. oktober 2007 - 16:45 #7
Ok tak =)

Øhm 0xffff kom jo egentlig først så smid et svar 0xffff =)

Men allesammen tak.
Avatar billede 0xffff Nybegynder
22. oktober 2007 - 16:52 #8
svar
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