webForumDet fria alternativet

Sessionsvärde ändras av sig själv???

PHP

1 svar · 220 visningar · startad av aasah

Medlem sedan mars 20034 471 inlägg
Frågan#1

Rubriken är lite småknäpp men det är inte så lätt att beskriva problemet så kortfattat. Jag håller på att skriva en funktion som ska kunna användas för att ge omdömen åt diverse saker på min site. (En "rate"-funktion.)

Och då inträffar följande....
Jag får upp min form och fyller i den (är inloggad som admin).
Skriptet laddar om och infon lagras.
Sedan laddar jag sidan en gång till, varvid innehållet i Rated skrivs ut med min nylagrade åsikt i:

user id date rate
1 1 2004-11-08 3

Eftersom jag ser tabellen måste $_SESSION["su"] vara admin. Hur i självaste Katrineholm kan det då lagras en 1:a i user-kolumnen???

Tabellen där dessa sparas innehåller bla:

user VARCHAR(20) NOT NULL,
FOREIGN KEY (user) REFERENCES Member (user),

Jag har förvisso ingen 1 i min Member.... (men däremot admin).

Funktionen innehåller bla

$user = $_SESSION["su"];
//Sätt $a-c
$q = "INSERT INTO Rated  (user, id, date, rate)
         VALUES ('$user', $a, '$b', $c)";
$res = mysql_query($q) or die("Rate: ".sorryDB());
if (mysql_affected_rows() != 1)
     header("Location: message.php?mess=Something unexpected occured... Try again later.");
else header("Location: message.php?mess=Your rate has been stored. Thank you! :-)");

För ögonblicket anropas detta från samma fil och däri har jag en liten koll som säger att om filen körs av mig så ska innehållet i Rated skrivas ut. Dvs

if (/*form ifylld*/) rateCW(1); // funktionen ovan
else {
   printCWRateForm(1, $_SERVER['PHP_SELF']); //Skriver ut formen
   if (isLoggedIn() && ($_SESSION["su"] = 'admin'))
       printRated(); //Skriver ut innehållet.
}

Någon som fattar vad som händer och varför???

Medlem sedan mars 20034 471 inlägg
#2

Re: Sessionsvärde ändras av sig själv???

Jag har hittat felet även om jag inte förstår det:

if (/*form ifylld*/) rateCW(1); 
else {
   printCWRateForm(1, $_SERVER['PHP_SELF']); 
   if (isLoggedIn() && ($_SESSION["su"] = 'admin')) //<--- = inte == !!!
       printRated(); }

Men varför blir värdet 1 just??? :q

Och HUR kan min MySQL databas köpa att lägga in 1 i en kolumn som är foreign key??? :q

266 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)