Hi Leutz,
ich hab ein kleines Problem mit nem Login-System dass ursprünglich aus dem Codeschnipsel-Forum stammt!
Hab schon überall hier nach ner Lösung gesucht und mir mal alle Login-scripte angeschaut aber ich fin die Lösung nicht! Sorry dass der Betreig so lang ist aber kürzer geb glaub net.
Zuerst die Dateien:
checkin.php (Zum Login)
class.checkin.php (nur die wichtigsten funktionen)
usrmrg.php
Mein Problem:
Wie ihr seht Versuche ich in der Datei usrmrg.php zwei Sessions auszugeben! Allerdings werden mir diese nicht ausgegeben!
Verändere ich in der Datei checkin.php Zeile 19
zu
und entferne aus der Datei usrmrg.php die Zeile
so gibt er mir die die Session-Werte aus !!!
Was muss ich ändern, damit diese Werteausgabe auch mit dem header-Befehl funktioniert? Brauche das ganze mit dem Headerbefehl, damit ich gleichzeitig mehrere Seiten an unterschiedlichen stellen meiner Seite aufrufen kann, die jeweils geschützt sind und userdaten enthalten!
ich hab ein kleines Problem mit nem Login-System dass ursprünglich aus dem Codeschnipsel-Forum stammt!
Hab schon überall hier nach ner Lösung gesucht und mir mal alle Login-scripte angeschaut aber ich fin die Lösung nicht! Sorry dass der Betreig so lang ist aber kürzer geb glaub net.
EDIT:
Anmerkung: Beim Login funktioniert Alles, kommen keine Fehler! Allerdings habe ich durch eine Fehlerabfrage in der function login_ok() in class.checkin.php herausgefunden, dass die Werte in der function login() nicht registriert werden oder zumindest in der function login_ok() nicht ankommen... why?
Bitte helft mir! Ich weiß steht viel hier aber das Prob is sicher simpel...
Hoffe ihr könnt mir helfen!
Wäre euch sehr dankbar!
Zuerst die Dateien:
checkin.php (Zum Login)
PHP-Code:
<?php
session_start();
include_once("inc/display_functions.php");
if(!isset($_POST['username']) || !isset($_POST['password'])){
display_LoginForm();
}
else{
include_once("inc/connect2db.php");
include_once("inc/base_functions.php");
include_once("inc/class/class.checkin.php");
$User = new member();
$User->member_open();
$User_OK = $User->check_user($_POST['username'],$_POST['password']);
if("OK" == $User_OK){
$User->login();
$User->member_close();
unset($User);
header("location:usrmrg.php");
die;
}
else{
$User->kill_session();
echo("<div align=\"center\" class=\"err_msg\">$User_OK</div>");
display_LoginForm();
}
$User->member_close();
unset($User);
}
?>
PHP-Code:
<?php
Wenn check_user funktionniert hat, muß diese Methode aufgerufen werden
*/
function login(){
$theId = $this->user_data['userid'];
$sql_query = "UPDATE oberstufe_user SET UserSession = '".session_id()."', block_stamp = '0', log_attempts = 0, last_log = now() WHERE userid = $theId";
mysql_query($sql_query,$this->dbcnx);
session_register('userid');
session_register('check_str');
session_register('net');
session_register('user_agent');
session_register('username');
session_register('logDate');
$_SESSION['userid'] = $this->user_data['userid'];
$_SESSION['check_str'] = $this->user_data['check_str'];
$_SESSION['net'] = $this->_mk_net();
$_SESSION['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
$_SESSION['username'] = $this->user_data['username'];
$_SESSION['logDate'] = $this->user_data['last_log'];
}
/* .... */
function login_OK(){
if(!session_is_registered('userid') || !session_is_registered('check_str') || !session_is_registered('net') || !session_is_registered('user_agent')){
$err = "Fehler 7";
return $err;
}
if("" == $_SESSION['userid'] || !is_numeric($_SESSION['userid'])){
$err = "Fehler 1";
recho $err;
}
$sql_query = "SELECT UserSession,check_str FROM oberstufe_user WHERE userid = $_SESSION[userid]";
$dbsth = mysql_query($sql_query,$this->dbcnx);
if(1 != mysql_affected_rows($this->dbcnx)) {
$err = "Fehler 2";
echo $err;
}
$data = mysql_fetch_array($dbsth);
mysql_free_result($dbsth);
if($data['UserSession'] != session_id()){
$err = "Fehler 3";
echo $err;
}
if($data['check_str'] != $_SESSION['check_str']){
$err = "Fehler 4";
echo $err;
}
if($_SESSION['net'] != $this->_mk_net()){
$err = "Fehler 5";
echo $err;
}
if($_SESSION['user_agent'] != $_SERVER['HTTP_USER_AGENT']){
$err = "Fehler 6";
echo $err;
}
return true;
}
?>
PHP-Code:
<?php
include_once("inc/connect2db.php");
require_once("inc/base_functions.php");
require_once("inc/class/class.checkin.php");
$User = new member(); /*Neuen Member anlegen */
$User->member_open(); /*Datenbankverbindung herstellen */
if(!$User->login_OK()){ /*Sehen ob Login OK ist */
/*Wenn nicht fliegt der gute Junge raus */
$User->kill_session();
$User->member_close();
unset($User);
header("location:404.php"); /*Unsere Fehlerseite */
die;
}
?>
Inhalt /*Zum Beispiel links zum ändern der Userdaten */
<?php
echo $_SESSION['username'];
echo $_SESSION['userid'];
?>
Wie ihr seht Versuche ich in der Datei usrmrg.php zwei Sessions auszugeben! Allerdings werden mir diese nicht ausgegeben!
Verändere ich in der Datei checkin.php Zeile 19
PHP-Code:
header("location: usrmrg.php");
PHP-Code:
include("usrmrg.php");
PHP-Code:
session_start();
Was muss ich ändern, damit diese Werteausgabe auch mit dem header-Befehl funktioniert? Brauche das ganze mit dem Headerbefehl, damit ich gleichzeitig mehrere Seiten an unterschiedlichen stellen meiner Seite aufrufen kann, die jeweils geschützt sind und userdaten enthalten!
Kommentar