Avatar billede kiwankow Nybegynder
16. august 2009 - 12:55 Der er 10 kommentarer og
1 løsning

Tilpasning af password script

Hej Jeg har funde følgende password protect script på nettet, men ønsker at få det tilpasset en smule..

Jeg kunne godt tænke mig at når man indtaster korrekt brugernavn og password at man så automatisk bliver sendt videre til en ny .php side..

Er der nogen der kan fortælle om dette kan lade sig gøre og i så fald hvordan..?? Man skal selvfølgelig ikke kunne se hvilken side man sendes til ved at klikke "vis kilde" for så kan man jo bare kopiere stien og undgå password beskyttelsen..!!

<?php

session_start();

$admin_user_name = "admin";
$admin_password = "pass";
//you can change the username and password by changing the above two strings

if (!isset($HTTP_SESSION_VARS['user'])) {
   
    if(isset($HTTP_POST_VARS['u_name']))
        $u_name = $HTTP_POST_VARS['u_name'];
   
    if(isset($HTTP_POST_VARS['u_password']))
        $u_password = $HTTP_POST_VARS['u_password'];
   
    if(!isset($u_name)) {
        ?>
        <HTML>
        <HEAD>
        <TITLE><?php echo $HTTP_SERVER_VARS['HTTP_HOST']; ?> : Authentication Required</TITLE>
        </HEAD>
        <BODY bgcolor=#ffffff>
        <table border=0 cellspacing=0 cellpadding=0 width=100%>
            <TR><TD>
            <font face=verdana size=2><B>(Kun adgang med korrekt login)</b> </font></td>
            </tr></table>
        <P></P>
        <font face=verdana size=2>
        <center>
        <?php
        $form_to = "http://$HTTP_SERVER_VARS[HTTP_HOST]$HTTP_SERVER_VARS[PHP_SELF]";
       
        if(isset($HTTP_SERVER_VARS["QUERY_STRING"]))
        $form_to = $form_to ."?". $HTTP_SERVER_VARS["QUERY_STRING"];
       
        ?>
        <form method=post action=<?php echo $form_to; ?>>
        <table border=0 width=350>
        <TR>
        <TD><font face=verdana size=2><B>Brugernavn</B></font></TD>
        <TD><font face=verdana size=2><input type=text name=u_name size=20></font></TD></TR>
        <TR>
        <TD><font face=verdana size=2><B>Password</B></font></TD>
        <TD><font face=verdana size=2><input type=password name=u_password size=20></font></TD>
        </TR>
        </table>
        <input type=submit value=Login></form>
        </center>
        </font>
        </BODY>
        </HTML>
       
        <?php
        exit;
    }
    else {
       
        function login_error($host,$php_self) {
            echo "<HTML><HEAD>
            <TITLE>$host :  Administration</TITLE>
            </HEAD><BODY bgcolor=#ffffff>
            <table border=0 cellspacing=0 cellpadding=0 width=100%>
                <TR><TD align=left>
                <font face=verdana size=2><B> &nbsp;Indtast korrekt login for at få adgang til denne side! </b> </font></td>
                </tr></table>
            <P></P>
            <font face=verdana size=2>
            <center>";
                       
            echo "Advarsel: Du har indtastet ugyldigt brugernavn eller password!
            <B><a href=$php_self>Klik her</a></b> for at forsøge igen.<P>
            </center>
            </font>
            </BODY>
            </HTML>";
            session_unregister("adb_password");
            session_unregister("user");
            exit;
        }
       
        $user_checked_passed = false;
       
       
        if(isset($HTTP_SESSION_VARS['adb_password'])) {
           
            $adb_session_password = $HTTP_SESSION_VARS['adb_password'];
           
            if($admin_password != $adb_session_password)
                login_error($HTTP_SERVER_VARS['HTTP_HOST'],$HTTP_SERVER_VARS['PHP_SELF']);
            else {
                $user_checked_passed = true;
            }
        }
       
       
        if($user_checked_passed == false) {
           
            if(strlen($u_name)< 2)
                login_error($HTTP_SERVER_VARS['HTTP_HOST'],$HTTP_SERVER_VARS['PHP_SELF']);
           
            if($admin_user_name != $u_name) //if username not correct
                login_error($HTTP_SERVER_VARS['HTTP_HOST'],$HTTP_SERVER_VARS['PHP_SELF']);       
           
            if(isset($admin_password)) {
               
                if($admin_password == $u_password) {
                   
                    session_register("adb_password");
                    session_register("user");
                   
                    $adb_password = $admin_password;
                    $user = $u_name;
                }
                else { //password in-correct
                    login_error($HTTP_SERVER_VARS['HTTP_HOST'],$HTTP_SERVER_VARS['PHP_SELF']);
                }
            }
            else {
                login_error($HTTP_SERVER_VARS['HTTP_HOST'],$HTTP_SERVER_VARS['PHP_SELF']);
            }
               
            $page_location = $HTTP_SERVER_VARS['PHP_SELF'];
            if(isset($HTTP_SERVER_VARS["QUERY_STRING"]))
            $page_location = $page_location ."?". $HTTP_SERVER_VARS["QUERY_STRING"];
           
            header ("Location: ". $page_location);
        }
    }
}
?>
Avatar billede nemlig Professor
16. august 2009 - 13:14 #1
Citat:
Man skal selvfølgelig ikke kunne se hvilken side man sendes til ved at klikke "vis kilde" for så kan man jo bare kopiere stien og undgå password beskyttelsen..!!

