Welcome, Guest. Please login or register.
Did you miss your activation email?
May 25, 2012, 03:38:22 AM

Login with username, password and session length
Search:     Advanced search
Interested in joining the WebsiteBaker team?
For more Information read here or on our new website.
155476 Posts in 21708 Topics by 7734 Members
Latest Member: rofroodoOvego
* Home Help Search Login Register
Pages: [1]   Go Down
Print
Author Topic: Session-Variable wird nicht übergeben  (Read 792 times)
dwex

Offline Offline

Posts: 92


« on: January 12, 2009, 08:26:33 PM »

Hallo Leute,

ich soll WB dazu bringen komplett nur ausgewählten Usern zugänglich zu machen (Quasi: interner Bereich).

Jetzt habe den Klassiker genommen wie man in in der PHP-"Schule" lernt und habe ein Loginformular geschrieben welches dann auf die korrekte Eingabe von Username und Passwort geprüft wird - anschliessend wird dann eine Session-Variable geschrieben und auf die WB-Index-Seite (per header) weitergeleitet - damit niemand auf WB direkt zugreifen kann prüfe ich im Template (ganz oben) ob die Sessionvaribale gesetzt ist.

Jetzt funktioniert das nicht - ich habe jetzt mal eine Pseudoindex genommen (ohne WB zu benutzen) hier kann ich die Session-Variable ausgeben.
Wenn ich das ganze dann in das Tempalte einbaue geht es nicht mehr.

Ich sollte vielleicht noch erwähnen, dass ich auf das "interne" Login von WB nicht zurück greifen möchte da es den Login schon gibt (mit über 5000 Usern) und ich einfach von .htaccess auf PHP-Auth umsteigen möchte.

Kann mir einer bitte sagen warum das so ist?
« Last Edit: January 12, 2009, 08:30:24 PM by dwex » Logged
doc
Guest
« Reply #1 on: January 12, 2009, 08:32:43 PM »

Hallo,

verstehe zwar nicht so ganz was Du vorhast, aber was solls.

WB lädt automatisch die Datei config.php, welche wiederum die Datei /framework/initialize.php lädt. In initialize.php wird ab  Zeile 70 per session_start() eine neue Session generiert, welche wohl Session überschreibt.

Eventuell würde es ja auch helfen, wenn Du mal beschreibst was Du eigentlich vorhast. Beispielcode hilft bei solchen Problemen auch immer ungemein.

Christian
Logged
dwex

Offline Offline

Posts: 92


« Reply #2 on: January 12, 2009, 08:52:24 PM »

Das ist nicht gut!

Also ich versuche mal zu erklären was ich möchte.

Es gibt momentan eine Internetseite die kann man nur aufrufen wenn man ein Passwort und einen Benutzernamen hat.
Das ganz funktioniert über .htaccess und .htpasswd
Also die komplette Website ist Passwortgeschützt.

Jetzt wollen wir statt des .htaccess - Zugangsschutzes das ganze auf PHP-Basis regeln.
Dazu habe ich die Logindaten der .htpasswd in eine MySQL-DB geschrieben und ein Loginscript wie das unter http://www.tutorials.de/forum/php-tutorials/9684-php-mysql-login-system-mit-sessions.html geschrieben. Nur mit dem Unterschied, dass ich die Prüfung auf die Variable $_SESSION['user_id'] in das Template von WB eingebaut habe.

Jetzt funktioniert der Login aber nicht weil eben die Session zerstört wird - zum testen habe ich dann mal die intern.php aus dem Tutorial genommen - die wirft mir dann alles korrekt aus. Nur eben im Template funktioniert das nicht.

Habt Ihr eine Idee wie man das doch noch machen kann?
Logged
doc
Guest
« Reply #3 on: January 12, 2009, 09:08:12 PM »

Hallo,

hast Du mal versucht, das Feature Intropage von WB in Kombination mit Seitentypen wie registered etc. zu verwenden? Sprich die Intropage ist öffentlich zugänglich und enthält die Loginmaske, alle anderen Seiten sind vom Typ registriert oder private und werden nur angezeigt, wenn die WB-Logindaten richtig sind.

Christian
Logged
dwex

Offline Offline

Posts: 92


« Reply #4 on: January 12, 2009, 09:09:39 PM »

Danke für den Tip.

ABER ich habe ja die Logindaten nicht in WB sondern in einer anderen DB und ich möchte ungerne diese in die WB-DB importieren.
Logged
doc
Guest
« Reply #5 on: January 12, 2009, 09:19:34 PM »

Hi,

verstehe zwar nicht was Dir das bringt, aber man muss nicht alles verstehen.
Lass Dein Loginformular wie es ist und bearbeite die config.php von WB.

Folgendes:
- am Anfang der config.php prüfen ob Deine Session Variable gesetzt ist
- wenn nicht redirect auf das Loginscript (z.B. index.html) und die config.php verlassen
- wenn Session Variable gesetzt, config.php parsen.

Christian
Logged
dwex

Offline Offline

Posts: 92


« Reply #6 on: January 12, 2009, 09:34:00 PM »

Geht leider auch nicht.

Ich habe folgendes gemacht:

1. Code aus index.php des Templates gelöscht.
2. config.php angepasst.
3. x_formular.php und x_login.php generiert.

config.php
Code:
<?php
session_start 
();
if (!isset (
$_SESSION["user_id"]))
{
  
header ("Location: x_formular.php");
  exit;
} else {

define('DB_TYPE''mysql');
define('DB_HOST''localhost');
define('DB_USERNAME''xxxxxx');
define('DB_PASSWORD''xxxxxxx');
define('DB_NAME''xxxxx');
define('TABLE_PREFIX''');

define('WB_PATH'dirname(__FILE__));
define('WB_URL''http://xxx.de/wb');
define('ADMIN_PATH'WB_PATH.'/admin');
define('ADMIN_URL''http://xxx.de/wb/admin');

require_once(
WB_PATH.'/framework/initialize.php');
}
?>

x_formular.php
Code:
<?php session_start (); ?>
<html>
<head>
  <title>Login</title>
</head>

<body>
<?php
if (isset ($_REQUEST["fehler"]))
{
  echo 
"Die Zugangsdaten waren ungültig.";
}
?>

<form action="x_login.php" method="post">
  Name: <input type="text" name="name" size="20"><br>
  Kennwort: <input type="password" name="pwd" size="20"><br>
  <input type="submit" value="Login">
</form>
</body>
</html>

x_login.php
Code:
<?php
session_start
();

if ((
$_POST['name'] == "Test") && ($_POST['pwd'] == "123456"))
{


  
// Sessionvariablen erstellen und registrieren
  
$_SESSION["user_id"] = $data["Id"];
  
$_SESSION["user_nickname"] = $data["Nickname"];
  
$_SESSION["user_nachname"] = $data["Nachname"];
  
$_SESSION["user_vorname"] = $data["Vorname"];

  
header ("Location: http://xxx.de/wb");
}
else
{
  
header ("Location: x_formular.php?fehler=1");
}
?>
« Last Edit: January 13, 2009, 10:33:04 AM by dwex » Logged
Pages: [1]   Go Up
Print
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!