Guten Abend zusammen,
momentan stehe ich so ziemlich mit meinen sessions auf dem Schlauch. Folgendes Problem:
Ein User postet im Forum einen Link zu einer internen Seite (z.B. http://www.xy.net). Der Link wird wunderbar erkannt, funktioniert auch, also alles einwandfrei. Postet der User den selben Link ohne das "www" (http://xy.net) wird die session auf einmal nicht mehr erkannt, also jeder ausgesperrt, der die URL aufruft.
In der Server-Konfiguration habe ich schon herum gespielt deswegen und session.cookie-path anzupassen versucht. Laut session.set_cookie_params bedeutet ein Schrägstrich in der Konfi aber, dass alle Pfade der Domain gültig sind. So ist es auch in der Konfiguration notiert:
Folglich muss ich irgendwo bei den sessions ziemlich geschlampt haben. Entsprechende Scripts habe ich eben zusammengefasst, falls jemand Zeit hat, mit den Augen da drüber zu fliegen.
session anlegen beim Login:
Aufruf der Sitzung / des Logins in der header.php:
Irgendwo muss ich ja gepfuscht haben, wenn der Server auch nach apache2 restart die Cookies nur mit vorgestelltem "www" in der URL akzeptiert. Mir will aber partout nicht einfallen, wo das sein sollte. Über einen winzigen Hinweis wäre ich also dankbar. Sollte einer aus der Haut fahren aufgrund einer bösen Sicherheitslücke, darf er die auch gerne anprangern dass ich die weg machen kann.
Liebe Grüße,
Don
momentan stehe ich so ziemlich mit meinen sessions auf dem Schlauch. Folgendes Problem:
Ein User postet im Forum einen Link zu einer internen Seite (z.B. http://www.xy.net). Der Link wird wunderbar erkannt, funktioniert auch, also alles einwandfrei. Postet der User den selben Link ohne das "www" (http://xy.net) wird die session auf einmal nicht mehr erkannt, also jeder ausgesperrt, der die URL aufruft.
In der Server-Konfiguration habe ich schon herum gespielt deswegen und session.cookie-path anzupassen versucht. Laut session.set_cookie_params bedeutet ein Schrägstrich in der Konfi aber, dass alle Pfade der Domain gültig sind. So ist es auch in der Konfiguration notiert:
Code:
session.cookie_path = /
session anlegen beim Login:
PHP-Code:
//Check if user exists and account is valid
$Username = $_POST['Username'];
$Password = $_POST['Password'];
$Password = hash('sha512', $Password); //Encrypt password
$Get_UserData = mysql_query("SELECT `UID`, `Valid`, `Active`, `Group` FROM `users` WHERE `Username` = '$Username' AND `Password` = '$Password'");
$UID_Fetch = mysql_fetch_assoc($Get_UserData);
$UID = $UID_Fetch['UID'];
... //Validate inserts, user data & agents, blocks, etc.
//IF valid user, create session and load data
mysql_query("INSERT INTO `sessions` (`SessionID`, `UID`, `IP`, `Status`, `Start_Timestamp`, `End_Timestamp`, `Last_Activity`, `Last_Activity_Timestamp`, `UAID`) VALUES (NULL, '$UID', '$IP', '0', '$Timestamp', '0', '0', '$Timestamp', '$Client_ID')");
$Get_CMC_Count = mysql_query("SELECT `Access_Count` FROM `user_agents` WHERE `UAID` = '$Client_ID' LIMIT 1");
$CMC_Count = mysql_fetch_assoc($Get_CMC_Count);
$CMC_Count = $CMC_Count['Access_Count'] + 1;
mysql_query("UPDATE `user_agents` SET `Access_Count` = '$CMC_Count', `Screen` = '$New_Screen_Size' WHERE `UAID` = '$Client_ID' LIMIT 1");
$Last_Activity = 'ABORT';
$CountSessionsNew = $CountSessions + 1;
$_SESSION['Name'] = $Username;
$_SESSION['ID'] = $CountSessionsNew;
$User_Group = $UID_Fetch['Group'];
//Get user rights
include('system/get_user_rights.inc.php');
//Get additional login data
$Get_Login_Requests = mysql_query("SELECT * FROM `user_settings` WHERE `UID` = '$UID'");
$Login_Requests = mysql_fetch_assoc($Get_Login_Requests);
$Area = $Login_Requests['Login_Homepage'];
if(empty($Area)) {
$Area = 'Main_Title';
}
//Run through header queries again after login to fetch important user relevant data
require('system/header.php');
PHP-Code:
//Check for active session
$Username = $_SESSION['Name'];
$Get_UData = mysql_query("SELECT `UID`, `Group` FROM `users` WHERE `Username` = '$Username' LIMIT 1");
$Get_UData = mysql_fetch_assoc($Get_UData);
$UID = $Get_UData['UID'];
...
if(empty($UID)) {//IF no data could be loaded from database
$UID = 0;
$Username = 'Besucher';
}
if($UID != 0) {
$Login = TRUE;
}
Liebe Grüße,
Don
Kommentar