Avatar billede kasperbje Nybegynder
01. juli 2009 - 12:14 Der er 23 kommentarer og
1 løsning

Simpelt loginsystem fejl ?

Hej jeg har mit loginsystem vil ikke helt virke man kan fint lave en bruger og man kan også sagtens se registret brugere men når man så vil logge ind og skriver rigtig kode og navn så ryger man bare ind på login igen ?








<script>
var registrerUrl = "login.php?registrer=ja";
var tilbageUrl = "login.php";
var regtilbageUrl = "login.php?registrer=ja";
var logudUrl = "login.php?logud=ja";
var visbrugereUrl = "login.php?visbrugere=ja";
var slet = "Er du sikker på at du vil slette denne person??";
function checkLogin()
{
if(document.loginform.brugernavn.value == '' || document.loginform.password.value == ''){
alert('Du skal udfylde det hele');
return false;
}else{return true;}
}
function checkReg()
{
if(document.regform.brugernavn.value == '' || document.regform.password.value == ''){
alert('Du skal udfylde det hele');
return false;
}else{return true;}
}
</script>
<?php
/*
START VARIABLER
*/
$session = $_SESSION['li']; // Lægger sesionen over i variablen $session
$bruger_filen = "brugere.inc"; // Skriv hvilken fil brugerne skal gemmes i
$antal_brugere = count(file("$bruger_filen")); // Tæl hvor mange brugere der er i filen


// Tjek antal brugere og skriv en ordenlig endelse ind i variablen $enden
if($antal_brugere < 2){$enden = "bruger";}else{$enden = "brugere";}

echo "<center>\n"; // Laver et simpelt html tag.
/*
STARTSIDE
*/
    if($session && !$_GET['visbrugere']) // Hvis brugeren er logget ind behøver vi jo kun at sige det til ham/hende.
    {
    echo 'Du er logget ind som: '.$session.'; <input type="button" onclick="window.location = visbrugereUrl" value="Vis brugere"><input type="button" onclick="window.location = logudUrl" value="Logud">';
    }
    elseif(!$_GET['login'] && !$session && !$_GET['registrer'] && !$_GET['visbrugere']) // Men hvis ikke så hvis ham/hende den startside.
    {
        echo '
        <h1>Login</h1>
        <form action="?login=ja" name="loginform" method="POST" onsubmit="if(checkLogin()){return true}else{return false}">
       
        Brugernavn: <input type="text" name="brugernavn">
        <br>
        Password: <input type="password" name="password">
        <br>
        <input type="submit" name="submit" value="Login"><input type="button" onclick="window.location = registrerUrl" name="submit" value="Registrer">
        </form>Der er oprettet '.$antal_brugere.' <a style="color:black;" href="?visbrugere=ja">'.$enden.'</a>';
    }
   
/*
LOGIN
*/
    if($_GET['login'] == 'ja' && !$session && isset($_POST['submit'])) /* Hvis den skal logge ind og brugeren ikke i forvejen er logget ind
    og der er trykket på login knappen så: */
    {
        $brugernavn = $_POST['brugernavn']; // Hent det indskrevne brugernavn.
        $password = $_POST['password']; // Hent det indskrevne password.
        $linjer = file("$bruger_filen"); // Læg alle linjerne i $bruger_filen ind i et array.
       
        // Hvis filen med brugerne ikke er der så opret den
        if(!file_exists("$bruger_filen")){$fext = fopen("$bruger_filen","w+");fclose($fext);}
       
        // Start med at tjekke om brugeroplysningerne passer
        foreach($linjer as $linje) // Tager hver linje en ad gangen
        {
           
            $linjetrim = rtrim($linje); // Trimmer slutningen for mærkelige tegn og ting :)
            $side = explode("|",$linjetrim); // Deler linjen op i brugernavn|password
            if($brugernavn == $side[0] && md5($password) == $side[1]) /* Hvis $brugernavn == brugernavnet i filen
            OG $password == passwordet i filen så: */
            {
                if($side[2] == 'ja'){$_SESSION['admin'] = 'ja';} /* Læg en tredje del ind i brugerfilen hvor der står admin, så kan du bruge
                sessionen admin til at filtrere med. */
                $valid = true; // Laver vaiablen valid som siger at det hele er gået godt.
                break; // Hvis de hele er gået godt så spring lige ud.
              }
        }
       
        // Hvis nu de passer :)
        if($valid == true) // Hvis $valid = true så:
        {
        $_SESSION['li'] = $brugernavn; // Lav sessionen li, med brugernavnet i.
        echo '<meta http-equiv="refresh" content="0;url=login.php">'; // Send brugeren til forsiden med meta tagget.
        }else{ // Hvis $valid ikke er true
        echo 'Forkert brugernavn eller password.<br><input type="button" onclick="window.location = tilbageUrl" value="Tilbage">'; // Så skriv dette
        }
    }
   
