Zurück   IP-Symcon Community Forum > IP-Symcon 1.0 > Archiv > Allgemeine Diskussion

Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
  #1 (permalink)  
Alt 21.04.07, 08:59
Benutzerbild von pleibling
Senior Member
 
Registriert seit: Dec 2005
Ort: Köln
Beiträge: 1,831
Standard probleme mit sessions

irgendwie ist das programmieren mit ipsymcon anders als mit normalen webservern.

meine scripts laufen im internet auf meinen webservern ohne probleme, aber beim bauen eines lokalen admininterfaces in ipsymcon habe ich irgendwie probleme.

nun habe ich das problem beim bauen eines logins.

ich habe eine seite auf der ich meine zugangsdaten eingebe, die zugangsdaten werden an eine seite gegeben, die die zugangsdaten prüft gegen eine mysql db.

wenn die daten richtig sind, dann wird eine session wie folgt gestartet:

Zitat:
session_start();
$login=1;
$vid = $userdaten['vid'];
session_register("login");
session_register("vid");
header("Location: eingeloggt.php");
und auf der eingeloggt.php prüfe ich normalerweise mit:

Zitat:
session_register("login");
if(!isset($_REQUEST['PHPSESSID'])) {header("Location: index.php");};
if($_SESSION['login']!=1) {header("Location: index.php");};
ob man angemeldet ist. wenn nicht, kommt man wieder auf die startseite.

jedoch klappt das im ipsymcon überhaupt nicht, ich werde immer wieder direkt zum login geleitet. wenn ich den bereich in der seite auskommentiere und dann $_SESSION['login'] eingebe, bekomme ich eine meldung "Undefined variable: _SESSION".

wie gesagt, im web funktioner die seiten.

was mache ich hier falsch? hat ipsymcon hier besonderheiten? torro arbeitet im wiips doch auch mit sessions, oder? dann sollte ips das doch eigentlich können, oder?!?

