Avatar billede krk Nybegynder
13. marts 2006 - 16:20 Der er 13 kommentarer og
2 løsninger

login på et helt site

Hvordan laver jeg en login funktion på et helt site?
Mit site er opbygget med en index.php og så nogle undersider. Sådan her:
<?php require("db_connect.php"); ?>
<table>
  <tr valign='top'>
    <td><?php require("../req/menu2.php"); ?> </td>
    <td>
        <?php $page = $_REQUEST['page'];     
        if(!$page){
            require("main.php");
        }else{
            require("content/$page.php");
        }
        ?>
    </td>
  </tr>

Hvordan laver jeg en login der virker på alle sider og som man ikke kan snyde sig omkring.
Jeg vil helst undgå at ændre i opbygningen af sitet idet sitet allerede er lavet.
Avatar billede gf Nybegynder
13. marts 2006 - 16:29 #1
Hej

Jeg gør det med session. Du kan enten lave "hard codede" brugernavn og password eller hente dem i en database.

hvis de matcher sætter du session variabel og tjekker på hver side eller du kan includere en fil f.eks logintjek.php i starten af hver side logintjek indeholder så koden der tjekker om session er sat.

<?php
session_start();
if($_SESSION["admin"] == ok) {

Din html kode her

}?>
Avatar billede krk Nybegynder
13. marts 2006 - 16:32 #2
nu er jeg ikke super god til det med session.
Kan du hjælpe mig lidt mere på vej :-)
Avatar billede ducks Nybegynder
13. marts 2006 - 16:54 #3
på den side, hvor du kontrollerer brugernavn og adgangskode osv, tilføjer du følg. kode til toppen:

<? session_start(); ?>

I det område, hvor brugeren er blevet godkendt og logged ind, tilføjer du:

$_SESSION["login"] = true;

Ved alle de sider der skal være beskyttede, skriver du gf's kode i toppen af dem:

<?
  session_start();
  if ($_SESSION["login"]!=true)
    header("Location: side_der_vises_til_dem_der_ikke_er_logged_ind.php");
?>


Og så skal alle filerne selvfølgelig være .php
Avatar billede papi Juniormester
13. marts 2006 - 16:56 #4
tvivler på <?php
session_start();
if($_SESSION["admin"] == ok) {

Din html kode her

}?>

kommer til at virke.. du må ikke skrive html inde i <? tagget
Avatar billede krk Nybegynder
13. marts 2006 - 17:00 #5
ducks. Det lyder ganske simpelt det du skriver og så aligevel ikke ;-)
Jeg forstår ikke helt din sætning: I det område, hvor brugeren er blevet godkendt og logged ind, tilføjer du:

$_SESSION["login"] = true;

Hvor er det lige du mener det er? Er det på samme side som login-formularen?
når først brugeren er logget ind skal han have adgang til hele sitet
Avatar billede krk Nybegynder
13. marts 2006 - 17:03 #6
mener du at $_SESSION["login"] = true; skal stå på alle de sider som brugeren har adgang til.
Avatar billede gf Nybegynder
13. marts 2006 - 17:39 #7
Hej igen

Din start side skal du hvis, brugeren har skrevet det rigtige brugernavn og adgangskode starte session og sætte en session variabel.
<?php
session_start();
$_SESSION["admin"] = "ok";
?>

på de sider du vil beskytte skriver du:

session_start();
if($_SESSION["admin"] == ok) {?>

Din html kode her

<?php } ?>

Sådan fungerer det som udgangspunkt, så er der noget at arbejde videre med.

mvh gf
Avatar billede ducks Nybegynder
13. marts 2006 - 19:21 #8
Jeg går ud fra at du kontrollerer adgangskoderne via mysql?

Så på den side login formen sender brugeren videre til, altså action="vidersendt.php", skal indeholde $_SESSION["login"]=true;

Ser vel nogenlunde sådan ud:

<?php
$conn = mysql_connect("server", "brugernavn", "kodeord");
mysql_select_db("database");
$result = mysql_fetch_assoc(mysql_query("select * from tabel where brugernavn=$_POST['brugernavn'] and password=$_POST['password']"));
if ($result) {
  $_SESSION["login"]=true;
}
mysql_close($conn);
?>
Avatar billede krk Nybegynder
14. marts 2006 - 10:46 #9
Håber I stadig er der for jeg kan ikke rigtig få det til at virke. Jeg sender koden på min index.php, main.php (login form + validering af login) og login_ok.php (siden man bliver sendt til når man har logget ind)
Eksemplet kan ses på http://kryt.dk/test_lafodan/login (brugernavn=a, password=s)

