Avatar billede flol Nybegynder
08. marts 2007 - 10:33 Der er 9 kommentarer og
1 løsning

problemmer med session

Hey har en side med et brugersystem, hvor man kan se de forskellige brugers profiler, nåh man logger ind bliver ens brugernavn gemt som en session = $SESSION['brugernavn'].
Det virker altsammen meget godt, MEN nåh du går ind på en oversigt over alle brugerne, eller går ind på en anden brugers profil, og vender tilbage til din login side, ændrer brugernavnet for den man er logget ind som, til den brugers profil man sidst var inde på. :/

hvorfor det?

koden login.php :

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

<? session_start(); ob_start(); ?>
<!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=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="../tekst.css">
<title>
<?
$session_bruger = $_SESSION['brugernavn'];
if($_SESSION['level'] == "admin" OR $_SESSION['level'] == "normal") {
    echo "Forside for " . $session_bruger;
}else{
    echo "Login";
}
?>
</title>

</head>

<body>
<center>
<?
if($_SESSION['level'] == "normal") {

   
    ?>
    Du er nu logget ind som <? echo $session_bruger; ?>!<br /><br />
    <a href="profil.php?brugernavn=<? echo $session_bruger; ?>">Profil</a> |
    <a href="allebrugere.php">Se alle brugere</a> |
    <a href="logaf.php">Log af</a>
    <?
    exit;

}elseif($_SESSION['level'] == "admin") {

    ?>
    Du er nu logget ind som admin <? echo $session_bruger; ?>!<br /><br />
    <a href="profil.php?brugernavn=<? echo $session_bruger; ?>">Profil</a> |
    <a href="allebrugere.php">Se alle brugere</a> |
    <a href="logaf.php">Log af</a><br /><br />
    <font color="red">Administrator:</font><br /><br />
    Spil:<br />
    <a href="../spilsys/opret.php">Opret spil</a> |
    <a href="../spilsys/slet.php">Slet spil</a><br /><br />
    Brugere:<br />
    <a href="../brugere/opretbruger.php">Opret bruger</a><br /><br />
    Debat:<br />
    <a href="../debat/opret-kategori.php">Opret/Slet kategori</a> |
    <a href="../debat/opret.php">Opret indlæg</a> | <br />
    <a href="../debat/slet-emner.php">Slet indlæg</a> |
    <a href="../debat/debat.php">gå til debat siden</a><br /><br />
    Chat:<br />
    <?
    exit;

}else{

    if($_GET['login'] == "true") {
       
        if(empty($_POST['bruger'])) { echo "Du skal indtaste dit brugernavn, og password før du trykker på login knappen!";
        }elseif(empty($_POST['pass'])) { echo "Du skal indtaste dit brugernavn, og password før du trykker på login knappen!";
        }else{
       
            include("../connect/connect.php");
           
            $bruger = $_POST['bruger'];
            $pass = $_POST['pass'];
           
            $resultat = mysql_query("SELECT * FROM brugere WHERE brugernavn = '$bruger' AND password = '$pass'");
            $row = mysql_fetch_assoc($resultat);
            $number = mysql_num_rows($resultat);
           
            $level = $row['level'];
            $login = $row['login'];
            $brugernavn = $row['brugernavn'];
           
            if($number == 1) {
               
                if($level == "admin") {
                $_SESSION['level'] = "admin";
                $_SESSION['brugernavn'] = $brugernavn;
                header("location: login.php");
                exit;
               
                }elseif($level == "normal") {
                $_SESSION['level'] = "normal";
                $_SESSION['brugernavn'] = $brugernavn;
                header("location: login.php");
                exit;
                }
            }else{
            echo "Forkerte oplysninger!";
            }
           
        }
    }
}
?>
<p>&nbsp;</p>
<form action="login.php?login=true" method="post">
    <table width="250" height="147" border="0" cellpadding="0" cellspacing="0">
        <tr>
            <td height="25" colspan="2" align="center" bgcolor="#F15B42" class="style1">Login:</td>
        </tr>
        <tr>
            <td width="83" height="34" class="style1" align="left">Brugernavn:</td>
            <td width="174" class="style1" align="center"><input type="text" name="bruger" /></td>
        </tr>
        <tr>
            <td width="83" height="34" class="style1" align="left">Password:</td>
            <td width="174" class="style1" align="center"><input type="password" name="pass" /></td>
        </tr>
        <tr>
            <td height="31" class="style1" align="left"></td>
            <td class="style1" align="center"><input type="submit" name="submit" value="Login" /></td>
        </tr>
          <tr>
            <td height="25" colspan="2" align="center" bgcolor="#FFCC9A" class="style1"><a href="opretbruger.php" target="indhold" class="style1">Registrer bruger</a></td>
        </tr>
    </table>
</form>
</center>

</body>
</html>
<? ob_end_flush(); ?>

----------------------------------------------------

og koden profil.php

-----------------------porfil.php-------------------