/*
LOGUD
*/
    if($_GET['logud'] == 'ja') // Hvis det er logud tid så:
    {
        session_destroy(); // Slet alle sessioner
        echo '<meta http-equiv="refresh" content="0;url=login.php">'; // Og send brugeren tilbage til forsiden.
    }
   
/*
REGISTRER BRUGER
*/

    if($_GET['registrer'] == 'ja') // Hvis det er tid til at oprette en bruger så:
    {
        // Skriv dette html stykke:
        echo '
        <h1>Registrer</h1>
        <form action="?registrer=gem" method="POST" name="regform" onsubmit="if(checkReg()){return true}else{return false}">
       
        Dit ønskede brugernavn: <input type="text" name="brugernavn">
        <br>
        Dit ønskede password: <input type="password" name="password">
        <br>
        <input type="submit" name="submit" value="Registrer"><input type="button" onclick="window.location = tilbageUrl" value="Tilbage">
        </form>
        ';
    }
   
    if($_GET['registrer'] == 'gem') // Hvis det er tid til at gemme brugeren så:
    {
        $brugernavn = trim($_POST['brugernavn']); // trim brugernavnet for mærkelige tegn og derefter læg det ind i vaiablen $brugernavn
        $password = trim(md5($_POST['password'])); // så trim passwordet og md5 krypter det og læg det ind i vaiablen password.
        $linjer = file("$bruger_filen"); // Så læg alle linjerne i bruger_filen over i et array IGEN :)
        $valid = true; // Laver variablen valid til true
        if(!empty($brugernavn) && !empty($password)) // Hvis $brugernavn ikke er tomt og det samme med passwordet så:
        {
            foreach($linjer as $linje) // For hver bruger dvs linje:
            {
                $trimlinje = ltrim($linje); // Fjerner mærkelige tegn i slutningen af linjen
                $side = explode("|", $trimlinje); // Deler linjen op i brugernavn|password
                // Hvis brugernavn == brugernavnet i filen på linjen den tjekker så hop ud og sig der er en fejl
                if($brugernavn == $side[0]){$valid = false;}
            }
                if($valid == true) // Hvis der ikke er sket en fejl så:
                {
                    $nybruger = "\n$brugernavn|$password"; // Lav konstrukturen af brugernavn/password forhold som i filen
                    $fil = fopen("$bruger_filen","a+"); // åben $bruger_filen til læsning og skrivning i slutningen af filen
                    if(fwrite($fil, $nybruger)) // Hvis det lykkes at putte konstrukturen $nybruger ind i filen så:
                    {
                        //Skriv dette:
                        echo 'Brugernavnet er oprettet.<br><input type="button" onclick="window.location = tilbageUrl" value="Login">';
                       
                    }
                    else // Ellers hvis der er sket en fejl så skriv det:
                    {
                    echo 'Der skete en fejl.<br><input type="button" onclick="window.location = regtilbageUrl" value="Prøv igen">';
                    }
                    fclose($fil); // Luk filen igen.
                }
                else // Hvis brugernavnet er taget så skriv det, med en tilbage knap.
                {echo 'Brugernavnet er taget.<br><input type="button" onclick="window.location = regtilbageUrl" value="Tilbage">';}
       
        }else{echo 'Du skal udfylde det hele.<br><input type="button" onclick="window.location = regtilbageUrl" value="Tilbage">';}
       
    }

