jag håller på med ett webforum med inloggnings funktion. Inloggningen funkar bara om det finns en anvädare i forumer om det finns mera användare så hoppar ens session mellan varandra.
Typ och jag loggade in med dxm för någon månad sedan och sen loggar in med arne så blir man dxm efter ett tag.
Har testat med massor av folk. det blir alltid så.
jag har även testat med 2 olika webservar
koden som skall registrera session är så här
<?
require ("./variablar.php");
mysql_connect("$server","$anvandare","$losenord");
mysql_select_db("$databas");
{
$pass = $_POST["password"];
$query = "SELECT id, username, losen FROM sys_forum_users WHERE username='$username' AND losen=md5('$pass')";
$res = mysql_query($query) or die ("Kan inte läsa från databasen!");
$row = mysql_fetch_array($res);
if (isset($row['id']))
{
session_start();
$_SESSION["uid"] = $row['id'];
$_SESSION["username"] = $row['username'];
$tiden = date("Y-m-d H:i:s");
$query = "UPDATE sys_forum_users SET senast_inloggad = '$tiden' WHERE ID = '$userid'";
mysql_query("$query");
Header("Location: includes/logged.php");
}
}
?>
orkar inte skriva kode men kan ske kan hjälpa med annat...
testa, att hämnta ut ett id som sätts till en session
denna session görs inget annat med utan att kolla om man är inloggad eller inte, på detta sätt borde de inte kunna röra varandra, testa kanske funkar
Typ och jag loggade in med dxm för någon månad sedan och sen loggar in med arne så blir man dxm efter ett tag.
Det där låter som en variabelkrock när du har register_globals=On.
Om du har register_globals=On så måste du se till att du har unika index för dina sessionsvariabler. Indexet får alltså inte finnas som ett variabelnamn eller index för t.ex POST- eller GET-variabler.
Själv brukar jag i dessa fall sätta ett litet sess_ före indexet:
Du har en sessionsvariabel $_SESSION['username']. Är register_globals=On kan du också nå denna sessionsvariabel med $username.
På en sida har du ett forumlär där ett fält har namnet 'username', alternativt har du en länk <a href="sida.php?username=dmx">.
Om du skickar den senare varianten till ett skript så finns variabeln i $_GET['username'], vilken också kan nås med $username om register_globals=On.
Nu börjar du komma in på stora krockrisker då variablerna är desamma.
Skulle du dessutom göra så här:
$username = $_GET['username'];
Då är det troligtvis kört för dig.
Därför är det viktigt, när du har register_globals=On, att ha ett unikt ord som index i din sessionsvariabel. Ett ord som du inte har som variabel i dina skript, ej heller som index för GET-, POST- eller COOKIE-variabler.
Vill man inte jobba på att komma ihåg vilka variabler man använder, så gör man det enkelt för sig genom att t.ex sätta sess_ i början på alla index för sessionsvariabler. Se mitt föregående inlägg.
Och detta kan som sagt ske vid variabelkrock. Har du provat att byta namn på dina sessionsvariabler så att du får ett index som garanterat inte används någon annanstans?
271 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e