Sessionübergabe net

Headymaster

Erfahrenes Mitglied
Sessionübergabe geht nicht

Hallo!


habe mir ein Usersystem gecodet....so das prob ist....das auf meinem Heimrechner alles klappt.

Sprich der User kann sich einloggen...die Session wird gesetzt und das Loginfeld wird durch das usermenu ersetzt......

So nun lade ich alles ins Internet auf nen webserver...dort funktioniert der Login wiederum nicht.

index.php:
PHP:
<?php
ob_start();
session_start();
include("inc/parser.php");
include("inc/bbcode.php");
ob_end_flush();
?>


user/index.php:
PHP:
<?php
########Buffer Start###############
ob_start();
session_start();
###################################

// weiter PHP code für register usw

if($_GET['do'] == "login")
{
  $loginuser = "SELECT ". 
        "*". 
        "FROM ". 
        "user ". 
        "WHERE ". 
        "(login_name = '".$_POST["login"]."') AND ". 
        "(password = '".md5 ($_POST["password"])."')";
  $logindo = mysql_query ($loginuser);
  $logincount = mysql_num_rows($logindo);
		
		if ($logincount > 0)
             {
		 
		// Benutzerdaten in ein Array auslesen. 
             $logindata = mysql_fetch_array ($logindo); 

             // Sessionvariablen erstellen und registrieren 
             $_SESSION["user_id"] = $logindata["id"]; 
             $_SESSION["user_login"] = $logindata["login_name"]; 
             $_SESSION["user_pwd"] = $logindata["password"]; 
             $_SESSION["user_rights"] = $logindata["rights"];
	  
	         session_write_close();
	         $_GET['fehler'] = 3;
	         include("error/index.php");
	         $index = showtpl("error/error_msg", array("CSS" => "$css",
                                                       "msg" => "$error_msg",
										               "redirect_url" => "index.php?id=3&do=news_show"));
             } 
             else 
             {
			 $_GET['fehler'] = 4;
			 include("error/index.php");
             $index = showtpl("error/error_msg", array("CSS" => "$css",
                                                       "msg" => "$error_msg",
										               "redirect_url" => "index.php?id=3&do=news_show"));;
             }
}

//....weiterer phpcode
?>


inc/bbcode.php:
PHP:
<?php
#####Ausgabe Puffern#######
ob_start();
session_start();
ini_set('session.use_trans_sid', 1);
###########################
####FUNKTIONEN#############
###########################
// funktion um eine Verbindung mit der Datenbank herzustellen
require("mysql.php");
if (!$connect = mysql_connect($dbhost, $dbuser, $dbpw))
  {
  echo "Verbindung fehlgeschlagen!";
  mysql_close();
  }
if (!$selectdb = mysql_select_db($dbname, $connect))
  {
  echo "Datenbank nicht erreichbar!";
  mysql_close();
  }

// funktion zum Überprüfen des cookies oder der Session-Variablen
function checkuser()
{
   if(isset($_SESSION['user_id']) && isset($_SESSION['user_pwd']) && isset($_SESSION['user_login']) && isset($_SESSION['user_rights']))
   {
   return $_SESSION['user_rights'];
   }
   else
   {
   return false;
   }
}
// funktion, um ein zufälliges PW zu erzeugen
function generatepw()
{
	// Variablen definieren
	$vokale = 'aeiouy';
	$konsonanten = 'bcdfghjklmnprstvwxz';
	$passwort = '';
	
	// Zufallsgenerator initialisieren
	mt_srand((double)microtime()*1000000);
	
	// Vokal/Konsonant-Paar(e) erzeugen
	for($i = 1; $i <= 3; $i++) 
	{
		$passwort .= substr($konsonanten, mt_rand(0, strlen($konsonanten)-1), 1);
		$passwort .= substr($vokale, mt_rand(0, strlen($vokale)-1), 1);
	}
	
	// Ziffern-Paar anhängen 
	$passwort .= mt_rand(0, 9);
	$passwort .= mt_rand(0, 9);
	
	// Rückgabewert
	return $passwort;
}

###########################
###Templateberechnungen####
###########################
// Config auslesen
$css = "inc/templates/standard/css/css.css";
$title = "Nilson CMS";
$copyright = "NilsonCMS | &copy by "."<a href=\"mailto:nielsmaseberg@hotmail.com\">Niels Maseberg aka. Nilson</a>";
// Includeswitch
if (!isset($_GET['id']))
{
$id = 1;
}
else
{
$id = $_GET['id'];
}
$include_sql = "SELECT codeurl FROM nav WHERE id=$id";
$include_sql_do = mysql_query($include_sql,$connect);
   while ($include_sql_row = mysql_fetch_assoc($include_sql_do))
   {
   $content = require("$include_sql_row[codeurl]");
   }  
// UserNavigation auslesen oder Loginbereich laden
if (checkuser() >= "1")
{
$user_menu = showtpl("index/user", array("CSS" => "inc/templates/standard/css/css.css",
                                         "Title" => "$title",
										 "u_lobby" => "index.php?id=23",
										 "u_lobby_n" => "UserLobby",
										 "u_profil" => "index.php?id=1&do=profiledit",
										 "u_profil_n" => "UserProfil",
										 "u_admin" => "index.php?id=!!",
										 "u_admin_n" => "AdminPanel",
										 "logout" => "index.php?id=1&do=logout"));
}
else
{
$user_menu = showtpl("index/login", array ("CSS" => "inc/templates/standard/css/css.css",
                                           "lostpw" => "index.php?id=1&do=lostpw",
										   "register" => "index.php?id=1&do=register"));
}
// Hauptmenu
$haupt_menu = showtpl("index/hmenu", array("CSS" => "inc/templates/standard/css/css.css",
                                           "Title" => "$title",
										   "h_news" => "index.php?id=9",
										   "h_news_n" => "News",
										   "h_newsarchiv" => "index.php?id=4",
										   "h_newsarchiv_n" => "Newsarchiv",
										   "h_forum" => "index.php",
										   "h_forum_n" => "Forum",
										   "h_gbook" => "index.php?id=3519381839",
										   "h_gbook_n" => "Gästebuch",
										   "h_userlist_n" => "Userliste",
										   "h_userlist" => "index.php?id=1&do=userliste"));										 