/*
VIS ALLE BRUGERE
*/
    if($_GET['visbrugere'] == 'ja') // Hvis den har fået besked på at vise brugerne så:
    {
        echo '<h1>Brugere:</h1>'; // Skriv en overskrift
        $brugere = file("$bruger_filen"); // Læg brugerne ind i et array
        echo '<h4><u>'; // Skriv nogle simple html tags
        if(count($brugere) > 0) // Hvis der er mere end 0 brugere så:
        {
            foreach($brugere as $linje) // Kør en linje igennem en adgangen
            {
                $trimlinje = ltrim($linje); // Fjern mærkelige tegn i numsen på strengen
                $side = explode("|", $trimlinje); // Del linjen op i brugernavn|password
                echo ucfirst($side[0]); // Skriv brugerne ud med stort for bogstav
               
                echo '<br>';// Laver linjeskift
            }
        }else{echo 'Ingen brugere.';} // Hvis der ingen brugere er så skriv det.
        echo '</h4></u>';    // Slut de simple html tags af.
        echo '<input type="button" onclick="window.location = tilbageUrl" value="Tilbage">'; // Lav en tilbage knap.
    }
   
echo "\n<center/>"; // Laver et simpelt slut html tag for ovenstående center
   
?>










Også er jeg heller ikke helt så sikker på om det script man skal sætte på de beskyttet sider der skal tjekke om man er logget ind virker helt vil i ikke også tjekke det ?





<?php
ob_start();
session_start();
if(!$SESSION['li']){header("Location: http://www.daap.wep.dk/login/login.php");}
ob_end_flush();
?>








Jeg giver 120 point når begge ting er løst :)
Avatar billede majbom Novice
01. juli 2009 - 12:23 #1
har du en ide om hvor langt den kommer i din login-process? den består jo af en masse if-sætninger.

det virker underligt for mig at du læser en fil, for derefter at tjekke om den overhovedet eksisterer?

$linjer = file("$bruger_filen"); // Læg alle linjerne i $bruger_filen ind i et array.
     
        // Hvis filen med brugerne ikke er der så opret den
        if(!file_exists("$bruger_filen")){$fext = fopen("$bruger_filen","w+");fclose($fext);}

ville det ikke give mere mening i omvendte rækkefølge?
Avatar billede kasperbje Nybegynder
01. juli 2009 - 12:27 #2
det ikke mig der har lavet det jeg har kun fundet det og vil gerne vide hvorfor den smider ind på login.php når jeg logger ind
Avatar billede kasperbje Nybegynder
01. juli 2009 - 12:45 #3
? nogle der har et svar ?
Avatar billede majbom Novice
01. juli 2009 - 12:47 #4
okay, det er ikke særlig pænt kodet, men nok om det...

prøv at ret "login.php" i:

echo '<meta http-equiv="refresh" content="0;url=login.php">'; // Send brugeren til forsiden med meta tagget.

til den side du vil have brugeren sendt til...
Avatar billede majbom Novice
01. juli 2009 - 12:48 #5
har du travlt?
Avatar billede repox Seniormester
01. juli 2009 - 12:49 #6
Jeg gætter på at det er fordi du ikke starter sessions i sit script.
Der er noget der tyder på at ovenstående omgang rod rent faktisk er din fulde kode.

Sæt det her ind som det første i filen:
<?php
session_start();
?>
Avatar billede kasperbje Nybegynder
01. juli 2009 - 12:52 #7
1. nej jeg har ikke travlt jeg har bare ledt så længe så det ville være fedt og finde noget der virker.

2. når jeg sætter
<?php
session_start();
?>
skriver den en masse error der hvor man lukker ind.

3. jeg prøver og ændre
echo '<meta http-equiv="refresh" content="0;url=login.php">'; // Send brugeren til forsiden med meta tagget.
til min side.
Avatar billede kasperbje Nybegynder
01. juli 2009 - 12:56 #8
det hjælper ikke og ændre det til min side

echo '<meta http-equiv="refresh" content="0;url=../medlemzone.php">'; // Send brugeren til forsiden med meta tagget.

