Avatar billede akki Nybegynder
11. oktober 2002 - 15:01 Der er 4 kommentarer og
1 løsning

login script problemer

Jeg har lidt problemer med mit login script.. det virker sådan lidt.. men hvis du taster en forkert kode ind for du at vide at du selvfølgelig har tastet forkert.. men det jeg ikke forstår, er at jeg efter at havde tastet forkert ikke længere kan få mit login boks frem igen.. for hele tiden meddelsen, med at jeg har tastet forkert.. en anden ting er at man jo let kan komme ind på siden, hvis man blot fjerner
" ?action=admin" kan nogen hjælpe mig... her er scriptet

det skal lige siges, at indholdet, som scriptet skal beskytte, står under scriptet, altså på samme side..

<?
$brugernavn = "test";
$adgangskode = "test";
$ingen_adgang = "Der kræves et gyldigt brugernavn og adgangskode for at få adgang til denne side.";

# Hvis den besøgende forsøger at komme ind
# på administrationssiden (http://netsted.dk/side.php?action=admin)...
if ($action == "admin") {
    # Hvis variablen $PHP_AUTH_USER er tom (dvs., hvis den besøgende endnu ikke
    # har indtastet brugernavn og adgangskode)...
    if (!$PHP_AUTH_USER) {
        # ...så sender vi to headere, der skulle få de fleste browsere til
        # at vise en "Indtast brugernavn"-boks.
        header("WWW-Authenticate: Basic realm=\"Administrationssiden\"");
        header("HTTP/1.0 401 Unauthorized");
        # Hvis brugeren har trykket på "Annuller",
        # så skriver vi beskeden i $ingen_adgang...
        echo $ingen_adgang;
        # ...og udførslen af scriptet stoppes.
        exit;
    }
    # Hvis den besøgende har indtastet brugernavn og adgangskode og trykket på "OK"...
    else {
        # Hvis det indtastede brugernavn ikke er lig med $brugernavn eller
        # den indtastede adgangskode ikke er lig med $adgangskode...
        if ($PHP_AUTH_USER != $brugernavn || $PHP_AUTH_PW != $adgangskode) {
            # ...så skriver vi beskeden i $ingen_adgang...
            echo $ingen_adgang;
            # ...og udførslen af scriptet stoppes.
            exit;
        }
    }

}


# Hvis den besøgende har "bestået" ovenstående "prøve",
# så fortsættes udførslen af scriptet her:

echo "<HTML><HEAD><TITLE>Indtast nyhed -- Husk at udfylde feltet med dit kodeord</TITLE></HEAD>";
echo "<BODY>";

if ($action == "admin") {
 
}
?>
Avatar billede jamal_s Nybegynder
12. oktober 2002 - 10:00 #1
if ($action == "admin") {

om til

if ($action == "admin" && $brugernavn = "test" && $sesid = "987y4t934t98u34t89u34t89hg43") {

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

$brugernavn = "test";
$adgangskode = "test";

om til

$brugernavn = "test";
$adgangskode = "test";
$sesid = "987y4t934t98u34t89u34t89hg43";

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

så skulle den virke hvis jeg forstod dig korrekt..
Avatar billede jamal_s Nybegynder
12. oktober 2002 - 10:00 #2
husk...

if ($action == "admin" && $brugernavn == "test" && $sesid == "987y4t934t98u34t89u34t89hg43") {
Avatar billede achrist Nybegynder
12. oktober 2002 - 11:09 #3
Basic authentication er noget skidt. Det er bedre at bruge en form i sammenhæng med sessionsvariable. Derved undgår du også at have "?action=admin" synligt.
Først lav et login-script som dette:
------------------
<?php
$brugernavn = "test";
$adgangskode = "test";

global $loginfejl;
global $loginOK;
session_start();
#Check om login-billedet allerede har været sendt

if (isset($HTTP_POST_VARS['user']) && isset($HTTP_POST_VARS['pass'])){
# Er brugernavn og adgangskode korrekt?
    if ($brugernavn == $HTTP_POST_VARS['user'] && $adgangskode == $HTTP_POST_VARS['pass']) {
        # Gem info om at login er OK som sessionsvariabel
        $LoginOK=1;
        session_register(LoginOK);
        # Send brugeren til det ønskede sted
          header("Location: http://admin.php");
          exit;
    }
    else
        # Ellers husk at der er lavet et forvæges login-forsøg
        $loginfejl=1;
}   
# Ved forgæves forsøg: Fortæl brugeren, hvad der er galt
if ($loginfejl):?>
  <H3><br>Ugyldigt brugernavn eller kodeord<br></H3>
<? endif;?>
<?
# Send loginbilledet
echo("<FORM action=\"login.php.php\" method=POST name=login.php>");
echo("<TABLE align=center>\n");
echo("<TH colspan=3 align=center>\n");
echo("Indtast brugernavn og kodeord\n");
echo("</TH>\n");
echo("<TR>\n");
if (isset($HTTP_POST_VARS['user']))
    $user=$HTTP_POST_VARS['user'];
else
    $user="";
echo("<TD>Brugernavn: </TD>\n");
echo("<TD><INPUT type=text size=10 name=user value=\"$user\"></TD>\n");
echo("</TR>\n");
echo("<TR>\n");
echo("<TD>Kodeord: </TD>\n");
echo("<TD><INPUT type=password size=10 name=pass></TD>\n");
echo("</TR>\n");
echo("<TR>\n");
echo("<TD colspan=1 align=right><INPUT type=submit value=\"Log på\"></TD>\n");
echo("</TR>\n");
echo("</TABLE>\n");
echo("</FORM>\n");

?>

--------------------
Lav dernæst et admin.php, hvor du starter med at checke, om brugeren er logget korrekt ind:
<?
session_start();
if(empty($LoginOK)) {
      # Forsøg på at starte admin.php uden om login?
      # Så tilintetgør et evt. eksisterende login
      session_destroy();
      # Og send brugeren til login-scriptet
      header("Location: login.php");
      exit;
  }
# og så til sagen, for nu kender vi brugeren....
?>

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

M.v.h.
Allan
Avatar billede akki Nybegynder
12. oktober 2002 - 14:43 #4
hvis jeg forstår det ret.. så skal
Avatar billede achrist Nybegynder
12. oktober 2002 - 19:04 #5
????
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