Jag har lite problem jag har gjort nästan exakt som inkfich eller va han hette men de funka ändå inte. Den går liksom förbi do_login.php men man får inte stanna på start.php utan den skicka en till sidan som man komma till om man inte ha anget lösen osv.
<?PHP
//do_login.php
// include ("mysql.inc.php"); //Startar MySQL
$link = mysql_connect("localhost","XXX","XXX") or die ("Kan inte ansluta till databasen!");
mysql_select_db("test");
$user = $_POST["user"];
$pass = $_POST["pass"];
if (isset($user) && isset($pass)) {
$query = "SELECT id, username FROM user WHERE username='$user' AND password=PASSWORD('$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();
$uid = $row['id'];
$uname = $row['username'];
session_register("uid", "uname");
// NYTT 2 RADER
$HTTP_SESSION_VARS["uid"] = $row['id'];
$HTTP_SESSION_VARS["username"] = $row['username'];
header("Location: start.php");
}
}
else {
echo("Något blev fel.");
}
?>
Tack för svaret Darren men tyvärr så funkar det inte. ja funderar om de är någe fel på session registreringen eller om det är någe fel på koden som är först på start.php sidan. Någon som har en ide!!
Ser inga direkta felaktigheter i din kod, dock är de två nya raderna onödiga.
För just sessioner kan PHP-versionen vara väsentlig. Skulle kunna slänga upp några varianter för att testa, men de hänger på vilken version du kör.
Har konstaterat i olika forum tidigare att det verkar vara problem med sessioner i PHP 4.2.2 (eventuellt var det möjligtvis 4.1.2).
En sak du kan kolla upp i inställningarna är att session.save_path leder till en existerande katalog och att skrivrättigheter är satta för denna katalog.
Under vissa förutsättningar kan man vara tvungen att föra med sig sessions-id i url-en. Då får man göra som Darren visade, förutom att du får lägga till det frågetecken han missade:
På mitt webbhotell räknas $uid som $_SESSION["uid"] men inte på min dator ÄVEN om jag har register_globals = On. Det är något som inte stämmer. Tror det är en bugg i php för Windows. På mitt webbhotell (som kör linux) räknas också $user som $_COOKIE["user"] men inte hemma. Förstår inte. Men prova detta får vi se om det fungerar:
<?PHP
//do_login.php
// include ("mysql.inc.php"); //Startar MySQL
$link = mysql_connect("localhost","XXX","XXX") or die ("Kan inte ansluta till databasen!");
mysql_select_db("test");
$user = $_POST["user"];
$pass = $_POST["pass"];
if (isset($user) && isset($pass)) {
$query = "SELECT id, username FROM user WHERE username='$user' AND password=PASSWORD('$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();
$uid = $row['id'];
$uname = $row['username'];
session_register("uid", "uname");
// NYTT 2 RADER
$HTTP_SESSION_VARS["uid"] = $row['id'];
$HTTP_SESSION_VARS["username"] = $row['username'];
header("Location: start.php");
}
}
else {
echo("Något blev fel.");
}
?>
Nu när jag tittar igen upptäckte jag just en sak. I do_login.php så sätter du sessionvariabeln till $HTTP_SESSION_VARS["username"] men i start.php till "uname". Dessa ska väl iallafall vara samma? :)
130 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17