Avatar billede kongfjong Nybegynder
26. februar 2005 - 19:32 Der er 19 kommentarer og
1 løsning

Problem med header

Hej;

Når jeg forsøger at køre mit login-script, får jeg følgende fejl:

Warning: Cannot modify header information - headers already sent by (output started at D:\Apache Group\Apache2\htdocs\fmground\login.php:16) in D:\Apache Group\Apache2\htdocs\fmground\buttonactionLogin.php on line 21

Linje 21: header("Location: index.php");

forstår ikke helt hvad fejlen kan være...
Avatar billede alister_crowley Nybegynder
26. februar 2005 - 19:35 #1
du har html før din header.

Kom med hele koden.
Avatar billede Slettet bruger
26. februar 2005 - 19:44 #2
Du kan kalde funktionen ob_start(); i starten af dit dokument, så sku du slippe for den fejl..
Avatar billede Slettet bruger
26. februar 2005 - 19:45 #3
Den slår buffering til, så den først genererer hele html siden også først sender den til clienten..
Fejlen kommer af at du begynder at sende html til clienten også senere prøver at redirecte til en anden url
Avatar billede alister_crowley Nybegynder
26. februar 2005 - 19:47 #4
og ob_start() bruger meget serverkraft, og er derfor ikke optimalt at bruge.
Avatar billede kongfjong Nybegynder
26. februar 2005 - 19:53 #5
Jeg har ikke noget
Avatar billede Slettet bruger
26. februar 2005 - 19:54 #6
Serverkraft? At gemme en flad side midlertidigt i den interne hukommelse kan jeg ikke forestille mig bruger den ville serverkraft.. Det er først hvis du begynder at give den callbacks at det begynder at blive tungt
Avatar billede kongfjong Nybegynder
26. februar 2005 - 19:54 #7
Hov:D

der skulle have stået, at jeg ikke har noget html i den fil, hvor linjen står. Det er en fil der bliver included i en anden fil, og den fil,  har først html sidst i filen.
Avatar billede kongfjong Nybegynder
26. februar 2005 - 19:58 #8
Fil der inkluderer:

<?php
session_start();

// Hvis SESSION-variablen username er sat og ikke er tom
if (isset($_SESSION['sessionvar1']) && !empty($_SESSION['sessionvar1']))
{
    print "<p class=\"loggedIn\">Du er allerede logget på. Du kan gå til din profil <a href=\"\">her</a>.</p>";
}
else
{
    if (isset($_POST['postvar1']))
    {
        include("postvar1.php");
    }
    else if (isset($_POST['postvar2']))
    {
//        include("postvar2.php");
    }
    else if (isset($_POST['postvar3']))
    {
//        include("fil3.php");
    }
    else
    {
    ?>
        HER OPBYGGES DER EN FORMULAR I REN HTML, MEN KUN HVIS KODEN KOMMER HERTIL.
    <?php
    }
}
?>

Fil der bliver inkluderet:

<?php
session_start();
   
    $var1 = $_POST[indtast1];
    $var2 = $_POST[indtast2];
   
    include("mysqlconn.php");
   
    $sql = "select * from users where kol1 = '$var1' AND kol2 = '$var2'";
   
   
    $result = mysql_query($sql, $conn) or die(mysql_error());
   
    if (mysql_num_rows($result) == 1)
    {
      $_SESSION['sessionvar1'] = $var1;
   
      // Går tilbage til forsiden
      header("Location: index.php"); <- Linje 21
      exit;
    }
   
    else
    {
        print "Du har indtaster et forkert brugernavn eller kodeord.";
    }
?>
Avatar billede alister_crowley Nybegynder
26. februar 2005 - 20:00 #9
ja, men hvis der er html i include filen, så er der også html i dit document, da siden jo bliver parsed, som om at den fil der bliver included står i koden, altså som én fil.

gizmo007

Der er jo ingen menining i at bruge ob_start(); hvis det kan klares uden.
Avatar billede kongfjong Nybegynder
26. februar 2005 - 20:09 #10
Dvs. det er den filer der BLIVER inkluderet der ikke må være html i? Det er der heller ikke i

<?php
session_start();
   
    $var1 = $_POST[indtast1];
    $var2 = $_POST[indtast2];
   
    include("mysqlconn.php");
   
    $sql = "select * from users where kol1 = '$var1' AND kol2 = '$var2'";
   
   
    $result = mysql_query($sql, $conn) or die(mysql_error());
   
    if (mysql_num_rows($result) == 1)
    {
      $_SESSION['sessionvar1'] = $var1;
   
      // Går tilbage til forsiden
      header("Location: index.php"); <- Linje 21
      exit;
    }
   
    else
    {
        print "Du har indtaster et forkert brugernavn eller kodeord.";
    }
?>

så vidt jeg kan se?
Avatar billede kongfjong Nybegynder
26. februar 2005 - 20:16 #11
Er der evt. en anden måde, man kan sende brugeren til forsiden en lige header();?
Avatar billede alister_crowley Nybegynder
26. februar 2005 - 20:17 #12
heller ikke i       

include("postvar1.php");