<? session_start(); ?>
<!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=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="../tekst.css">
<title>Profil for <? echo $_GET['brugernavn']; ?></title>
<style type="text/css">
<!--
body {
    margin-left: 0px;
    margin-right: 0px;
}
-->
</style></head>

<body>
<?
include("../connect/connect.php");

$query = mysql_query("SELECT * FROM brugere WHERE brugernavn = '$_GET[brugernavn]'") or die(mysql_error());
$row = mysql_fetch_assoc($query);

    $dag = $row['dag'];
    $maned = $row['maned'];
    $aar = $row['aar'];
    $navn = $row['navn'];
    $profil = $row['profil'];
    $billede = $row['billede'];
    $site = $row['site'];
    $tid = $row['tid'];
    $kon = $row['kon'];
    $brugernavn = $row['brugernavn'];

    $gammel = time() - mktime(0,0,0,$maned,$dag,$aar);
    $gammel /= 31536000;
    $alder = floor($gammel)
?>
<table cellpadding="0" cellspacing="0" border="0" width="400" align="center">
    <tr>
        <td colspan="2" align="center" width="400" height="30" bgcolor="#FF6633">
        <?
        if($kon == "dreng") { echo "D"; }else{ echo "P"; } echo "$alder $brugernavn"
        ?>
        </td>
    </tr>
    <tr>
        <td width="100" height="100"><img src="<? echo "$billede"; ?>" width="100" height="100" /></td>
        <td width="300" height="100" valign="top">
            &nbsp;Navn: <? echo "$navn"; ?><br />
            &nbsp;Alder: <? echo "$alder"; ?><br />
            <? if(empty($site)) {}else{ ?>&nbsp;Hjemmeside: <a href="<? echo "$site"; ?>" target="_blank"><? echo "$site"; ?></a><? } ?>
        </td>
    </tr>
    <tr>
        <td width="400" height="20" colspan="2" bgcolor="#FFCC99" align="left">
        <a href="profiltekst.php?brugernavn=<? echo "$brugernavn"; ?>" target="profil">Profil</a> |
        <a href="gestebog.php?modtager=<? echo "$brugernavn"; ?>" target="profil">Gæstebog</a>
        </td>
    </tr>
    <tr>
        <td colspan="2"><iframe name="profil" scrolling="yes" src="profiltekst.php?brugernavn=<? echo "$brugernavn"; ?>" width="400" height="300" frameborder="0"></iframe></td>
    </tr>
    <tr>
        <td colspan="2" width="400" height="20" bgcolor="#FFCC99">
        <?
        if($_SESSION['brugernavn'] == $_GET['brugernavn']) {
            ?>
            Kontrolpernel: <a href="personlig.php?brugernavn=<? echo "$brugernavn"; ?>" target="indhold">Personligt</a> |
            <a href="profilret.php?brugernavn=<? echo "$brugernavn"; ?>" target="indhold">Profil tekst</a>
            <?
        }
        ?>
        </td>
    </tr>
</table>
</body>
</html>

----------------------------------------------------

Nogen der vil hjælpe?
Avatar billede showsource Seniormester
08. marts 2007 - 10:42 #1
Fordi register_globals er On
Derfor, når du bruger
$brugernavn
bliver session sat til det.

Med en .htaccess kan du bruge

php_flag register_globals 0


Eller du skal bruge et andet navn for $brugernavn, f.eks. $username
Avatar billede jakobdo Ekspert
08. marts 2007 - 10:44 #2
Ellers kunne du også vende dig til, at når du gemmer noget i en session, så navngiv dem:
s_brugernavn altså: $_SESSION['s_brugernavn']
Avatar billede flol Nybegynder
08. marts 2007 - 10:54 #3
hmm det bliver i nød til at uddybbe lidt :/
hvis i gider?
Avatar billede showsource Seniormester
08. marts 2007 - 10:57 #4
Du sætter $_SESSION['brugernavn']

På profil.php bruger du
$brugernavn = $row['brugernavn'];

Når $_SESSION['brugernavn'] er sat, og register_globals er On, vil $_SESSION['brugernavn'] blive til $brugernavn når siden loades (profil.php)
Avatar billede flol Nybegynder
08. marts 2007 - 11:06 #5
okay mange tak :)
havde jeg aldrig fundet ud af selv.

skriv et svar!
Avatar billede showsource Seniormester
08. marts 2007 - 11:20 #6
Jeg er holdt op med at samle på point, ellers tak.
Avatar billede flol Nybegynder
08. marts 2007 - 11:31 #7
du skal da ha din points :)
Avatar billede showsource Seniormester
08. marts 2007 - 11:40 #8
Jeg får næsten ingen mails om indlæg i spm. hvis jeg bliver promedlem, ( blandt de 100 højest scorende på en måned ), og man kan jo desværre ikke spise eller ryge points!
Så smid et svar selv.
Avatar billede jakobdo Ekspert
08. marts 2007 - 11:51 #9
Hvis du retter p i points til et j, så kan man godt! :o)
Avatar billede flol Nybegynder
08. marts 2007 - 11:57 #10
hehe, okay iorden,
men tak for hjælpen.
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