Seriøst problem med Session !

Tags:    php

Jeg har følgende loginscript:


<?php
session_start();

if ($_GET['step'] == 1) {

mysql_connect("localhost","bruger");
mysql_select_db("db");
$res = mysql_query("SELECT brugernavn, adgangskode, adminlvl, godkendt FROM brugere WHERE brugernavn = '". $_POST['brugernavn'] ."' AND adgangskode = '". $_POST['adgangskode'] ."'");

if (mysql_num_rows($res) == 0) {

// Hvis brugeren ikke findes
$_SESSION['bruger'] = "";
header("location: ../php/failed.php?fail=login");
exit();

} else {


while ($row = mysql_fetch_array($res)) {

// Hvis brugeren er godkendt
if ($row['godkendt'] = "ja") {
$_SESSION['bruger'] = "True";
$_SESSION['brugernavn'] = $row['brugernavn'];
$_SESSION['adminlvl'] = $row['adminlvl'];
//echo "SESSION['brugernavn']". $_SESSION['brugernavn'] ."<br>";
//echo "SESSION['adminlvl']". $_SESSION['adminlvl'] ."<br>";
//echo "SESSION['bruger']". $_SESSION['bruger'] ."<br>";
header("location: admin_main.php");
exit();

} else {
// Hvis brugeren ikke er godkendt
$_SESSION['bruger'] = "";
header("location: ../php/failed.php?fail=ikkegodkendt");
exit();

}
}
}

mysql_close();
}
?>


Hvis jeg udkskriver en Session på login.php indeholder Session'en noget! Videresender jeg brugeren til admin_main.php så er alle Sessions lige pludselig tomme !

admin_main.php



<?php
session_start();

//if (!isset($_SESSION['bruger'])) {
//Header("Location: ../include/login.php");
//} ?>

<?php Include("../php/parameters.php");
Include("../php/head.php");
?>

<h3 align="center">System :::</h3>
<br><br>

<b><i><?php echo $_GET['msg']; ?></i></b><br>
<?php
echo "session_id()". session_id() ."<br>";
echo "SESSION['brugernavn']". $_SESSION['brugernavn'] ."<br>";
echo "SESSION['adminlvl']". $_SESSION['adminlvl'] ."<br>";
echo "SESSION['bruger']". $_SESSION['bruger'] ."<br>";

if ($_SESSION['adminlvl'] == 1) {

?>
<b>Du har AdminLevel 1 rettigheder.</b>

<?php

echo $adminpos;

?>

<br><br>

<?php
}

elseif ($_SESSION['adminlvl'] == 2) {
?>
<b>Du har AdminLevel 2 rettigheder.</b>

<?php
echo $adminpos;
}

elseif ($_SESSION['adminlvl'] == 3) {
?>
<b>Du har AdminLevel 3 rettigheder.</b>
<?php
echo $adminpos;
}

elseif ($_SESSION['adminlvl'] == 4) {
?>
<b>Du har AdminLevel 4 rettigheder.</b>
<?php
echo $adminpos;
}

elseif ($_SESSION['adminlvl'] == 5) {
?>
<b>Du har AdminLevel 5 rettigheder.</b>
<p>Derfor kan du ingenting!!! :-) <br>
Muhahahaha... <br> Og alligevel ... Se her >->-></p>

<?php

echo $adminpos;
}
?>



<?php Include("../include/bottom.php"); ?>

Hvad gør jeg galt ????



2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Du skriver ikke hvilken server du bruger så jeg vil svare udfra min egen opsætning: windows og Apache server. Server er vers. 1.3.26 og PHP vers. 4.2.1

Umiddelbart gør du ikke noget forkert i din kode. Jeg har kørt den igennem på min egen apache server uden problemer.

Jeg tror du skal kigge på din session opsætning i din php.ini fil.


find session.save_path og sæt den til et bibliotek hvor du vil gemme sessionen eks: session.save_path = c:\\tmp (biblioteket skal eksistere

Hvor længe lever din session?

find session.cookie_lifetime og sæt den til et passende antal sekunder.

Husk at genstarte din server.

Jeg håber det hjælper.

Med venlig hilsen

Klaus Egvang



Hejsa, :)

Jeg har selv samme problem med Session i PHP, og har efterhånden været over 15 guides igennem om hvordan man "sætter" både apache og PHP op under Win.

Jeg har session dir sat til c:\\ tmp og biblioteket eksisterer. Jeg har enda forsøgt med c:/tmp

Levetiden har jeg sat til 25 sekunder, jeg har forsøgt med autostart af sessions. alt uden noget som helst ordentligt resultat.

JavaScript cookies virker, og det gør ASP cookies også på samme maskine, hvis jeg vælger alternativ opstart med XP/IIS-ASP kontra XP/APACHE-PHP.

Jeg har forsøgt at ændre:

session.use_trans_sid = 0 til session.use_trans_sid = 1

det virker sådan set fint nok, alt bliver gemt, og sendt via Querystring, men det virker kun så længe brugeren klikker på et link på den aktualle side, hvis han indtaster et filnavn i browser vinduet på sammen server, er datane væk.

Det er faktisk ved at være en smule frustrerende, især fordi "det bare er at ændre 2-5 linier i en ini fil".

Jeg er med på en lytter, og håber meget at svaret på dette problem er meget indlysende, og så nemt at man grimmer sig i flere uger over at man ikke selv tænkte på det :|

T_VARIABLE EXPECTED ';' not T_ELSE index.php at line 207[Redigeret d. 07/10-02 10:24:06 af Loke Krongaard Hansen]



t