Avatar billede ohhelpme Nybegynder
04. oktober 2009 - 20:13 Der er 14 kommentarer og
1 løsning

php session cookie...

Hej,
jeg får følgene fejl:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/index.php:4) in /var/www/sys33hs/login.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/index.php:4) in /var/www/sys33hs/login.php on line 2

men hvad er der galt?

min kode:

<?php
session_start();

    mysql_connect("localhost", "hej", "hej");
    mysql_select_db("login");
   
$user = $_POST[user];
$user = strip_tags($user);
$user = mysql_real_escape_string($user);

$pass = $_POST[pass];
$pass = strip_tags($pass);
$pass = mysql_real_escape_string($pass);

        if (!$user || !$pass) {         
            echo "Udfyld vanligst felterne";

        }
   
        elseif (!ereg("[A-z0-9_-]", $user)) {

        echo "Forket brugernavn...";

      }
     
      elseif (!ereg("[A-z0-9_-]", $pass)) {

        echo "Forket adgangskode...";

      }
      else {
     
      $tal = mysql_query("SELECT user FROM brugere WHERE user = '$user' AND pass = '$pass' LIMIT 1") or die(mysql_error());
        $antal = mysql_num_rows($tal);
        if($antal == 1){
           
        $tid = time();

      mysql_query("UPDATE brugere SET online = '$tid' WHERE `user` = '$user'");
     
      if ($_POST["auto"]) {

                setcookie("user", "$user", time()+1209600*2);

              setcookie("pass", "$pass", time()+1209600*2);

        }
       
      $_SESSION[login] == "true";
      $_SESSION[data] == $user;

        echo "det virker!!!!!!!!!!!!!!!!!!!!!!";
           
        } else {
       
        echo "Forkert brugernavn eller adgangskode";
       
        }
    }       
?>
<html>
<script type="text/javascript">

    jQuery(document).ready(function($) {

      $('a[rel*=facebox]').facebox()

    })

</script>

<body>
<form action="?get=login" method="post">
Brugernavn

<br>

<input id="login" name="user" type="text">

<br>

<br>

Adgangskode
<br>

<input id="login" name="pass" type="password">

<br>

<br>
<br>

<input value="Log ind" id="login-ok" type="submit">   <input name="auto" type="checkbox"> Husk?
</form>
<br>

<br>

<a href="#gu" rel="facebox">Opret bruger</a> | <a href="/sys33hs/gl">Glemt...</a>

<div id="body-fc">

<div id="gu" class="div-fc" style="display:none">

<?php           

include 'user.php';

?>


</div>


</div>

</body>

</html>
Avatar billede Slater Ekspert
04. oktober 2009 - 20:55 #1
Du echo'er noget før du skriver til session og cookies. Det kan du ikke.
Grunden kan du altid læse om selv, men løsningen på dit problem er enten at bruge output buffering (ved at skrive ob_start() før alt andet), eller flytte ALLE echo statements og ren HTML (uden for php-tags) ned under hvor du skriver til sessions og cookies.
Avatar billede dkfire Nybegynder
04. oktober 2009 - 22:39 #2
Dit output start i din index.php fil.
Hvordan ser den ud ?
Avatar billede ohhelpme Nybegynder
06. oktober 2009 - 14:59 #3
dkfire >> Det kan du jo se i mit indlæg ovenover... =)
Avatar billede ohhelpme Nybegynder
06. oktober 2009 - 15:02 #4
Jeg har prøvet at forkorte koden helt ned til det nødvendige...
men fejlen er der stadig....

<?php
session_start();

    mysql_connect("localhost", "wwwtii", "55221166ii");
    mysql_select_db("login");

   
$user = $_POST[user];
$user = strip_tags($user);
$user = mysql_real_escape_string($user);

$pass = $_POST[pass];
$pass = strip_tags($pass);
$pass = mysql_real_escape_string($pass);
     
      $tal = mysql_query("SELECT user FROM brugere WHERE user = '$user' AND pass = '$pass' LIMIT 1") or die(mysql_error());
        $antal = mysql_num_rows($tal);
        if($antal == 1){
       
      $_SESSION[login] == "true";
      $_SESSION[data] == $user;

        echo "det virker!!!!!!!!!!!!!!!!!!!!!!";
           
        } else {
       
        echo "Forkert brugernavn eller adgangskode";
       
        }   
?>
Avatar billede Slater Ekspert
06. oktober 2009 - 15:07 #5
Et skud i tågen, men du har ikke gemt filen i UTF-8 tegnsæt, vel?
Avatar billede ohhelpme Nybegynder
06. oktober 2009 - 15:15 #6
jo den er gemt i UTF-8....
Avatar billede Slater Ekspert
06. oktober 2009 - 15:24 #7
Det er sandsynligvis årsagen.

UTF-8 tegnsættet inkluderer normalt det der hedder en BOM, eller Byte Order Mark, som er nogle tegn i starten af dokumentet, som du ikke kan se i tekst-editoren, men som serveren stadig sender til browseren som ren tekst, hvilket gør at du skriver noget før du bruger sessions, som du ikke må.

Hvis du skal gemme html-filer i UTF-8, skal du sørge for at gemme dem uden BOM. Det kan du gøre i de fleste ordentlige editors. Notepad++ gør det f.eks. under Format -> Encode in UTF-8 (Without BOM). Programmer's Notepad 2 gør det under File -> Encoding -> UTF-8 No Mark.
Avatar billede dkfire Nybegynder
06. oktober 2009 - 18:16 #8
Hvilken fil er det du viser, er det index.php eller login.php ?
Avatar billede ohhelpme Nybegynder
06. oktober 2009 - 19:48 #9
det er login.php? jeg har ikke nogle filer med index.php...

ps se fejlene her: http://91.100.21.58/ vis det er...
Avatar billede ohhelpme Nybegynder
06. oktober 2009 - 19:50 #10
viperine >> ved du hvordan man gør dette i bluefish editor?...
Avatar billede dkfire Nybegynder
06. oktober 2009 - 21:47 #11
Jamen din fejl skyldes jo netop index.php.
Læs nu den fejlbesked rigtig.
Du starter noget output på linje 4 i index.php og forsøger derefter at sende en header information, session_start(), i login.php, sikkert fordi du inkludere login.php i index.php.

Hvordan ser din index.php fil ud ?
Avatar billede dkfire Nybegynder
06. oktober 2009 - 21:48 #12
Og så kan jeg ikke se din side, da din server nulstiller forbindelsen til browseren.
Avatar billede ohhelpme Nybegynder
07. oktober 2009 - 19:51 #13
sorry fortolkede det forkert =)
det rigtigt.. jeg include jo filen i index.php hehe så skal jeg jo bare sætte session i index.php...

Jeg har min server slukket fra ca kl 22.00 til ca 16.00... derfor kan du ikke se... =)
Avatar billede dkfire Nybegynder
07. oktober 2009 - 20:33 #14
Det vil nok være smartere at ændre i index.php, så der ikke sendes noget til browseren før til sidst, når du har kørt alt din php kode igennem. Du vil nemlig også få problemer med bl.a. header().
Avatar billede ohhelpme Nybegynder
20. august 2010 - 14:01 #15
aaaaa
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