Hallo ich hab ein kleines Problem mit meinem Login Script und zwar verwend ich cookies und Sessions nun hab ich das Problem das ich sofort wieder ausgelogt bin wenn ich auf eine andere Seite gehe, ich habe mittlerweile herausgefunden das es was mit der Session Id zu tun hat das diese scheins immer in cookies gespeichert werden. Nun wird ja meistens die Sid dann über die url übertragen. doch wie realisier ich es das er dank der sid in der url die session daten sich holt um eingelogt zu bleiben.
Hier mal mein kompletter code von der global.php
PHP-Code:
<?php
error_reporting(E_ALL);
session_start ();
//Import von config.inc.php und der MYSQL Klasse
require_once("./inc/config.inc.php");
require_once("./inc/functions_sql.inc.php");
// Copyright Zeitraum feststellen
$start_jahr = 2006; // hier legst du das Datum fest ab wann er es dastellen soll
$akt_jahr = date("Y"); // hier wird das Aktuelle Jahr ermittelt
if($akt_jahr <= $start_jahr) {
$jahr = $start_jahr;
}else{
$jahr = "$start_jahr bis $akt_jahr";
}
//Datenbankverbindung herstellen
$phpversion = phpversion();
$db = new db($sqlhost,$sqluser,$sqlpassword,$sqldb,$phpversion);
//Optionen aus der Datenbank auslesen
$option = $db->query_first("SELECT * FROM v_option");
$pagetitle = $option['title'];
$option['reg_mail'] = utf8_decode($option['reg_mail']);
$option['reg_mail'] = addslashes($option['reg_mail']);
$option['reg_title'] = utf8_decode($option['reg_title']);
$option['send_mail_text'] = utf8_decode($option['send_mail_text']);
$option['send_mail_text'] = addslashes($option['send_mail_text']);
eval("\$option['send_mail_text']=\"". $option['send_mail_text'] ."\";");
$option['send_mail_title'] = utf8_decode($option['send_mail_title']);
$option['activity_mail'] = utf8_decode($option['activity_mail']);
$option['activity_mail'] = addslashes($option['activity_mail']);
$option['activity_title'] = utf8_decode($option['activity_title']);
//Import von functions.inc.php
require_once("./inc/functions.inc.php");
//Neue Session starten wenn Cookies vorhanden
if (isset($_COOKIE["v_user_id"]) && isset($_COOKIE["v_user_pw"]) && isset($_COOKIE["v_user_name"]) && !isset($_SESSION["v_user_id"]) && !isset($_SESSION["v_user_pw"]) && !isset($_SESSION["v_user_name"])) {
$userexist = $db->query_first("SELECT username, password FROM v_user WHERE id = $_COOKIE[v_user_id]");
if ($userexist['username'] == $_COOKIE['v_user_name'] && $userexist['password'] == $_COOKIE['v_user_pw']) {
$_SESSION["v_user_id"] = $_COOKIE['v_user_id'];
$_SESSION["v_user_name"] = $_COOKIE['v_user_name'];
$_SESSION["v_user_pw"] = $_COOKIE['v_user_pw'];
}else {
setcookie('v_user_id','',time()-(3600*24*$option['cookieday']));
setcookie('v_user_pw', '',time()-(3600*24*$option['cookieday']));
setcookie('v_user_name', '',time()-(3600*24*$option['cookieday']));
}
}
//Überprüfen ob Session vorhanden
if (isset($_SESSION['v_user_id'])) {
//Definierung von Variablen in der Template Klasse
$user = $db->query_first("SELECT username, mail, group_id FROM v_user WHERE id = $_SESSION[v_user_id]");
$username = $user['username'];
//Gruppenrechte aus der Datenbank auslesen
$grouprights = $db->query_first("SELECT * FROM v_user_groups_rights WHERE group_id = $user[group_id]");
}
//Import von der Template Klasse
require_once("./inc/functions_tpl.inc.php");
//Fehlerausgabe auf 0 setzen
$fehler = '0';
$timestamp = time();
$timeclock = date('H:i', $timestamp);
$timedate = date('H:i', $timestamp);
eval ("\$header = \"".$tpl->gettemplate("header")."\";");
?>
und hier die login.php
PHP-Code:
<?php
$login = '';
$sitetitle = 'Anmelden';
$img = 'loginL';
require_once('./global.php');
if(isset($_POST['submit'])) {
$password = sha1(md5($_POST['password']));
$data = $db->query_first("SELECT * FROM v_user WHERE username = '".$_POST['username']."' AND password = '".$password."'");
$data2 = $db->query_first("SELECT username, activity FROM v_user WHERE username = '".$_POST['username']."'");
if ($_POST['username'] == '') {
$fehler = 1;
$message = '[*]Sie haben keinen Benutzernamen angegeben.';
}elseif ('0' == $data2['activity']){
$fehler = 1;
$message = '[*]Ihr Benutzername wurde noch nicht aktiviert.';
}elseif ($_POST['username'] != $data2['username']){
$fehler = 1;
$message = '[*]Sie haben einen ungültigen Benutzernamen angegeben.';
}elseif ($password != $data['password']){
$fehler = 1;
$message = '[*]Sie haben ein ungültiges Kennwort angegeben.';
}
if ($password == $data['password'] && $_POST['username'] == $data['username'] && $fehler == '0') {
// Benutzerdaten in ein Array auslesen.
// Sessionvariablen erstellen und registrieren
$_SESSION['v_user_id'] = $data['id'];
$_SESSION['v_user_name'] = $data['username'];
$_SESSION['v_user_pw'] = $data['password'];
if (isset($_POST['cookies'])) {
setcookie('v_user_id',$data['id'],time()+(3600*24*$option['cookieday']));
setcookie('v_user_pw',$data['password'],time()+(3600*24*$option['cookieday']));
setcookie('v_user_name',$data['username'],time()+(3600*24*$option['cookieday']));
}
header ('Location: ./index.php');
}
}
eval ("\$page = \"".$tpl->gettemplate("login")."\";");
eval("\$tpl->dooutput(\"".$tpl->gettemplate("index")."\");");
?>