Avatar billede Slettet bruger
28. maj 2010 - 18:20 Der er 6 kommentarer og
1 løsning

Login sessions med personlige visninger?

Hej Alle!

Jeg har lavet en hjemmeside som fungerer fint med login og med offentlig data samt privat bruger data, som kun kan ses ved login.

Nu har jeg så fået stillet opgaven at der skal være data som kun et enkelt bruger-login fra sql-databasen kan se. Er der en hurtig og nem løsning på dette?

Jeg bruger følgende kode til at vise "hemmeligt" data:

<?php
//if logged in you can edit data
if(!$_SESSION['id']):           
?>

<?php
else:
?>

DATA SOM KUN LOGIN KAN SE

<?php
endif;
?>
Avatar billede cronaldo Nybegynder
28. maj 2010 - 20:35 #1
det er satme ikke smart at kalde den $_SESSION['id'] .. Ville godt kunne snyde mig hvis jeg sad og programmerede en sen nat ;) (kunne forveksles med PHPSESSID..)


Men nå - glem nu det.. Hvordan bestemmer du i databasen hvilket data der kun må ses af én bruger? Det kræver uddybning.. Hvis du fx har en nyhedsdatabase kunne det jo være sådan her:

<?php
//if logged in you can edit data
if(!$_SESSION['id'])
{
    $foresp = mysql_query( "SELECT * FROM news WHERE id = '".mysql_real_escape_string($_GET['id'])."' ORDER BY id DESC LIMIT 1" );
    $data = mysql_fetch_array( $foresp );
   
    if(isset($data[$feltnavn]) && !empty($data[$feltnavn]))
    {
        if($_SESSION['id'] == $data[$feltnavn])
        {
            //Hvad der skal ske hvis det KUN er den her bruger der må se det
        } else {
            //Fejlmeddelelse   
        }
    } else {
        //Hvis alle brugere, der er logget ind må se den
    }
}
else
{
    // Hvis ALLE brugere må se det.
}
?>
Avatar billede cronaldo Nybegynder
28. maj 2010 - 20:36 #2
og så kan du jo bare sætte $feltnavn = det, som dit felt hedder :)
Avatar billede Slettet bruger
29. maj 2010 - 21:51 #3
Som jeg forstår det så vil det der resultere i at der er noget data som kun den bruger der er logged ind der kan se det.?? det som jeg skal bruge er følgende: jeg har 2 brugere i en sql database (admin & user) og der er så nogle data (fx. et billede) som kun admin må kunne se - men som en logged ind "user" ikke på kunne se. min login.php ser sådan ud, hvis det hjælper: <?php

define('INCLUDE_CHECK',true);
require 'connect.php';
require 'functions.php';
// Those two files can be included only if INCLUDE_CHECK is defined


session_name('tzLogin');
// Starting the session

session_set_cookie_params(2*7*24*60*60);
// Making the cookie live for 2 weeks

session_start();

if($_SESSION['id'] && !isset($_COOKIE['tzRemember']) && !$_SESSION['rememberMe'])
{
    // If you are logged in, but you don't have the tzRemember cookie (browser restart)
    // and you have not checked the rememberMe checkbox:

    $_SESSION = array();
    session_destroy();
   
    // Destroy the session
}


if(isset($_GET['logoff']))
{
    $_SESSION = array();
    session_destroy();
   
    header("Location: index.php");
    exit;
}

if($_POST['submit']=='Login')
{
    // Checking whether the Login form has been submitted
   
    $err = array();
    // Will hold our errors
   
   
    if(!$_POST['username'] || !$_POST['password'])
        $err[] = '<center><label class="alert">All the fields must be filled in!</label></center>';
   
    if(!count($err))
    {
        $_POST['username'] = mysql_real_escape_string($_POST['username']);
        $_POST['password'] = mysql_real_escape_string($_POST['password']);
        $_POST['rememberMe'] = (int)$_POST['rememberMe'];
       
        // Escaping all input data

        $row = mysql_fetch_assoc(mysql_query("SELECT id,usr FROM tz_members WHERE usr='{$_POST['username']}' AND pass='".md5($_POST['password'])."'"));

        if($row['usr'])
        {
            // If everything is OK login
           
            $_SESSION['usr']=$row['usr'];
            $_SESSION['id'] = $row['id'];
            $_SESSION['rememberMe'] = $_POST['rememberMe'];
           
            // Store some data in the session
           
            setcookie('tzRemember',$_POST['rememberMe']);
           
            header("Location: index.php");
            exit;
        }
        else $err[]='<center><label class="alert">Wrong username and/or password!</label></center><br />';
    }
   
    if($err)
    $_SESSION['msg']['login-err'] = implode('<br />',$err);
    // Save the error messages in the session

    header("Location: login.php");
    exit;
}


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

   
   
</head>
<body>

<div id="header">
    <div class="tablewidth">
        <div id="malibur"><a href="http://www.malibur.dk">malibur</a></div>
    </div>
</div>

<div class="tablewidth2">
<div class="centering"></div>
</div>

<div id="top" class="tablewidth">   
    <div id="maliburlogo"></div>
    <div id="websitename">mcisland.dk</div>
</div>


<div id="logincontainer" class="tablewidth">
                <!-- Login Form -->
                <form action="" method="post" class="logstyle">
                   
                    <?php
                       
                        if($_SESSION['msg']['login-err'])
                        {
                            echo '<div class="err">'.$_SESSION['msg']['login-err'].'</div>';
                            unset($_SESSION['msg']['login-err']);
                        }
                    ?>
                    <p>
                    <label for="username" class="titlestyle">Username:</label>
                    <input type="text" class="inputstyle" name="username" id="username" value="" />
                    </p>
                    <p>
                    <label for="password" class="titlestyle">Password:</label>
                    <input type="password" class="inputstyle" name="password" id="password"/>
                    </p>
                    <p>
                    <label class="rememberme"><input name="rememberMe" id="rememberMe" type="checkbox" checked="checked" value="1" /> &nbsp;Remember me</label>
                    <input type="submit" class="buttonstyle" name="submit" value="Login" />
                    </p>
                </form>
   
    <br/>
</div>

</body>
Avatar billede Slettet bruger
29. maj 2010 - 21:58 #4
det som der skal ske (som jeg forstår det) er:

<?php

if(!$_SESSION['id']): 
?>

<?php
elseif {HVIS $_SESSION['id'] and user=admin}:
?>

DATA SOM KUN ADMIN KAN SE

<?php
endif;
?>
________________________________________________
altså, hvis der ikke er åbnet session så hvis intet
ellers
Hvis der er åbnet session og user = admin så hvis data, som kun admin kan se
ellers
Hvis noget tredje

... any thoughts?
Avatar billede cronaldo Nybegynder
30. maj 2010 - 02:28 #5
Jamen du kan jo bare lave et tjek om $_SESSION['usr'] == "admin" ved den info som kun admins må se ? (jeg går ud fra, at det er 'usr'-variablen der holder info om hvorvidt man er admin!?) :)
Avatar billede Slettet bruger
31. maj 2010 - 09:30 #6
tusind tak - det var bare det jeg manglede.. lav svar hvis du vil ha' point
Avatar billede cronaldo Nybegynder
31. maj 2010 - 12:35 #7
Hehe det var så lidt :)
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