PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Login / Logout 2mal klick Problem



FLash
04.12.2010, 03:36
Ich hab ein komisches Problem auf meiner seite und ich komm da einfach nicht hinter wieso..

Wenn ich mich einloggen will muss ich 2 mal den Login knopf drücken oder einmal die daten eingeben login drücken den tab schliessen einen neuen öffnen und dann bin ich auch eingeloggt.. das selbe beim logout knopf den muss ich auch 2 mal drücken..
wenn ich mich allerdings schon mal eingeloggt und ausgeloggt habe ohne die seite zu schliessen dann geht das einwandfrei..

ich glaub das letzte was ich in der Session.lib gefummelt habe war das kickout addon von stigma aber ich glaube das hatte damals trotzdem funktioniert.

wahrscheinlich ist das wieder irgendwas was banales was ich übersehn hab :frusty:

hier der login zum testen:
http://www.klickapig.de
*entfernt*

und meine session.lib


<?
/*
Datei : session.lib.php
Änderungen in dieser Datei nur dann vornehmen wenn Sie wissen was Sie tun!
*/
@session_start();

// Variabeln definieren
if (!isset($_SESSION['login'])) $_SESSION['login'] = "";
if (!isset($_SESSION['werber'])) $_SESSION['werber'] = "0";
if (!isset($_SESSION['uid'])) $_SESSION['uid'] = "0";
if (!isset($_POST['nickname'])) $_POST['nickname'] = "";
if (!isset($_POST['passwort'])) $_POST['passwort'] = "";
if (!isset($_POST['checkid'])) $_POST['checkid'] = "";
if (!isset($_POST['autologin'])) $_POST['autologin'] = "";
if (!isset($_GET['logout'])) $_GET['logout'] = "";
if (!isset($_GET['ref'])) $_GET['ref'] = "0";


if ($_SESSION['werber'] == "0") $_SESSION['werber'] = (int)$_GET['ref'];

// Seiteneinstellungen laden...
$pageconfig = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_seitenkonfig LIMIT 1"));

if ($pageconfig['wartung'] == 1 && $_SESSION['uid'] != $admin_id) {
setCookie('uid','',time()-86400*30);
setCookie('passwort','',time()-86400*30);
setCookie('autologin','',time()-86400*30);
$_SESSION['uid'] = "";
$_SESSION['passwort'] = "";
$_SESSION['login'] = "";
header ("location: ".$domain."/wartung.php");
die();
}