index.php:
<HTML>
<HEAD>
<title></title>
</HEAD>
<BODY>
<? session_start(); ?>
<table width='100%' height='100%'  border='0' align='center' >
  <tr valign='top'>
    <td width='175' class='tdpersonale' ><?php require("menu2.php"); ?></td>
    <td valign="top" ><table width="100%" border='0' align='center' >
    <?php
        $page = $_REQUEST['page'];
       
        if(!$page){
            require("req/main.php");
        }else{
            require("content/$page.php");
        }
        ?>
        </table>
    </td>
  </tr>
 
<?php       
mysql_close($link);
?>
</BODY>
</HTML>


main.php:
<?php
            require("login_funktioner.php");
?>

<?php

////////////////////////////////////////////////////////////////////////////////
// HER STARTER SCRIPTET
////////////////////////////////////////////////////////////////////////////////

// ÅBNER EN FORBINDELSE TIL DATABASEN
aabn_forbindelse_og_vaelgdb();
if ($_POST['send']) {
    if(isset($_GET['action']) && $_GET['action'] == "main") {
        if($_POST['login_navn'] == "") {
          print "<script type=\"text/javascript\">alert(\"'Brugernavn mangler'\");</script>";
          print '<script>history.back(-1);</script>';
         
        } elseif($_POST['login_kode'] == "") {
          print "<script type=\"text/javascript\">alert(\"'Password mangler'\");</script>";
          print '<script>history.back(-1);</script>';
        } else {
          #SQL STRENG
          $tjek = "
          SELECT navn, kode
          FROM login_admin
          WHERE navn = '".$_POST['login_navn']."'
            AND kode = '".$_POST['login_kode']."'";
          $return_from_query = getDataFromSqlQuery($tjek);
          if($return_from_query[0]['navn'] == $_POST['login_navn'] && $return_from_query[0]['kode'] == $_POST['login_kode']){
          $_SESSION["login"]=true;
    ?>
        <?php
            require("content/login_ok.php");
        ?>
    <?
            } else {
            print "<script type=\"text/javascript\">alert(\"'Brugernavn eller password er ikke korrekt!'\");</script>";
              print '<script>history.back(-1);</script>';
            }
        }
    }

}
else{
    ?>
    <FORM ACTION="<?=basename($_SERVER['PHP_SELF']);?>?action=main" METHOD="POST">
                <table border="0" class="tdform">
                    <tr>
                        <td>Brugernavn: </td><td><INPUT NAME="login_navn" TYPE="text"></td>
                    </tr>
                    <tr>
                        <td>Password: </td><td><INPUT NAME="login_kode" TYPE="text"><BR /></td>
                    </tr>
                    <tr>
                        <td><INPUT TYPE="submit" VALUE="Login" NAME="send"><BR></td><td>&nbsp;</td>
                       
                    </tr>           
                </table>
                </FORM>
    <?php
}
// LUKKER FORBINDELSEN TIL DATABASEN
luk_forbindelse();
?>



login_ok.php:
<?
  session_start();
  if ($_SESSION["login"]!=true)
    header("not_login.php");
?>

<?php
print"Du er nu logget på";
?>
Avatar billede krk Nybegynder
14. marts 2006 - 13:40 #10
jeg har fået det til at virke nu.
Tak for hjælpen begge to (ducks og qf)
I henter bare point
Avatar billede ducks Nybegynder
20. marts 2006 - 14:41 #11
Henter? Det er dig der skal uddele dem ;)
Avatar billede krk Nybegynder
20. marts 2006 - 15:13 #12
mangler lige et svar fra qf, så skal jeg nok uddele ;-)
Avatar billede gf Nybegynder
20. marts 2006 - 20:03 #13
svar fra mig :)
Avatar billede krk Nybegynder
20. marts 2006 - 23:56 #14
tak for hjælpen
Avatar billede gf Nybegynder
21. marts 2006 - 06:45 #15
tak for points
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