Geändert von pleibling (21.04.07 um 12:14 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 21.04.07, 09:15
Senior Member
 
Registriert seit: Dec 2005
Ort: Saarland
Beiträge: 233
Standard

@pleibling

hast Du das beachtet ??

Viele Grüsse Jürgen
Mit Zitat antworten
  #3 (permalink)  
Alt 21.04.07, 10:35
Benutzerbild von pleibling
Senior Member
 
Registriert seit: Dec 2005
Ort: Köln
Beiträge: 1,831
Standard

wie meinst du das? ich übergebe ja nicht die daten an eine seite, sondern lade die in die session. dort lese ich die dann wieder aus.

oder habe ich das falsch verstanden?

ich habe auch was anderes versucht, wenn ich versuche die session zu beenden bekomme ich folgende fehlermeldung:

Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in ...

kann es sein, das die session gar nicht gestartet wurde?

oder mache ich was komplett falsch?

hat jemand von euch ein funktionierendes beispiel einer session in ips?

die session beende ich so:

Zitat:
session_unset();
$_SESSION=array();
session_destroy();
Mit Zitat antworten
  #4 (permalink)  
Alt 21.04.07, 12:26
Benutzerbild von Torro
Senior Member
 
Registriert seit: May 2005
Ort: Leipzig
Beiträge: 3,963
Standard

Hallo pleibling,

Zitat:
Zitat von pleibling Beitrag anzeigen
hat jemand von euch ein funktionierendes beispiel einer session in ips?
warum erfindest Du denn das Rad neu und nimmst nicht einfach den Session Teil von WIIPS? Man muss doch nicht alles doppelt und dreifach programmieren.

Gruss Torro
Mit Zitat antworten
  #5 (permalink)  
Alt 21.04.07, 13:36
Benutzerbild von Retiarius
Senior Member
 
Registriert seit: Apr 2005
Ort: Hessen - nähe Gießen
Beiträge: 312
Standard

ich übergebe die Session immer mit im link. Anders hab ich es auch nicht hinbekommen, trotz allem probieren und Beispielscripten aus dem Netz.

Ich habs bei mir so gemacht:

index:
PHP-Code:
session_start();
if (!
session_is_registered('SESSION_user'))
    
$auth 0;
else
{
    
$auth 1;
    echo 
"<meta http-equiv=refresh content=0;URL=hauptseite.php>";

PHP-Code:
$PHPSESSID session_id();
echo 
"<form method=post action=login.php?PHPSESSID=$PHPSESSID>";
echo 
"<table width=60%>";
echo 
"<tr>";
echo 
"<td>Benutzername:</td>";
echo 
"<td>Passwort:</td>";
echo 
"<td></td>";
echo 
"</tr>";
echo 
"<tr>";
echo 
"<td><input type=text name=user maxlength=20></td>";
echo 
"<td><input type=password name=pass maxlength=20></td>";
echo 
"<td><INPUT TYPE=submit VALUE=Login></td>";            
echo 
"</tr>";
echo 
"</table>";
echo 
"</form>"
von da gehts dann beim Einloggen über eine Seite (login) wo mittles Funktion der User und das Password geckeckt wird (log= 0 oder 1).

login:
der User wird in der Session registriert:
PHP-Code:
$_SESSION["SESSION_user"] = $user
PHP-Code:
if ($log==0)
{
    
session_unset();
    
session_destroy();
    
    echo 
"<font size=2 face=Verdana, Arial, Helvetica, sans-serif>Benutzer existiert nicht oder das Passwort ist falsch!</font>";    
    echo 
"<meta http-equiv=refresh content=2;URL=index.php>";
}
else
{
    echo 
"<meta http-equiv=refresh content=0;URL=hauptseite.php?PHPSESSID=$PHPSESSID>";


dann gehts zurück auf die Hauptseite.

Auf jeder Seite wird zuerst die Session auf Gültigkeit geprüft.
alle weiteren seiten:
PHP-Code:
session_id($PHPSESSID);
session_start();
if (!
session_is_registered('SESSION_user'))
{
    
$auth 0;
    echo 
"<meta http-equiv=refresh content=0;URL=index.php>";
}    
else
{
    
$auth 1;

das $auth kann man sich in dem Fall sparen, da man mit dem refresh zurückgeworfen wird, wenn man nicht als User gültig ist.

Ist mit Sicherheit nicht die optimale Lösung. Ist auch mein erster Versuch mit Sessions - eine andere Variante habe ich nicht mit IPS hinbekommen.
Mit Zitat antworten
  #6 (permalink)  
Alt 21.04.07, 14:44
Benutzerbild von pleibling
Senior Member
 
Registriert seit: Dec 2005
Ort: Köln
Beiträge: 1,831
Standard

klingt schonmal nciht schlecht. werde mal gleich versuchen mit dem sessionlink übergeben.

hast du schonmal versucht ob man werte, die in der session gespeichert sind überschreiben kann? sprich wenn du dich einloggst und aus der db ein wert gezogen wird und die variable bekannt ist, das man dann versucht den wert zu überschreiben?

sagen wir mal wir haben einen benutzer der heißt user, wenn der sich einloggt (z.b. seite die session lädt und werte aus db lädt login.php heißt) er dann seinen benutzernamen übershrieben kann (z.b. login.php?user=admin) um so z.b. auf einen anderen account zuzugreifen oder höhere berechtigungen zu erhalten?

sollte doch eigentlich nicht gehen, oder?

wer arbeitet hier noch mit sessions?
Mit Zitat antworten
  #7 (permalink)  
Alt 21.04.07, 15:22
Benutzerbild von Retiarius
Senior Member
 
Registriert seit: Apr 2005
Ort: Hessen - nähe Gießen
Beiträge: 312
Standard

ich übergebe ja nur die Session-ID der Session, in der die Variablen gültig sind.
d.h. unter der SSID:3473843hj34hj4h23 sind variablen $user usw. bekannt...
d.h. bei der Übergabe im Link sieht man diese variablen nicht und hat auch keinen zugriff drauf.... so würde ich das verstehen. Bin aber wie schon erwähnt was das angeht selber anfänger und laie.
Mit Zitat antworten
  #8 (permalink)  
Alt 21.04.07, 15:26
Benutzerbild von Torro
Senior Member
 
Registriert seit: May 2005
Ort: Leipzig
Beiträge: 3,963
Standard

Hallo,

also nochmal in Kurzform zu den Sessions, wie es im IPS funktioniert und sauber ist:

in der PHP.INI folgende Eintraege machen:

[Session]
session.save_handler = "files"
session.save_path = "C:\Programme\0.90-IP-SYMCON\web_data\session"
session.auto_start = 0
session.use_trans_sid = 1
session.name = "pt"

Dann kann man beispielsweise auch folgendes nutzen:
$_SESSION['_query'] = $QUERY_STRING;
$_SESSION['_self'] = $PHP_SELF;
$_SESSION['_remote'] = $REMOTE_ADDR;

Wie es genau gemacht wird, schaut Euch am besten im WIIPS an, da wird es sehr ausgiebig benutzt.

Gruss Torro
Mit Zitat antworten
  #9 (permalink)  
Alt 23.04.07, 23:14
Benutzerbild von pleibling
Senior Member
 
Registriert seit: Dec 2005
Ort: Köln
Beiträge: 1,831
Standard

hi torro,

mal eine verständnisfrage:

ich melde mich also an, wenn die daten richtig sind, dann starte ich eine session und lade da die daten rein (vorher habe ich natürlich die einstellungen in der php.ini vorgenommen):

session_start();
$_SESSION['_test] = "eingeloggt";


auslesen kann ich dann die daten ungefähr so:

if(!$_SESSION['_test'] == "eingeloggt") {echo("<meta http-equiv=refresh content=0;URL=index.php>"); };

kommt da nicht auch was mit session_register oder so?

danke für eure/deine hilfe .
Mit Zitat antworten
  #10 (permalink)  
Alt 23.04.07, 23:50
Benutzerbild von Torro
Senior Member
 
Registriert seit: May 2005
Ort: Leipzig
Beiträge: 3,963
Post

Hallo pleibling,

Zitat:
Zitat von pleibling Beitrag anzeigen
hi torro,

mal eine verständnisfrage:

ich melde mich also an, wenn die daten richtig sind, dann starte ich eine session und lade da die daten rein (vorher habe ich natürlich die einstellungen in der php.ini vorgenommen):
korrekt. Du musst nur aufpassen, dass die Session Daten auch tatsaechlich zu jedem Zeitpunkt da sind. Ich pruefe also vor der Verwendung, ob der jeweilige Eintrag vorhanden ist, anderenfalls setze ich im Fehlerfall einen Standard oder bringe Fehlermeldungen.

Zitat:
session_start();
$_SESSION['_test] = "eingeloggt";


auslesen kann ich dann die daten ungefähr so:

if(!$_SESSION['_test'] == "eingeloggt") {echo("<meta http-equiv=refresh content=0;URL=index.php>"); };
hier vorher pruefen, ob die Session Variable tatsaechlich vorhanden ist:

if (isset($SESSION['_test'])) {
if(!$_SESSION['_test'] == "eingeloggt") {
echo("<meta http-equiv=refresh content=0;URL=index.php>");
}
else {
// Fehlerbehandlung
}


Nach einer geschweiften Klammer kommt uebrigens kein Kommata!
Zitat:
kommt da nicht auch was mit session_register oder so?

danke für eure/deine hilfe .
nein, das brauchst Du hierbei nicht.

Gruss Torro
Mit Zitat antworten
Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme mit TMEX-Instanz wgreipl Ideen & Anregungen 10 26.11.07 17:57


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0