Session ved login fungere ikke for alle brugere
Hejsa allesammen.Jeg har haft stillet dette spørgsmål før, men uden at få løst mit problem, så nu vil jeg lige prøve igen.
Jeg har lavet nedenstående login, koden har jeg fundet på nettet, og så skrevet det en del om, efter min bedste overbevisning.
Problemmet er at login ikke fungere for alle brugere, og jeg forstår ikke hvorfor.
De brugere der har problemmer overlever login'et på flg. måde..
Når de indtaster deres brugernavn og password i Bruger.php bliver de budt velkommen og får deres vagtdag oplyst, det fortæller mig at bruger.php og settings.php fungere, og det fortæller også at sessions bliver sat i settings.php.
Men når de så forsøger at åbne en side der kræver login, returnere function check_login() false, svarende til at de forskellige sessions ikke er sat eller er blevet destroyet, dette bliver bekræftet hvis forsøger med print_r($_SESSION).
Jeg håber der nogen der kan hjælpe mig på rette spor.
Hilsen
Finn
bruger.php
<?php
$dbhost = "host";
$dbuser = "user";
$dbpass = "password";
$database = "database";
include("Lockfiles/settings.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function setlogin(login){
location.href='set.php?login='+login+''};
</script>
<style type="text/css">
<!--
#Layer2 {
position:absolute;
left:0px;
top:0px;
width:200px;
height:185px;
z-index:2;
}
#Layer3 {
position:absolute;
left:0px;
top:0px;
width:200px;
height:185px;
z-index:2;
}
.style5 {
color: #FFFFFF;
font-weight: bold;
}
body,td,th {
font-family: Tahoma;
color: #FFFFFF;
font-size: 12px;
}
a:visited {
color: #FFFFCC;
}
.style7 {font-size: 14px}
-->
</style>
</head>
<body>
<?
if (isset($_COOKIE['logg'])) {
$chk = 'checked';
}else{
$chk = '';
}
if(false == check_login()){
?>
<div id="Layer2" style="background-image:url(Images/Login.gif); filter:alpha(opacity=40);-moz-opacity:.4;opacity:.4;"></div>
<div id="Layer3">
<?
if(isset($_SESSION["besked"])) {
echo $_SESSION["besked"];
unset($_SESSION["besked"]);
}
?>
<table width="200" border="0" cellspacing="1" >
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post" class="style7">
<tr>
<td colspan="4" height="15"></td>
</tr>
<tr>
<td width="10%" rowspan="8"></td>
<td width="85%" colspan="2" ><span class="style5">Login:</span></td>
<td width="5%" rowspan="8"></td>
</tr>
<tr>
<td colspan="2">Brugernavn</td>
</tr>
<tr>
<td colspan="2"><input type="text" name="brugernavn" id="brugernavn" value="<? echo $logg[0] ?>"></td>
</tr>
<tr>
<td colspan="2">Password</td>
</tr>
<tr>
<td colspan="2"><input type="password" name="password" id="password" value="<? echo $logg[1] ?>"></td>
</tr>
<tr>
<td>
<input type="submit" value="Login" name="login"></td>
<td><a href="Loginhelp.html" target="Contents" onMouseOver="window.status='Klik på spørgsmåltegnet, for at få hjælp !'; return true" onmouseout="window.status=''; return true"><img src="Images/question.gif" border="0"></a></td>
</tr>
<tr>
<td colspan="2"><a href="fguser.php" target="Contents">Har du glemt dit password ?</a></td>
</tr>
</form>
</table>
</div>
<?
}else{
// Brugeren er logget ind, lav en log ud knap
?>
<div id="Layer2" style="background-image:url(Images/Logout.gif); filter:alpha(opacity=60);-moz-opacity:.6;opacity:.6;"></div>
<div id="Layer3" >
<table width="200" border="0" cellspacing="1" align="center">
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
<tr>
<td rowspan="12" width="5%"></td>
<td width="90%" height="10"></td>
<td rowspan="12" width="5%"></td>
</tr>
<tr>
<td ><div align="center">Velkommen</div></td>
</tr>
<tr>
<td><div align="center"><? echo $_SESSION["Navn"]; ?></div></td>
</tr>
<tr>
<td height="8"></td>
</tr>
<tr>
<td align="center" ><span class="style7">HUSK DIN VAGTDAG</span></td>
</tr>
<tr>
<td align="center"><span class="style7"><? echo $_SESSION["Vagt"]; ?></span></td>
</tr>
<tr>
<td><div align="center">
<input name="logud" type="submit" value="Log ud" onClick="
parent.document.getElementById('Contents').src = 'HavnenA.html';">
</div></td>
</tr>
<tr>
<td align="center" height="8"></td>
</tr>
<tr>
<td align="center"><? echo '<input type="checkbox" name="chkbx2" value="1" onclick="setlogin(\''.$_SESSION["No"].'\');"' . $chk . '>';?><label>Husk mig!</label> </td>
</tr>
<tr>
<td align="center" height="8"></td>
</tr>
<tr>
<td align="center">
<? if($_SESSION["Admin"] == 1){ echo '<a href="Lockfiles/admin.php" target="Contents">Administrator</a>';}?> </td>
</tr>
</form>
</table>
</div>
<?
} // end false tjek_login
?>
</body>
</html>
settings.php
<?php
session_start();
function check_login() {
if(isset($_SESSION["user"], $_SESSION["ip"]) && $_SESSION["ip"] == $_SERVER["REMOTE_ADDR"]) {
return true;
}
return false;
}
function login($brugernavn,$password){
global $dbhost;
global $dbuser;
global $dbpass;
global $database;
$db = @mysql_pconnect($dbhost, $dbuser, $dbpass) or die ("Kunne desværre ikke forbinde til databasen! ".$dbuser);
@mysql_select_db($database, $db) or die ("Kunne desværre ikke forbinde til valgte database!");
$sql = 'SELECT s.Id, s.Nummer,s.Login, s.Password, s.Navn, s.Admin, b.Berth, b.Vagt FROM sejler s
LEFT JOIN berth b ON s.Nummer = b.Client
WHERE Login = \''.$brugernavn.'\' AND Password = \''.$password.'\'';
$check = mysql_query($sql) or die ("Sql fejl" );
if(mysql_num_rows($check) != 0){
$users = mysql_fetch_array($check);
if ($users['Berth'] <= ''){
$sql = 'SELECT s.Id, s.Nummer,s.Login, s.Password, s.Navn, s.Admin, b.Berth, b.Vagt FROM sejler s
LEFT JOIN berth b ON s.Nummer = b.Lejer
WHERE Login = \''.$brugernavn.'\' AND Password = \''.$password.'\'';
$check = mysql_query($sql) or die ("Sql fejl" );
$users = mysql_fetch_array($check);
}
$_SESSION["user"] = $brugernavn;
$_SESSION["ip"] = $_SERVER["REMOTE_ADDR"];
$_SESSION["Navn"] = $users['Navn'];
$_SESSION["No"] = $users['Nummer'];
$_SESSION["Plads"] = $users['Berth'];
$_SESSION["ClId"] = $users['Id'];
$_SESSION["Admin"] = $users['Admin'];
$Vagt = $users['Vagt'];
$Vagt1 = split('
- ',$Vagt);
$_SESSION["Vagt"] = strftime("%A %d-%m-%Y", mktime(0,0,0,$Vagt1[1],$Vagt1[2],$Vagt1[0]));
$date = date('d-m-Y');
$date = split('
- ',$date);
return true;
}else{
$_SESSION["besked"] = "Ingen bruger fundet";
return false;
}
}
$default_text = "Forkert bruger og/eller password!!!";
if(isset($_POST["logud"])) {
$_SESSION = array();
session_destroy();
global $logg;
unset($logg);
}
if(isset($_POST["login"])) {
if(($_POST["brugernavn"] > "" ) && ($_POST["password"] > "")) {
login($_POST["brugernavn"],$_POST["password"]);
}
}
?>
Nedenstående function, bliver bruger til at check login.
include("settings.php");
if (check_login() == false){
include("error.html");
exit;
} else {
}