// Login
if ($_POST['checkid'] == 'Login' && $_POST['nickname'] && $_POST['passwort']) {

$_POST['nickname'] = addslashes($_POST['nickname']);

$login_check = db_query("SELECT k.uid,k.passwort,k.status,k.hinweis FROM
".$db_prefix."_userdaten u
LEFT JOIN ".$db_prefix."_kontodaten k ON k.uid=u.uid
WHERE u.nickname='".$_POST['nickname']."' AND k.passwort='".md5($_POST['passwort'])."' LIMIT 1");

if (mysql_num_rows($login_check)) {
$login_check = mysql_fetch_array($login_check);

// Wenn User noch nicht freigeschaltet!
if ($login_check['status'] == 0) {
$_SESSION['uid'] = "";
$_SESSION['passwort'] = "";
$_SESSION['login'] = "";
$_GET['content'] = '/error/kein_zutritt';
}

// Wenn beim User alles O.K. ist!
if ($login_check['status'] == 1) {
db_query("UPDATE ".$db_prefix."_kontodaten SET ksession_status = '0', ksession_time = '0', login_ip='".$ip."' , loginzeit='".time()."' WHERE uid=".$login_check['uid']." and passwort='".md5($_POST['passwort'])."'");
if ($_POST['autologin'] == 'true') {
setCookie('uid',$login_check['uid'],time()+86400*30);
setCookie('passwort',$login_check['passwort'],time()+86400*30);
setCookie('autologin','true',time()+86400*30);
}
$_SESSION['uid'] = $login_check['uid'];
$_SESSION['passwort'] = $login_check['passwort'];
$_SESSION['login'] = "true";
header ("location: ".$domain);
die();
}

// Wenn User gesperrt wurde!
if ($login_check['status'] == 2) {
$_SESSION['uid'] = "";
$_SESSION['passwort'] = "";
$_SESSION['login'] = "";
$_GET['content'] = '/error/user_gesperrt';
}

// Wenn es den User garnicht giebt
} else {
$_GET['content'] = '/error/kein_zutritt';
}

} else {
if ($_POST['checkid'] == 'Login') $_GET['content'] = '/error/kein_zutritt';
}

// Autologin
if ($_SESSION['login'] != 'true' && isset($_COOKIE['autologin']) && isset($_COOKIE['uid']) && isset($_COOKIE['passwort'])) {

// SecVMS change begin
$_COOKIE['uid'] = (int)$_COOKIE['uid'];
$_COOKIE['passwort'] = addslashes ($_COOKIE['passwort']);
// SecVMS change end

$login_check = db_query("SELECT `uid`,`passwort`,`status`,`hinweis`,`ksession_stat us` FROM ".$db_prefix."_kontodaten WHERE uid=".$_COOKIE['uid']." and passwort='".$_COOKIE['passwort']."' LIMIT 1");
if (mysql_num_rows($login_check)) {
$login_check = mysql_fetch_array($login_check);
if ($login_check['status'] == 1) {
db_query("UPDATE ".$db_prefix."_kontodaten login_ip='".$ip."' , loginzeit='".time()."' WHERE uid=".$_COOKIE['uid']." and passwort='".$_COOKIE['passwort']."'");
$_SESSION['uid'] = $login_check['uid'];
$_SESSION['passwort'] = $login_check['passwort'];
$_SESSION['login'] = "true";
}elseif($login_check['ksession_status'] == 2){
setCookie('uid','',time()-86400*30);
setCookie('passwort','',time()-86400*30);
setCookie('autologin','',time()-86400*30);
$_SESSION['uid'] = "";
$_SESSION['passwort'] = "";
$_SESSION['login'] = "";
header ("location: ".$domain);
die();
}
}
}

// Logout
if ($_GET['logout'] == 'true') {
setCookie('uid','',time()-86400*30);
setCookie('passwort','',time()-86400*30);
setCookie('autologin','',time()-86400*30);
$_SESSION['uid'] = "";
$_SESSION['passwort'] = "";
$_SESSION['login'] = "";
header ("location: ".$domain);
die();
}
if (isset ($_SESSION['uid']) && isset ($_SESSION['passwort']) && !empty ($_SESSION['uid']) && !empty ($_SESSION['passwort'])){
db_query ("UPDATE ".$db_prefix."_kontodaten SET last_active = ".time()." WHERE uid = ".$_SESSION['uid']." AND passwort = '".$_SESSION['passwort']."' LIMIT 1");
}
?>

Hardy
04.12.2010, 08:37
Das Problem kann mEn eigentlich nur sein wenn man in der functions.lib die Domain ohne www. einträgt.

look nämlich hier:

header ("location: ".$domain);Vorher hat er dir Session id und alles sone späße gegeben und dann leitet er dich von www. -> ohne www. um.

FLash
04.12.2010, 10:03
Jo du hast recht.
Nur bin ich da immer ohne www draufgegangen und hab jetzt gesehen der leitet mich tatsächlich zu www weiter..
dann ist es ja eigentlich gar kein problem.
Viellen Herzlichen Dank :thumb:

cr00sy
04.12.2010, 21:44
Wenn du das jetzt änderst zu http:// (http://seite.de)klickapig.de (http://www.klickapig.de/) haben die leute wo auf http://www. (http://www.Seite.de)klickapig.de (http://www.klickapig.de/) das selbe probleme. Mach am besten über die .htaccess eine weiterleitung zu www. rein, dann sollte keiner mehr dieses problem haben.

Sollte so funktionieren:


RewriteEngine On
RewriteCond %{HTTP_HOST} ^klickapig.de$ [NC]
RewriteRule ^(.*) http://www.klickapig.de/$1 [R=301]
und halt in der functions.lib http://www.klickapig.de eintragen.

FLash
04.12.2010, 22:00
danke, hab das jetzt eingebaut, funktioniert auch

Xenon
04.12.2010, 22:16
<?PHP
if ( substr ( $_SERVER['SERVER_NAME'], 0, 4 ) != 'www.' )
{
header ( 'location: http://www.' . $_SERVER['SERVER_NAME'] );
exit ();
}
?>