Den siger at headeret er begyndt på linje 16.
Avatar billede alister_crowley Nybegynder
26. februar 2005 - 20:18 #13
du kan bruge meta, men det er dårligt. så heller ob_start();
Avatar billede kongfjong Nybegynder
26. februar 2005 - 20:24 #14
include("postvar1.php"); kalder den fil hvor problemet opstår, altså

<?php
session_start();
   
    $var1 = $_POST[indtast1];
    $var2 = $_POST[indtast2];
   
    include("mysqlconn.php");
   
    $sql = "select * from users where kol1 = '$var1' AND kol2 = '$var2'";
   
   
    $result = mysql_query($sql, $conn) or die(mysql_error());
   
    if (mysql_num_rows($result) == 1)
    {
      $_SESSION['sessionvar1'] = $var1;
   
      // Går tilbage til forsiden
      header("Location: index.php"); <- Linje 21
      exit;
    }
   
    else
    {
        print "Du har indtaster et forkert brugernavn eller kodeord.";
    }
?>
Avatar billede kongfjong Nybegynder
26. februar 2005 - 21:03 #15
Vil lige prøve at beskrive hvordan det er opbygget:

En fil, fil1.php, inkluderer fil2.php. Denne fil, indholdlogin.php inkluderer så filen den tredjefil, fil3.php.

FIL1.PHP:

<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>hjemmeside.dk
</title>
</head>

<?php

print "<div id=\"center\">";

    include("loginIndhold.php");
   
print "</div>";
?>

</html>

FIL2.PHP:

<?php
session_start();

if (isset($_SESSION['var1']) && !empty($_SESSION['var1']))
{
    print "<p class=\"loggedIn\">Du er allerede logget på. Du kan gå til din profil <a href=\"\">her</a>.</p>";
}
else
{
    if (isset($_POST['postvar1']))
    {
        include("fil3.php");
    }
    else if (isset($_POST['postvar2']))
    {
        include("ligegyldigfil1.php");
    }
    else if (isset($_POST['postvar3']))
    {
        include("ligegyldigfil2.php");
    }
    else
    {
        print "<title>Login</title>
        <div id=\"indhold\">
        <h1 class=\"login\">Hjemmeside - Login</h1>
       
        <form name=\"login\" method=\"post\" action=\"$_SERVER[PHP_SELF]\" class=\"login\">
            <p>Brugernavn:
            <input name=\"brugernavn\" maxlength=\"20\" class=\"brugernavn\"><br>
            Kodeord:
            <input type=\"password\" name=\"kodeord\" maxlength=\"20\" class=\"loginKodeord\"><br>
            <input type=\"submit\" name=\"postvar1\" value=\"LOGIN\" class=\"loginKnap\">
            <input type=\"submit\" name=\"postvar2\" value=\"OPRET BRUGER\" class=\"opretKnap\">
            <input type=\"submit\" name=\"postvar3\" value=\"GLEMT KODEORD\" class=\"kodeordKnap\">
        </form>
        </div>";
    }
}
?>

FIL3.PHP

<?php
session_start();
   
    $var1 = $_POST[brugernavn];
    $var2 = $_POST[kodeord];
   
    include("mysqlconn.php");
   
    $sql = "select * from users where kol1 = '$var1' AND kol2 = '$var2'";
   
   
    $result = mysql_query($sql, $conn) or die(mysql_error());
   
    if (mysql_num_rows($result) == 1)
    {
      $_SESSION['sessionvar1'] = $var1;
   
      // Går tilbage til forsiden
      header("Location: index.php");
      exit;
    }
   
    else
    {
        print "Du har indtaster et forkert brugernavn eller kodeord.";
    }
?>

INDEX.PHP

<?php
session_start();

print "Du er logget ind!";
?>

Jeg kan simpelthen ikke se hvad jeg gør forkert?
Avatar billede kongfjong Nybegynder
26. februar 2005 - 21:05 #16
Og fejlen var:

Warning: Cannot modify header information - headers already sent by (output started at D:\Apache Group\Apache2\htdocs\test\fil1.php:14) in D:\Apache Group\Apache2\htdocs\test\fil3.php on line 22

fil1.php, linje 14: "<?php"

fil3.php, linje 22: "header("Location: index.php");"
Avatar billede kongfjong Nybegynder
26. februar 2005 - 22:18 #17
Ikke nogen der kan hjælpe yderligere?
Avatar billede yHec Novice
27. februar 2005 - 16:02 #18
Hej,
Jeg havde det præcis samme problem forleden. Havde heller ikke noget outpur før header... Men Jeg laver alt mit "design" i DW... Og DW sætter altså noget halløj forrest i filen.

Jeg gjorde det jeg åbnede den i notepad, gemte den uden at pille ved noget.

... også virkede det helt fint.

Underligt.

Og jeg har brugt metoden flere gange siden.

Håber det hjalp!

Mvh

/jan
Avatar billede kongfjong Nybegynder
27. februar 2005 - 17:11 #19
Jeg har løst mit problem, ellers tak for hjælpen;)
Avatar billede kongfjong Nybegynder
27. februar 2005 - 17:12 #20
Låser lige
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