Avatar billede _eksperten_ Nybegynder
27. september 2003 - 00:34 Der er 16 kommentarer og
1 løsning

Admin login - en lille fejl

Hej
Jeg har lavet et admin script, det består af 2 filer,
når jeg prøver at logge af for jeg fejlen:

Warning: Cannot send session cache limiter - headers already sent (output started at /var/www/hotels/1go/kingsize/html/admin-again/functions.php:14) in /var/www/hotels/1go/kingsize/html/admin-again/admin.php on line 20


Admin.php indeholder:
<?
    require( "functions.php" );
    session_start();
    if( isset( $action ) ):
        if( $action == "logout" ):
            session_unregister( "name" );
            session_unregister( "passwd" );
                  session_destroy();
            displayHeader( "Logout" );
            echo "
            <center><h4>Yeah, you're succesfully logged out !</h4></center>
            </body></html>";
        endif;
    endif;
    if( isset( $name ) && isset( $passwd ) ):
        if( $name != $adminName || $passwd != $adminPasswd || $name == "" || $passwd == "" ):
            error( "Nope, that's not it !" );
        elseif( !session_is_registered( "name" ) && !session_is_registered( "passwd" )
        && $name == $adminName && $passwd == $adminPasswd ):
            session_register( "name" );
            session_register( "passwd" );
            displayAdmin();
        elseif( session_is_registered( "name" ) && session_is_registered( "passwd" )
        && $name == $adminName && $passwd == $adminPasswd ):
            displayAdmin();
        else:
            error( "Hhmmm, something's wrong !" );
        endif;
    else:
        if($action != "logout"):
            displayForm();
            endif;
    endif;
   
    function displayForm()
    {
        displayHeader( "Login" );
        echo "
        <center><h4>Login in</h4></center>
        <div align=center>
          <center>
          <form method=post action=admin.php>
          <table border=0 cellpadding=0 cellspacing=0 width=230>
            <tr>
              <td width=70 height=20>User:</td>
              <td width=130 height=20><input type=text name=name size=20 maxlength=10></td>
            </tr>
            <tr>
              <td width=70 height=20>Password:</td>
              <td width=130 height=20><input type=password name=passwd size=20 maxlength=10></td>
            </tr>
            <tr>
              <td width=70 height=20></td>
              <td width=130 height=20><input type=submit value=\"  Login  \"></td>
            </tr>
          </table>
          </form>
          </center>
        </div>
        <p align=center><a href=java script:history.back()>Back</a></p>
        </body></html>";
    }
    function displayAdmin()
    {
        displayHeader( "Admin area" );
        echo "
        <center><h4>Admin Area</h4></center>
        <p align=center><a href=admin.php?action=logout>Logout</a></p>
        </body></html>";
    }
?>

functions.php indeholder:

<?
$adminName = "Webmaster";
$adminPasswd = "pass";

function displayHeader( $title )
{
    global $fontFamily, $fontSize, $visitedColor, $hoverColor, $linkColor, $forumTitle;
    echo "
    <html>
    <head>
    <title>$title</title>
    </head>
    <body>
    <center><h2>$forumTitle</h2></center>";
}

function error( $error )
{
    global $forumTitle;
    displayHeader( "Error Page" );
    echo "
    <center><b>&lt;Error Page&gt;</b></center>
    <center><h4><font color=#FF0000>$error</font></h4></center>
    <p align=center><a href=java script:history.back();>Back</a>
      </body></html>";
    exit;
}
?>
Avatar billede squashguy Nybegynder
27. september 2003 - 00:40 #1
sørg for at der absolute ingen output er før du kalder session_start()

det gælder ALT inklusiv mellem du måtte have før/efter <? ?>
Avatar billede squashguy Nybegynder
27. september 2003 - 00:40 #2
*mellemrum og linieskift
Avatar billede _eksperten_ Nybegynder
27. september 2003 - 00:45 #3
Nu har jeg sat session_start() lige efter <?
Avatar billede _eksperten_ Nybegynder
27. september 2003 - 00:45 #4
Stadig fejl
Avatar billede squashguy Nybegynder
27. september 2003 - 00:49 #5
har du mellemrum/linieskift i functions.php ?
Avatar billede squashguy Nybegynder
27. september 2003 - 00:50 #6
bah.. du har sat den for include..

har du linieskift før <?
Avatar billede squashguy Nybegynder
27. september 2003 - 00:51 #7
i admin.php
Avatar billede _eksperten_ Nybegynder
27. september 2003 - 00:53 #8
Her er det jeg har i admin.php :

<? session_start();
    require( "functions.php" );
    if( isset( $action ) ):
        if( $action == "logout" ):
            session_unregister( "name" );
            session_unregister( "passwd" );
..............osv...........
Avatar billede squashguy Nybegynder
27. september 2003 - 00:54 #9
jeg kan ikke se om du har linieskift/mellemrum før <?

dette gælder som output..
Avatar billede _eksperten_ Nybegynder
27. september 2003 - 00:59 #10
Jeg har absolut intet foran <?
Avatar billede squashguy Nybegynder
27. september 2003 - 01:05 #11
hmm har lige prøvet på 1go.dk  der kommer da ingen fejl.. ?
Avatar billede squashguy Nybegynder
27. september 2003 - 01:06 #12
før ved logout
Avatar billede _eksperten_ Nybegynder
27. september 2003 - 01:06 #13
Ja, det har jeg også sagt ...
"når jeg prøver at logge af for jeg fejlen:"
Avatar billede squashguy Nybegynder
27. september 2003 - 01:30 #14
(sorry overså jeg lige)

du laver ikke nogen form for redirect efter submit, dvs. forminput bliver bevaret. ved logout vil denne derfor evaluere til true

if( isset( $name ) && isset( $passwd ) ){

her forsøger du så at bruge den session du lige har destroyed.

det må være problemet..
Avatar billede _eksperten_ Nybegynder
27. september 2003 - 01:34 #15
Kan du foreslå hvad jeg så kan gøre, for at rette fejlen ?
Avatar billede _eksperten_ Nybegynder
28. september 2003 - 13:13 #16
Lukket ...
Avatar billede _eksperten_ Nybegynder
28. september 2003 - 13:13 #17
jeg lavede mig et nyt script istedet ...
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