Avatar billede asdffdsa Nybegynder
12. november 2004 - 12:55 Der er 4 kommentarer og
1 løsning

Headers problem

Jeg har et problem med headers (yes, banebrydende!). Er der noget i følgende filer der ser ud til at kunne være problemet? Se fejlmeddelelsen længere nede...


login.php:

<?php
session_start();
require("define.php");
include_once(CLASSES . "class.login.php");

// login med form
if (isset($_POST['login'])) {
    if (!$_POST['brugernavn']) {
        $fejl = "Du skal skrive dit brugernavn";
    } else if (!$_POST['password']) {
        $fejl = "Du skal også skrive dit password";
    } else {
        $brugernavn = trim($_POST['brugernavn']);
        $password     = md5(trim($_POST['password']));

        // gem login-info i cookie, hvis valgt
        if (isset($_POST['gem_info'])) {
            setcookie("login[brugernavn]", $brugernavn, time()+60*60*24*365, "/", server_addr);
            setcookie("login[password]", $password, time()+60*60*24*365, "/", server_addr);
        }
       
        $login = new login();
        $login->brugernavn = $brugernavn;
        $login->password = $password;
        $login = $login->loginMedForm();
        if ($login == 0) {
            $fejl = "Fejl i brugernavnet";
        } else if ($login == 1) {
            $fejl = "Fejl i passwordet";
        } else if ($login == 2) {
            $fejl = "Du blev logget ind";
            header("Location: http://" . SERVER . "/admin/");
// Warning: Cannot modify header information - headers already sent by (output started at /sti/til/class.mysql.php:305) in /sti/til/login.php on line 33
// linje 305 er filen sidste (tomme) linje
        }
    }
}
// login med cookies
else if (isset($_COOKIE['login']['brugernavn'],$_COOKIE['login']['password'])) {
    $login = new login();
    $login->brugernavn = $_COOKIE['login']['brugernavn'];
    $login->password = $_COOKIE['login']['password'];
    $login->loginMedCookie();
}


include_once(INCLUDES . "hoved_top.inc");
include_once(INCLUDES . "hoved_bund.inc");
include_once("submenu.inc");

?>


<div class="login_form">
   
<?php
if (isset($fejl)) {
    echo '<span id="fejl" style="color:red;">* ' . $fejl . '</span><br /><br />';
}
?>

    <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
        <label for="brugernavn">Brugernavn:</label> <input name="brugernavn" id="brugernavn" type="text" value="<?=$_REQUEST['brugernavn']?>" /><br />
        <label for="password">Password:</label> <input name="password" id="password" type="password" /><br />
        <label for="gem_info">Gem information:</label> <input type="checkbox" name="gem_info" id="gem_info" title="Gem information" /><br />
        <input type="submit" name="login" value="Login" />
    </form>
</div>

<?php
include_once(INCLUDES . "fod.inc");
?>

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


class.login.php:

<?php
include_once("class.sql_manager.php");

class login {
    var $brugernavn;
    var $password;
   
    /**
    * Forsøger at logge ind via en cookie
    * Returnerer adminrolle hvis login lykkes, ellers null.
    */
    function loginMedCookie() {
        $sql_mngr = new sql_manager();
        $sql = $sql_mngr->forbered_sql($sql_mngr->tjek_login_og_hent_admin_rolle, $this->brugernavn, $this->password);
        $res = $sql_mngr->sql_select($sql);
        if (is_string($res)) {
            $_SESSION['adminrolle'] = $res;
            $_SESSION['brugernavn'] = $_COOKIE['login']['brugernavn'];
        }
        return;
    }
   
    /**
    * Logger ind via formen, tjekker loginoplysninger, og finder adminrolle
    * Returnerer 0, 1 eller 2, hhv. hvis brugernavnet ikke eksisterer, forkert password, eller succesfuldt login.
    */
    function loginMedForm() {
        $sql_mngr = new sql_manager();
        $sql = $sql_mngr->forbered_sql($sql_mngr->hent_bruger_info, $this->brugernavn);
        $res1 = $sql_mngr->udfoer_sql_returner_assoc_array($sql);
        if ($res1[0]['username'] != $this->brugernavn) {
            // brugernavnet findes ikke
            return 0;
        } else if ($res1[0]['password'] != $this->password) {
            // forkert password
            $_SESSION['brugernavn'] = $this->brugernavn;
            return 1;
        } else {
            // finder og gemmer adminrolle
            $sql = $sql_mngr->forbered_sql($sql_mngr->hent_admin_rolle, $res1[0]['id']);
            $res2 = $sql_mngr->udfoer_sql_returner_assoc_array($sql);
            $_SESSION['adminrolle'] = $res2[0]['rolle'];
            $_SESSION['brugernavn'] = $this->brugernavn;
            return 2;
        }
    }
}
?>
Avatar billede sukos Juniormester
12. november 2004 - 13:00 #1
Mellemrum, "tom luft", linieskift, før du starter med <?php og efter du slutter med ?> kan opfattes som output.

og ved ikke, men denne

/**
    * Logger ind via formen, tjekker loginoplysninger, og finder adminrolle
    * Returnerer 0, 1 eller 2, hhv. hvis brugernavnet ikke eksisterer, forkert password, eller succesfuldt login.
    */

ville jeg lave til

/*
    * Logger ind via formen, tjekker loginoplysninger, og finder adminrolle
    * Returnerer 0, 1 eller 2, hhv. hvis brugernavnet ikke eksisterer, forkert password, eller succesfuldt login.
    */
Avatar billede asdffdsa Nybegynder
12. november 2004 - 13:15 #2
Skyldes ikke whitespace :(
Hvorfor ikke /** ?
Avatar billede sukos Juniormester
12. november 2004 - 13:41 #3
Fordi /* betyder jo "her starter kommentar"
Og for at være på den sikre side, så kun /*

Men tjek også for luft i class.sql_manager.php
Men hvad gør din $fejl ???
Avatar billede asdffdsa Nybegynder
12. november 2004 - 14:06 #4
Skulle jo gerne med i doc'en :) Men - nu sagde jeg nok det ikke skyldtes whitespace; cvs-update -> whitespace. Doh.
Smider du lige et svar? :) Og tak for hjælpen.
Avatar billede sukos Juniormester
13. november 2004 - 09:40 #5
Ja, selvf. (det med $fejl) :O(
Og et svar! :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