Avatar billede hoejgaard Juniormester
07. juli 2003 - 13:35 Der er 12 kommentarer og
1 løsning

warning ved session

hej
jeg har en kode der skal give en bruger mulighed fro at logge ind, men der er et problem med session. Der kommer følgende fejlmeddelelse :

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\apache\apache\htdocs\registrering\loginform.php:1) in c:\apache\apache\htdocs\registrering\loginform.php on line 5



og koden er som følger :


<?
ob_start();
?>
<?php
session_start();
require("sidehoved.html");
if (isset($HTTP_POST_VARS[userid]) && isset($HTTP_POST_VARS[pass]))

{

  // if the user has just tried to log in
  $userid = $HTTP_POST_VARS['userid'];
  $pass = $HTTP_POST_VARS['pass'];

  $db_conn = mysql_connect("localhost", "root")  or die(mysql_error());
  mysql_select_db('registrering', $db_conn)  or die(mysql_error());
  $query = "select * from kunde where brugernavn='$userid' and pass='$pass'";

$result = mysql_query($query, $db_conn) or die(mysql_error());
 
  if (mysql_num_rows($result) >0 )
  {
    // if they are in the database register the user id
    $HTTP__SESSION_VARS['valid_user']  = $userid; 
  }
}
?>



<html>
<body>
<!--<h1>Home page</h1> -->
<?
if (isset($HTTP_SESSION_VARS['valid_user']))
  {
      header("Location: http://127.0.0.1/registrering/til10.php");               
      exit;
//    echo 'You are logged in as: '.$HTTP_SESSION_VARS['valid_user'].' <br />';
//    echo '<a href="logout.php">Log out</a><br />';
  }
  else
  {
    if (isset($userid))
    {
      // if they've tried and failed to log in
      echo 'Du har skrevet forkert brugernavn og password !';
    }
    else
    {
      // they have not tried to log in yet or have logged out
      echo 'You are not logged in.<br />';
    }
  }
    // provide form to log in
?>




    <center>
    <form method="post" action="loginform.php">
    <table>
    <tr><td>Userid:</td>
    <td><input type="text" name="userid"></td></tr>
    <tr><td>Password:</td>
    <td><input type="PASSWORD" name="pass"></td></tr>
    <tr><td colspan="2" align="center">
    <input type="submit" value="Log in"></td></tr>
    </table></form>
<br>
<br>
<br>
<br>
<br>

<?

require("sidefod.html");

ob_end_flush();
?>
Avatar billede erikjacobsen Ekspert
07. juli 2003 - 13:36 #1
Drop den tomme linie før:
<?
ob_start();
?>
Avatar billede boris Mester
07. juli 2003 - 13:39 #2
1) Ikke alle indstillinger af PHP kan bruge session_start()
2) Der må absolut intet være af alm. html før du danner dine cookier, så vent med sidehoved.html til bagefter
Avatar billede boris Mester
07. juli 2003 - 13:40 #3
Så snart du har sendt så meget som et mellemrum er det for sent at danna headeren, som skal indeholde cookierne
Avatar billede hoejgaard Juniormester
07. juli 2003 - 13:44 #4
erik, der er ingen tom linie før <?
ob_start();
?>

og til boris, jeg har slettet det med sidehove.html, men der kommer den samme fejl !
Avatar billede erikjacobsen Ekspert
07. juli 2003 - 13:48 #5
så et mellemrum ?
Avatar billede hoejgaard Juniormester
07. juli 2003 - 13:49 #6
problemet er at jeg gerne vil have brugeren sendt til hovedsiden, så snart han har logget ind, og ´bruger derfor denne header. Kan det gøres anderledes så man undgår dette problem ??
Avatar billede boris Mester
07. juli 2003 - 13:50 #7
Det er derfor jeg undgår PHP, når jeg kan komme til det.
Jeg ville lave en helt tom side og teste på en side, som ikke laver andet end at sætte cookier med session_start() osv, for at se, om det overhovedet fungerer på serveren.
Ellers kan du nok få det til at virke ved at skrive det om og sætte cokier med denne syntaks:
$kundenummer = ...et eller andet
SetCookie("kundenummer", $kundenummer);
Avatar billede hoejgaard Juniormester
07. juli 2003 - 13:51 #8
erik jeg har nu skrevet
<? ob_start(); ?>

og det ser ud til at det virker, checker det lige igen ..
Avatar billede fangel Nybegynder
07. juli 2003 - 13:51 #9
hoejgaard => jo der er:

ob_start();
?>                          <= lige der er der et linieskift som bliver sendt til browseren, da du "lukker" php...
<?php
session_start();

fjern

?>
<?php

og det virker!

Morten
Avatar billede erikjacobsen Ekspert
07. juli 2003 - 13:53 #10
det er jo ligegyldigt med HTML og linieskift når man først har fået sagt ob_start()
Avatar billede hoejgaard Juniormester
07. juli 2003 - 14:56 #11
kan du ikke lægge et svar erik :) så får du point..
Avatar billede erikjacobsen Ekspert
07. juli 2003 - 15:31 #12
Jo jo. Så når problemet mu er løst, så vil jeg anbefale en anden opdeling
af din side. Først laver du beregninger, og så din HTML. Skitse

<?
  masser af PHP fx
    header("Location: ...");
    exit();
?>

Al din HTML med fx <?= $variabel?>


Det synes jeg gør det mere overskueligt.
Avatar billede erikjacobsen Ekspert
07. juli 2003 - 15:32 #13
s
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