det sender mig stadig hen til login
Avatar billede kasperbje Nybegynder
01. juli 2009 - 13:11 #9
ved i hva jeg skal gøre ?
Avatar billede kasperbje Nybegynder
01. juli 2009 - 13:50 #10
er der nogle ?
Avatar billede dkfire Nybegynder
01. juli 2009 - 14:09 #11
Du kalder den forkerte variabel. Det hedder $_SESSION og ikke kun $SESSION
Avatar billede kasperbje Nybegynder
01. juli 2009 - 14:12 #12
hvor ?
Avatar billede kasperbje Nybegynder
01. juli 2009 - 14:22 #13
det kan da ikke passe alle kommer ind og skriver en ting også skrider jeg har brug for hjælp :(
Avatar billede repox Seniormester
01. juli 2009 - 15:06 #14
Spænd hjelmen, kammerat!

De folk der sidder herinde har andet at lave end at servicere dig!
Mange af de brugere som sidder her vil hellere end gerne hjælpe, men sådan noget passer de fleste ind når tid er. Men din utålmodighed om tone omkring denne er ikke særlig god hvilket ikke øger lysten til at besvare dit spørgsmål!

Men skidt, du kan få det råt for usødet:

Den kode du har leveret er noget slamkode. Du har sandsynligvis ikke skrevet det selv og det vil dermed være umuligt at få dig til at forstå hvad der ikke virker og hvorfor det ikke virker.

Med det sagt tror jeg ikke du skal satse på mere hjælp herfra;  måske er du heldig at der er nogen der ser det her som en udfordring...
Avatar billede kasperbje Nybegynder
01. juli 2009 - 15:14 #15
altså sory jeg spørg om hjælp og hvis man ved en del om php kan jeg ikke se det kan være så svært og løse men det kan nok godt være fordi jeg ikke ved så meget om php og nej du har ret jeg har ikke selv lavet det for hvis jeg havede ville jeg nok have lært nok om php til og kunne fixe det her lille problem selv men eller tak for dit svar
Avatar billede repox Seniormester
01. juli 2009 - 15:24 #16
Der er overhovedet ikke noget formål i at forsøge at redde den kode du har der; koden er håbløst rodet og er nærmest ubrugelig; ubrugelig fordi du ikke ved hvordan du skal bruge det.

Har du stillet dig selv spørgsmål om det videre forløb?
Hvad skal der ske når brugeren er logget ind?
Hvordan vil du kontrollere at de sider du gerne vil have beskyttet kun kan ses af dem der er logget ind?

Er det projekt du har gang i overhovedet gennemtænkt, når du ikke ved hvordan du skal bruge det her?

At lave en simpel loginfunktion er faktisk relativt nemt; men at smide et stykke kode op som du reelt set ikke har nogen idé om hvordan virker og derefter forvente at 'nogen der ved noget om php' kan sætte det skrammel op til lige præcis det du har behov for er utopisk.

Hvis du har behov for noget specifikt, så læg det som en opgave og beskriv hvad du har behov for og hvad du vil betale for det.
Avatar billede kasperbje Nybegynder
01. juli 2009 - 15:29 #17
altså alt jeg skal bruge er et login system så dem der laver en bruger har adgang til nogle filer og dem jeg så gør til admin har adgang til nogle flere og dem der er vip har adgang til nogle helt tredie. jeg er igang med og lave en hjemmeside til min css (counter strike source) clan og ja jeg har tænkt nogle tanker igenem og nej jeg ved ikke ikke rigtigt så meget om det her login system men det troede jeg heller ikke jeg behøvede da det var færdig lavet og alt står forklaret såå....
Avatar billede repox Seniormester
01. juli 2009 - 15:34 #18
Det loginsystem du har hentet kan alligevel ikke håndtere det du har behov for - langt fra.
Du efterlyser i princippet et mindre community.
Medmindre du selv har lyst til at lave det, skal du nok regne med at du enten skal håbe på nogle venlige sjæle herinde eller op med tegnedrengen...
Avatar billede kasperbje Nybegynder
01. juli 2009 - 15:37 #19
koster det virkelig penge ???? Jeg har haft fundet noget men det virker ikke eller kan jeg bare ikke finde ud af og sætte det op..
Avatar billede kasperbje Nybegynder
01. juli 2009 - 15:50 #20
nå regner ikke med du eller andre kan/vil lave det så jeg lukker spørgsmålet
Avatar billede kasperbje Nybegynder
01. juli 2009 - 16:06 #21
Avatar billede majbom Novice
01. juli 2009 - 20:13 #22
haha selv tak!

det var da så lidt - vi har jo ikke andet at lave end at sidde her og vente på at du vender tilbage.
Avatar billede kasperbje Nybegynder
01. juli 2009 - 21:09 #23
sory jeg logget bare spørgsmålet fordi han sagde det ikke kunne laves ?
Avatar billede majbom Novice
02. juli 2009 - 07:46 #24
det er osse fint nok - det var nok bare måden det blev gjort på og at du sidder og skriver "kom nu" og "er der ingen der kan hjælpe", som om at folk ikke har andet at lave!?
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