Avatar billede ohs Nybegynder
02. november 2006 - 13:31 Der er 21 kommentarer og
1 løsning

Hjælp til login system

For at man bedre kan forstå mit spørgsmål, har jeg oprettet dette link, som giver et bedre overblik over spørgsmålet.
http://home1.stofanet.dk/duo2/

Kode for mit login system.

<?php require_once('../Connections/cms.php'); ?>
<?php
// *** Validate request to login to this site.
session_start();

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($accesscheck)) {
  $GLOBALS['PrevUrl'] = $accesscheck;
  session_register('PrevUrl');
}

if (isset($_POST['brugernavn'])) {
  $loginUsername=$_POST['brugernavn'];
  $password=$_POST['adgangskode'];
  $MM_fldUserAuthorization = "adgang";
  $MM_redirectLoginSuccess = "index.php";
  $MM_redirectLoginFailed = "login.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_cms, $cms);
     
  $LoginRS__query=sprintf("SELECT brugernavn, adgangskode, adgang FROM brugere WHERE brugernavn='%s' AND adgangskode='%s'",
  get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));
 
  $LoginRS = mysql_query($LoginRS__query, $cms) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
   
    $loginStrGroup  = mysql_result($LoginRS,0,'adgang');
   
    //declare two session variables and assign them
    $GLOBALS['MM_Username'] = $loginUsername;
    $GLOBALS['MM_UserGroup'] = $loginStrGroup;         

    //register the session variables
    session_register("MM_Username");
    session_register("MM_UserGroup");

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];   
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.style2 {color: #FFFFFF}
-->
</style>
</head>

<body>
<form ACTION="<?php echo $loginFormAction; ?>" method="POST" name="login" id="login">
  <table width="400" border="0" align="center" cellpadding="1" cellspacing="0">
    <tr>
      <td><div align="center">
        <table width="100%"  border="0" cellspacing="0" cellpadding="2">
          <tr bgcolor="#CCCCCC">
            <td width="28%" class="style2">Log p&aring;</td>
            <td width="72%">&nbsp;</td>
          </tr>
          <tr>
            <td>Brugernavn:</td>
            <td><input name="brugernavn" type="text" id="brugernavn" size="40"></td>
          </tr>
          <tr>
            <td>Adgangskode:</td>
            <td><input name="adgangskode" type="password" id="adgangskode" size="40"></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td><input name="log p&aring;" type="submit" id="log p&aring;" value="Log p&aring;"></td>
          </tr>
        </table>
      </div></td>
    </tr>
  </table>
</form>
</body>
</html>
Avatar billede algizoft Nybegynder
02. november 2006 - 16:00 #1
Lige over denne linie:
header("Location: " . $MM_redirectLoginSuccess );

kan du sætte følgende ind (eller noget lignende):

Jeg regner med at $loginStrGroup indeholder din adgangs-variabel fra DB.

switch($loginStrGroup) {
    case '1':
        $MM_redirectLoginSuccess = 'index.php';
        break;
    case '2':
        $MM_redirectLoginSuccess = 'topmenu.php';
        break;
    case '3':
        $MM_redirectLoginSuccess = 'undermenu.php';
        break;
}
Avatar billede ohs Nybegynder
02. november 2006 - 19:57 #2
Jeg regner med at $loginStrGroup indeholder din adgangs-variabel fra DB. (JA DE ER)

Har nu afprøvet vejledningen og desværre virker det ikke.
Kan kun åbne index.php med adgang 1 og ingen andre.
Avatar billede h_thunbo Nybegynder
02. november 2006 - 21:16 #3
Jeg tror jeg forstår dit spørsmål nu. Gi mig lidt tid så har jeg koderne!
Avatar billede h_thunbo Nybegynder
02. november 2006 - 21:16 #4
foresten, vil du bruge MySQL?
Avatar billede h_thunbo Nybegynder
02. november 2006 - 21:25 #5
Okay nu har jeg et svar til dig! Men jeg bruger ikke SQL.
Avatar billede ohs Nybegynder
02. november 2006 - 21:30 #6
Mit login system er opbygget med mySQL
Avatar billede h_thunbo Nybegynder
02. november 2006 - 21:35 #7
-----------------------------index.php-----------------------------------------

<?php
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>index.php</title>
<meta name="generator" content="TSW WebCoder">
</head>

<body>

<table>
  <form method="post" action="login.php"><table>
        <tr>
            <td>Brugernavn</td>
            <td><input type="text" name="brugernavn"></td>
        </tr>
        <tr>
            <td>Password</td>
            <td><input type="password" name="password"></td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" value="Login" name="LoginNavn"></td>
        </tr>
    </table>

<?   
if($loginok == 12121212){
echo"
<div align='center'>Du er logget ind som admin.</div>

"
;}
?>

</body>
</html>

-----------------------------login.php-----------------------------------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>Login.php</title>
<meta name="generator" content="TSW WebCoder">
</head>

<body>
<?
$brugernavn = $_REQUEST["brugernavn"];
$password = $_REQUEST["password"];
$password = MD5($password);
if(($brugernavn=="admin")AND($password=="81dc9bdb52d04dc20036dbd8313ed055"))
{Echo "Du er nu logget ind som: $brugernavn";
        $loginok = 12121212;
        session_register('loginok')
?>
        <script type="text/javascript">
        setTimeout("location.href=\'index.php\'", 1500);
        </script>
<?
;}
else if(($brugernavn=="Lone")AND($password=="9996535e07258a7bbfd8b132435c5962"))
{Echo "Du er nu logget ind som: $brugernavn";
        $loginok = 34343434;
        session_register('loginok');
?>
        <script type="text/javascript">
        setTimeout("location.href=\'topmenu.php\'", 1500);
        </script>
<?
;}
else if(($brugernavn=="Karin")AND($password=="7bccfde7714a1ebadf06c5f4cea752c1"))
{Echo "Du er nu logget ind som: $brugernavn";
        $loginok = 56565656;
        session_register('loginok');
?>
        <script type="text/javascript">
        setTimeout("location.href=\'undermenu.php\'", 1500);
        </script>
<?
}
else {       
echo"<h1>Prøv igen</h1>"
?>
        <script type="text/javascript">
        setTimeout("location.href=\'index.php\'", 1500);
        </script>
<?
;}       
?>
</body>
</html>

-----------------------------slut-----------------------------------------

Okay hurtig forklaring... på login kan du se jeg starter med "session_start();", den kommer jeg tilbage til.
Derefter er der noget login, det kender du sikkert...
Og så kommer der en "if" sætning. Den kommer jeg os tilbage til.

Når du forsøger at logge ind bliver du sendt videre til login.php
På login.php laver den først password om til MD5, det er de password du har lavet på din info side, altså 1234, 1235 og 1236.

Hvis du har forsøgt at logge på som admin tildeler den $loginok 12121212, som bar var noget jeg fandt på... og derefter registrerer den en session, loginok.

Så kommer der noget java, der sender den der nu er logget ind, videre til næste side i løbet af noget tid...

Og så sir den så, hvis ikke det var admin, var det så Lone, og var det ikke Lone, var det så Karin...

Og hvis det ikke var nogen af dem, skriver den "prøv igen" og man blir sendt tilbage til index.php, uden et session...

Nu kommer jeg tilbage til det med session i toppen af login.php...
Den starter nemlig lige med at søge efter om der var en session, og er man lige logget ind som admin, har man jo lige fået en session der hedder loginok med som er 12121212!

længere nede på siden står der så:
if($loginok == 12121212){
echo"
<div align='center'>Du er logget ind som admin.</div>"

Og ja... der ligger du bare din side... Hvis du vil kan du også sige

else {
og så ligge din login boks her, så den ikke vises igen når man er logget ind... Hvis du forstår.
Altså hvis loginok=12121212 vises siden, ellers vises login kasserne...

Håber det var svar nok, ellers skriv igen hvis der var noget du ikke forstod...
Avatar billede h_thunbo Nybegynder
02. november 2006 - 21:39 #8
Du kan stadig bruge systemet med "session_register('loginok')" selvom du ligger det i din database. du giver bare hver bruger hver deres værdi af $loginok.
Du kan lave hele siden på en side, hvis du vil med if-else.
Avatar billede h_thunbo Nybegynder
02. november 2006 - 21:40 #9
Har forresten ikke tjekket om det virker!
Avatar billede ohs Nybegynder
02. november 2006 - 22:05 #10
h_thunbo: Jeg vil afprøve systemet i morgen fredag. og du derefter høre fra mig.
Avatar billede ohs Nybegynder
03. november 2006 - 11:24 #11
Desværre h thunbo, det er ikke sådan det skal virke. Jeg har lige rettet spørgsmålet til, så jeg håber man så bedre kan forstå hvad jeg mener. Prøv en gang til at gennemlæse dette på linket her. http://home1.stofanet.dk/duo2/
Avatar billede h_thunbo Nybegynder
03. november 2006 - 17:51 #12
hmm... Jeg synes jeg gennemlæser det nøje, men jeg kan ikke forstå du ikke kan bruge systemet med session_register?
Jeg forstår det sådan, at du skal ha et login system, hvor man logger ind, og alt efter hvem der logger ind, skal man gå til forskellige sider. = der er kun adgang til de forskellige sider, hvis man er logget ind som ligepræcis DEN der har adgang til siden.
Så når jeg logger ind som admin1, ser jeg ikke test.php eller undermenu.php, men kun index.php
Logger jeg derimod ind som admin2 kan jeg kun se test.php, og index og undermenu blir utilgængelige...
Er det ikke det du mener?

Jeg forstår desværre ikke den kode du har skrevet i bunden af din info side. Men jeg kan godt lave så det blir smit i din database hvem der er logget ind hvornår.

Men du kan altså gemme "bruger navnet" eller alt hvad du ellers har lyst til at gemme, i en session. dvs at du kan lave det sådan at HVIS bruger nr.1 er logget ind vises noget på en side, men ikke alt... hvis det er bruger nr.2 ser han ikke det nr.1 ser men han ser tilgengæld det nr.1 IKKE ser... Det kan du lave med sessions. Samtidig med du registrerer det i databasen...

Hvis ikke jeg har forstået dit spørgsmål må du prøve om du kan formulere dig på en anden måde. Selvom det er nemmere at oprette spørgsmålet igen. Jeg skal nok prøve at hjælpe!
Avatar billede ohs Nybegynder
03. november 2006 - 18:55 #13
Hejsa. For ikke at gøre det alt for indviklet har jeg derfor ville opdele spørgsmålet i flere dele.

Jeg vil godt prøve at forklare forløbet i hele systemet, og derefter tilbage til dit spørgsmål.

Systemet vil blive opbygget med 10 bruger, hvor hver bruger selv kan ændre sit password i sin admin som brugeren har adgang til. Brugeren kan ikke ændre sit brugernavn, da det ligger fast.

Administrator har adgang til alt.
Administratoren tildeler hver bruger adgang.
Administrator kan hele tiden se hvilke brugernavn, password, adgang de har også selvom brugeren selv skifter sit password.

Alt dette gøres direkte fra sin admin del.

Tilbage til dit spørgsmål.

Det stykke kode som du ikke forstår, er kun en meget lille del af hele login koden, som jeg har lagt på eksperten i tråden.

Det jeg vil vise med dette er, hvor jeg kan ændre login siden til at kalde en anden side.

Det som jeg efterspørger er, kan jeg ikke havde alle mine sider der, ( men kun tager den side som brugeren har adgang til )

Håber det gav et lidt bedre overblik.
Avatar billede h_thunbo Nybegynder
03. november 2006 - 22:49 #14
Okay nu er jeg mere med på hvad det er du er ude efter!
Jeg tror du skal ha' ret i at det er nemmest at lave det i en database. Der kan alle brugere logge ind og ændre password, med det brugernavn de nu har. Det kan de vist ikke med de koder jeg gav dig. Og du kan også let lave en side, hvor administrator kan overskue alt!
Jeg kan fortælle dig, at hvis jeg skal lave det her, bliver det også en udfordring for mig, men jeg tror godt jeg kan. Det bliver måske noget med at hver bruger i starten for tildelt en tilfældig kode første gang de logger ind, hvorefter de får at vide de skal ændre koden. Hmmm... Jeg tror ikke jeg vil gøre helt som du har gjort i dine koder. Jeg vil stadig bruge sessions og if-else og derefter sende brugerne videre til det de må se. Man kan jo på 0,01 sekund (eller hvert fald meget lidt!) sende en videre så brugeren aldrig når at se han har været på siden, hvis du forstår...

Skal jeg gøre et forsøg og lave hele dit system om? Jeg håber forresten ikke det hele haster, for det begynder da at trække en lille smule ud...
Avatar billede ohs Nybegynder
03. november 2006 - 23:02 #15
Hej h thunbo.
Okay nu er jeg mere med på hvad det er du er ude efter!
Jeg tror du skal ha' ret i at det er nemmest at lave det i en database. Der kan alle brugere logge ind og ændre password, med det brugernavn de nu har. Det kan de vist ikke med de koder jeg gav dig. Og du kan også let lave en side, hvor administrator kan overskue alt!

Alt hvad du skriver ovenover har jeg lavet og det virker perfekt det hele.

Det som jeg mangler er hvor alle mine sider skal indskrives i login koden.
Avatar billede h_thunbo Nybegynder
03. november 2006 - 23:08 #16
okay... De skal ikke alle sammen skrives i login koden...
De skal allesammen skrives i den side du sender dem til når de har logget ind, (muligvis den samme side) og det er klart nemmest med en session... øøhhhh gi mig 2 minutter til lige at gennemtænke det!
Avatar billede h_thunbo Nybegynder
03. november 2006 - 23:13 #17
jamen er det ikke bare at give dem en værdi i databasen når administrator opretter dem? Så giver man dem en "adgang" fx der har "1", "2" eller "3"?
så sir du bare:

if($adgang == 1)
{
?>
        <script type="text/javascript">
        setTimeout("location.href=\'administratorside.php\'", 100);
        </script>
<?
;}
else if($adgang == 2)
{
?>
        <script type="text/javascript">
        setTimeout("location.href=\'bruger.php\'", 100);
        </script>
<?
;}
else if($adgang == 3)
{
?>
        <script type="text/javascript">
        setTimeout("location.href=\'gaest.php\'", 100);
        </script>
<?
;}


Og i løbet af nul komma dut blir de sendt videre uden de når at se det...
Er det ikke bare sådan?
Avatar billede h_thunbo Nybegynder
03. november 2006 - 23:15 #18
Altså du laver en kolonne mere i din tabel i databasen, hvis det virkede uklart... og kalder den fx "adgang".
Avatar billede ohs Nybegynder
03. november 2006 - 23:24 #19
h thunbo: du misforstår. Alt dette er lavet.

Det er i login koden man skal kalde siden, og det er der mit problem ligger.
Avatar billede h_thunbo Nybegynder
03. november 2006 - 23:28 #20
jeg er bange for jeg må give op... jeg forstår ikke hvorfor du ikke kan bruge det?
Avatar billede ohs Nybegynder
03. november 2006 - 23:37 #21
h_thunbo: Tror desværre vi skal opgive at komme videre, da jeg har prøvet at forklare spørgsmålet flere gange, uden at man helt har forstået mit problem.

Takker mange gange for din indsats, selvom det ikke kunne lykkes.
Avatar billede ohs Nybegynder
03. november 2006 - 23:38 #22
Desværre uden held.
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