Det vil en være meget dårlig beskyttelse, hvis du ikke også beskytter de sider, som der viderestilles til ved korrekt login.

Scriptet du anvender, gør brug af SESSION's, og det er derfor rimeligt enkelt, at beskytte disse sider.
Avatar billede kiwankow Nybegynder
16. august 2009 - 13:16 #2
Jamen jeg har en .php fil hvor jeg har prøvet at include ovenstående fil og jeg kan ikke få det at virke, derfor ..
Avatar billede kiwankow Nybegynder
16. august 2009 - 13:23 #3
UPS. he he

Nu ved jeg hvorfor det ikke virker havde logget ind, og browseren husker dig indtil lukker den, der sprang den password protection over. :-)
Avatar billede kiwankow Nybegynder
16. august 2009 - 13:25 #4
Men så kan jeg da lige spørge om noget andet..!!

Hvis jeg f.eks. laver et script der kan uploade "bgimage.jpg" og ikke andre typer filer, kan jeg så på nogen måde sikre mig at dette script ikke kan misbruges, ved at andre uploader..??
Avatar billede nemlig Professor
16. august 2009 - 13:25 #5
Ellers skal du måske læse lidt om SESSIONS.

http://www.phpbegynder.dk/artikler.php?id=22&page=1

Du kan også læse denne tråd, som omhandler en lignende problemstilling.

http://www.eksperten.dk/spm/881407
Avatar billede nemlig Professor
16. august 2009 - 13:39 #6
#4 Prøv at læse lidt om SESSIONs.

Det script, som uploader filen, kan du beskytte med SESSION, således det kun er dem, som er logget ind, som kan uploade.

Session-variabel sættes ved korrekt login, og i dit uploadscript, skal du så tjekke om sessions-variablen er sat. Hvis ja - så er der adgang til scriptet - ellers ikke, og heller ikke, hvis linket til scriptet er kendt.
Avatar billede kiwankow Nybegynder
16. august 2009 - 23:15 #7
Super det prøver jeg, smid et svar så jeg kan give dig dine point :-)
Avatar billede nemlig Professor
17. august 2009 - 08:17 #8
Som nævnt i anden tråd, så hopper jeg over.
Tag pointene selv og spar lidt på dem, når du opretter nye spørgsmål, men vær mere rundhåndet, når du afslutter dine tråde.
Jeg vil mene, at 30-60 point til dette spørgsmål havde været rigeligt.
Avatar billede kiwankow Nybegynder
17. august 2009 - 09:51 #9
Kom du bare med et svar :-)

Jeg vil gerne uddele point når problemet bliver løst :-)
Avatar billede kiwankow Nybegynder
17. august 2009 - 09:53 #10
Det nytter jo heller ikke noget at jeg lukker tråden så er det jo bare endnu en til samlingen :-)
Avatar billede nemlig Professor
18. august 2009 - 08:58 #11
Hehe - der har du en pointe.
Du får hermed et svar.
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

IT-JOB