// Counter
$counter = showtpl("index/counter", array("CSS" => "inc/templates/standard/css/css.css",
                                          "v_total" => "3798",
                                          "v_today" => "65",
										  "v_now" => "3"));
###########################
###Templatparser###########
###########################

// Index-Seite generieren
echo showtpl("index", array("Title" => "$title",
                            "Header" => "$title",
							"CSS" => "inc/templates/standard/css/css.css",
							"User_Menu" => "$user_menu",
							"Haupt_Menu" => "$haupt_menu",
							"Counter" => "$counter",
							"Content" => "$index",
							"Copyright" => "$copyright"));

####Ausgabe Puffern Ende###
ob_end_flush();
?>

Ich habe mir auch mal die session beim Login übergen lassen...sprich bei der Weiterleitung.....dort wird die sessio_id noch angezeigt....aber sobald Header:refresh durch ist....is die Session weg.

Woran kann das liegen?

Würde mich sehr über Hilfe freuen.

MFG Niels
 
Zuletzt bearbeitet:
Hey weiß keiner von euch ne Antwort?

Also ich habe jez schon so viel ausprobiert.

Habe z.b. beim Login ne Variable namens $sid erstellt, die die session_id() beinhaltet und habe diese an die Weiterleitung gehängt.
So in der Weiterleitung wird sie noch angezeigt aber sobald die Weiterleitung vollendet isch....ist die session weg.

So dann habe ich versucht mir die session ausgeben zu lassen....so im Template der Weiterleitung kann man sie sich noch ausgeben lassen, aber nirgendswo anders nach der Weiterleitung.

Ich brauche wirklich dringend Hilfe denn ich komm einfach nicht weiter.

MFG Niels
 
Hi

Nimm doch mal bitte den Code und speichere Ihn in einer Datei auf deinem Server ab.

PHP:
<?

session_start();

if (isset($_GET['show'])) {
	print_r($_SESSION);
} else {
	$_SESSION['set'] = true;
	header ('Location: ' . $_SERVER['PHP_SELF'] . '?show=true&' . session_name() . '=' . session_id());
	exit();
}

?>

Starte das Script und Poste hier mal die Ausgabe.

Mfg Akkie
 
Thx für die Hilfe!

Also im Browserfenster bekomm ich dat ausgeworfen:

Array ( [set] => 1 )

Und in der Url steht nun zusätzlich ?show=true&PHPSESSID=e7667c6c43dac7db2faa12d353c6cd6d

Sprich es ist wohl doch ne Session vorhanden?!

MFG Niels
 
Ja aber wo?

Also der Login ist ja eigentlich ganz normal.
Es wird geguckt ob der User in der Datenbank ist und wenn ja ob das pw mit dem Account übereinstimmt.
Wenn Ja, dann werden die Sessionvariablen erstellt und weitergeleitet zur Hauptseite.

So, ob jmd. eingeloggt wird wird so überprüft:

PHP:
<?php
function checkuser()
{
   if(isset($_SESSION['user_id']) && isset($_SESSION['user_pwd']) && isset($_SESSION['user_login']) && isset($_SESSION['user_rights']))
   {
   return $_SESSION['user_rights'];
   }
   else
   {
   return false;
   }
}
?>

Aber ich verstehe auch ehrlich net genau...woran der Fehler dann liegen soll?!
Auf meinem Heimrechner habe ich nen Apache2 Webserver installiert um eine einfacherere Entwicklerumgebung zu haben...und dort klappt alles wunderbar.

MFG Niels
 
Hi

Der Code für die Überprüfung der Session ist erst mal nicht relevant.
Nach dem einloggen leitest du den Benutzer auf die index.php weiter. Dies machst du wahrscheinlich mit JavaScript denn ich sehe dafür keine PHP Lösung. In dieser index.php soltest du nach dem session_start() mal ein print_r($_SESSION) machen um zu schauen ob die Daten in der Session gesetzt wurden.

Mfg Akkie
 
Ich mache nichts über java.

Also habe mir ein Templateparser gecodet...so dieser ruft für den login die /user/login.html auf.
Die Daten von diesem Formular werden beim klicken an index.php?id=1&do=login weitergegeben.
1 steht für user/index.php (( habe die navigation über Datenbank gesteuert und jeder Datei eine id gegeben, so z.b. news --> /news/index.php ---> id=3)

So in der user/index.php&do=login wirden die daten halt ausgewertet und dann die session geschrieben.

Hiernach wird dann an index.php?id=3&do=newsshow weitergeleitet.

Und die gesamten weiterleitungen geschehen nur durch header:refresh ;-)

MFG Niels
 
Hi

Gib mir mal Bitte den Code den du der Funktion header() übergibst.

Und merke Javascript != Java.

Mfg Akkie
 
Mir is schon klar das javascript = java is^^

aba ich benutze kein Java (Javascript).....

So hier der Code für die headerweiterleitung:

PHP:
<?php
header ("refresh:2;url=index.php?id=3&do=news_show");
?>

MFG Niels
 
Zurück