Avatar billede dang3r Nybegynder
08. januar 2005 - 00:13 Der er 10 kommentarer og
1 løsning

Sessions+loginform?

Jeg vil lægge ud med at sige, at dette sikkert har været spurgt om flere gange før. Håber i kan bære over med mig :)
Mit problem består i, at jeg har menu included() på alle mine sider. Den vil jeg gerne have en loginform i, hvor man, hvis ikke man allerede er logget ind, kan gøre dette. Det skal foregå vha. sessions, og brugernes navn+kode er gemt i en mySql DB.

Håber jeg har gjort det klart hvad det er, jeg ikke forstår :)

Mvh Kim.
Avatar billede morteeart Nybegynder
08. januar 2005 - 00:20 #1
bliver noget ala

<?
session_start();
if(!$_SESSION['brugernavn']) // eller whf din session variable nu hedder
{
echo "loginform";
echo "<form>....";
}
?>
Avatar billede dang3r Nybegynder
08. januar 2005 - 00:28 #2
Tjaa.. Det er jo nemt at sige :P
..Men jeg syns jeg har prøvet.. jeg blir bare forvirret af det DB-tjek jeg skal lave og at der skal være 3 "modes": 1.Logget ind, 2.Forkert kode, 3.ikke loget ind (altså en form)
Avatar billede stefmeister Nybegynder
08. januar 2005 - 00:35 #3
er du HELT på bar bund ang. login? eller hvordan?


dette er utestet. men burde virke...

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

<?
session_start();

if($_POST['username'] && $_POST['password']) {

$con = mysql_connect( "localhost", "BRUGER", "PASS" );
mysql_select_db( "DATABASE" );

$sql = "SELECT BRUGERNAVN,KODEORD FROM BRUGERTABEL WHERE BRUGERNAVN = '".$_POST['username']."'";
$qh = mysql_query( $sql ) or die( mysql_error() );
while ( $row = mysql_fetch_assoc( $qh ) ) {

$bruger = $row[BRUGERNAVN];
$password = $row[KODEORD];

if($_POST['username'] == $bruger && $_POST['password'] == $password) {

$_SESSION['login'] = "ok";

} else {

unset($_SESSION['login']);

}

}

} else {

?>


  <form action="<? PHP_SELF; ?>" method="POST">
Brugernavn:<br>
  <input type="text" name="username" size="20"><br>
Password:<br>
  <input type="password" name="password" size="20"><br>
  <input type="submit" value="Login">
  </form>

<?

}

?>
Avatar billede dang3r Nybegynder
08. januar 2005 - 00:41 #4
Arj.. ikke helt bar bund..
Men jeg tæsker lige på det i mojn... jeg er sur på php i aften :)
Og tak for svarene, jeg ser lige om jeg kan finde ud af at "integrere" det i mit site ;)
Avatar billede dang3r Nybegynder
08. januar 2005 - 16:42 #5
Ok.. Nu har jeg fået skidtet til at virke som det skal!

Næste problem: Hvordan tjekker jeg nemmest på mine sider, om brugeren er logget ind, og om han har tilladelse til at se dem..?

Bare sådan, eller?:
if($_SESSION['login'] == ok){
echo "du har tilladelse";
} else {
"stop! forbudt!";
}
Avatar billede dang3r Nybegynder
08. januar 2005 - 17:12 #6
Hmm: Jeg var lidt for hurtig til at sige at det virkede!
Mine $_SESSION[]-variable bliver ikke "overført" til næste side.. og jeg kan ikke gennemskue hvorfor :S
Nogen der kan?

--------sesslogin.php (inkluderet i top af alle sider)--------
<?php

session_start();
header("Cache-control: private");
$_SESSION = array();

//------Databaseinfo----------
$db_user = "censur";
$db_database = "censur";
$db_pwd = "censur";
$db_host = "censur";
//----------------------------


$fejlmsg = "pgstart";

if(isset($_POST['login']) && isset($_POST['brugernavn']) && isset($_POST['adgangskode'])){

    $forb = mysql_connect($db_host, $db_user, $db_pwd) or die(mysql_error());
    mysql_select_db($db_database, $forb) or die(mysql_error());
    $udtrak = mysql_query("SELECT userid, username, password FROM members WHERE password='".$_POST['adgangskode']."'");
    while($userdata = mysql_fetch_row($udtrak)){
        $ok_id = $userdata[0];
        $ok_bruger = $userdata[1];
        $ok_pwd = $userdata[2];
    }
   
    if($_POST['brugernavn'] == $ok_bruger && $_POST['adgangskode'] == $ok_pwd){
        $_SESSION['logged_in'] = true;
        $_SESSION['id'] = $ok_id;
        $_SESSION['bruger'] = $ok_bruger;
        unset($fejlmsg);

    }
    else{
        $fejlmsg = "Fejl!<br>Brugernavn og kodeord passer ikke sammen.";
    }
   
}
elseif(isset($_GET['logof'])){
    unset($_SESSION['logged_in']);
    unset($_SESSION['id']);
    unset($_SESSION['bruger']);
    session_destroy();
    $fejlmsg = "Du er nu logget ud!";
}
else{
    unset($fejlmsg);
}

?>
--------slut sesslogin.php----------

---------tilfældigside.php------------
<?php

require_once("sesslogin.php");


if(isset($_SESSION['id']) && isset($_SESSION['bruger'])){
    echo "Du er logget ind som ".$_SESSION['bruger'];
    echo "<br><a href=\"".$_SERVER['PHP_SELF']."?logof=true\">Log ud</a>";
}
else {
    echo $fejlmsg;
?>
    <form method="post" action="index.php">
    <input type="hidden" name="login" value="1">
    Brugernavn:<br><input type="text" name="brugernavn" class="loginformitem" size="20"><br>
    Password:<br><input type="password" name="adgangskode" class="loginformitem" size="20"><br>
    <center><input type="submit" value="Log ind" class="loginformitem"></center>
    </form>
<?php
}
?>     

--------slut tilfældigside.php-------
Avatar billede dang3r Nybegynder
08. januar 2005 - 18:18 #7
Ingen? Kom nuu hjælp please..:)
Avatar billede morteeart Nybegynder
08. januar 2005 - 18:32 #8
fordi at du har glemt session_start(); på alle de sider hvor sesion info'en skal følge med. :P

Det er altså svært at hjælp, hvis man ikke kender problemet :~)
Avatar billede dang3r Nybegynder
08. januar 2005 - 22:33 #9
Hmm hvis jeg kendte problemet kunne jeg jo nemt løse det :P

..Men session_start() er da på alle sider? Den er jo inkluderet? Eller skal den stå FØR inkludering?

og tak for svar :)
Avatar billede dang3r Nybegynder
08. januar 2005 - 22:56 #10
Hmm det er ikk fordi jeg har glemt session_start()..
Avatar billede dang3r Nybegynder
08. januar 2005 - 23:49 #11
Arhgf! Jeg har fundet det :S

linien: $_SESSION = array(); ødelægger det lissom.. heh.. den kommer fra et eksempel som jeg copy/pastede fra i dovenskab.. :(
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