Avatar billede flatov Nybegynder
16. november 2005 - 00:18 Der er 3 kommentarer og
1 løsning

Problemer med SESSION

Når jeg trykker på et link der får en fil til at blive included ændre $_SESSION[username] sig - Hvis det har betydning ændre den sig til den første bruger i systemet.

Menu:

<?
include("mysql.php");

$profilinfo = mysql_query("select id, hold from brugersystem_profiler WHERE username = '$_SESSION[username]'");
while($r=mysql_fetch_array($profilinfo)){


    include("logout.php");
    echo "Bruger: <b>$_SESSION[username]</b><br /><br />";
    echo "<a href=\"?side=rediger_profil&username=$_SESSION[username]\" class=\"Link\">Rediger Profil</a><br />";
    echo "<a href=\"?side=rediger_clan&hold=$r[hold]\" class=\"Link\">Rediger Clan</a><br />";
    echo "<a href=\"?side=skriv_besked&username=$_SESSION[username]\" class=\"Link\">Skriv Besked</a><br /><br />";
}


$antalinput = mysql_query("select count(*) as antal from brugersystem_beskeder where modtager='$_SESSION[username]' AND ny='1'") or die(mysql_error());
while($row=mysql_fetch_array($antalinput)){

    echo("Inbox: <a href=\"?side=inbox&username=$_SESSION[username]\" class=\"Link\">$row[antal]</a>");
}

?>
    <br /><form action="<?php $PHP_SELF ?>" method="post">
    <input type="submit" name="logout" value="Log Ud" class="Button">


--------------------
fejlen sker når jeg trykker på dette link:

echo "<a href=\"?side=skriv_besked&username=$_SESSION[username]\" class=\"Link\">Skriv Besked</a><br /><br />";

og dette bliver includet:


<?
if (isset($_SESSION[username])) {

if($_POST['send_besked'])
    {
    if($_POST[modtager] == $_SESSION[username]) {
        echo "Du kan ikke sende en besked til dig selv";
        } else {
            include("mysql.php");
$afsender = addslashes($_SESSION[afsender]);
$besked = addslashes($_POST[besked]);
$emne = addslashes($_POST[emne]);
$sql = mysql_query("INSERT INTO brugersystem_beskeder SET modtager='$_POST[modtager]',

afsender='$_SESSION[username]',

besked='$_POST[besked]',

emne='$_POST[emne]',

dato=NOW()") or die(mysql_error());

        if($sql)    {
            echo "<span>Beskeden er nu sendt !</span><br /><br />";
        }
}
}
if ($_GET['username']) {



$skriv_besked = mysql_query("select * from brugersystem_profiler WHERE username ='$_SESSION[username]'");

while($r=mysql_fetch_array($skriv_besked)){

extract($r);



}



?>

<form action="?side=skriv_besked&username=<? echo "$_SESSION[username]"; ?>" method="post">

<table border="0" cellpadding="0" cellspacing="5">
    <tr>
        <td colspan="2" class="HeadlineFont"><? echo "$_SESSION[username]"; ?></td>
    </tr>
    <tr>
        <td colspan="2"><hr /></td>
    </tr>
    <tr>
        <td><b>Modtager:</b></td>
        <td>
            <select class="Input" name="modtager">
<?
    include("../mysql.php");
    $getinfo = mysql_query("select * from brugersystem_profiler order by username asc");
    while($r=mysql_fetch_array($getinfo)){
    extract($r);

    echo "<option value=\"$username\">$username</option>";
    }
?>
            </select>
        </td>
    </tr>
    <tr>
        <td><b>Emne:</b></td>
        <td><input type="text" class="Input" name="emne" size="25"></td>
    </tr>
    <tr>   
        <td><b>Besked:</b></td>
        <td><textarea class="Input" name="besked" rows="15" cols="55"></textarea></td>
    </tr>
    <tr>    <td></td>
        <td><input class="Button" type="submit" name="send_besked" value="Opdater"></td>
    </tr>
</table>

</form>

<?


} else {
    echo "Profil ikke fundet";
    }


} else {
    echo "Du har ikke rettighederne til denne side";
    }
?>


Som sagt så ændre den hvad sessionen er sat til, jeg har prøvet at side og rode med det.

Det skal dog siges, at dette ikke sker når jeg kører det lokalt på min maskine, men først når jeg kører den via mit webhotel !

Håber i kan hjælpe
Avatar billede flatov Nybegynder
16. november 2005 - 00:20 #1
session_start();

sker i index.php, hvor de der filer bliver included
Avatar billede showsource Seniormester
16. november 2005 - 12:03 #2
Det er sikkert fordi serveren kører med register_globals = On

echo "<option value=\"$username\">$username</option>";
vil derfor automatisk lave $_SESSION[username]n om.

Prøv med: (du skal vel kun hente brugernavn?)

    while($r=mysql_fetch_array($getinfo)){
    echo "<option value=\"$r[username]\">$r[username]</option>";
    }
Avatar billede flatov Nybegynder
16. november 2005 - 15:02 #3
Hvad vil det ændre det der ?

Jeg skal hente alle brugerne fra databasen, så man kan vælge hvem man vil sende til.

men vil det sige at register_globals skal slås fra? Eller findes der en anden løsning !?
Avatar billede flatov Nybegynder
16. november 2005 - 18:16 #4
Ved ikke hvad det var, omskrev bare koden en smule og nu virker det, men tak for forsøget.
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

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