+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 13
  1. #1
    Registriert seit
    Dec 2005
    Ort
    Köln
    Beiträge
    2,623

    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:

    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:

    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 11:14 Uhr)

  2. #2
    Registriert seit
    Dec 2005
    Ort
    Saarland
    Beiträge
    361

    @pleibling

    hast Du das beachtet ??

    Viele Grüsse Jürgen

  3. #3
    Registriert seit
    Dec 2005
    Ort
    Köln
    Beiträge
    2,623

    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:

    session_unset();
    $_SESSION=array();
    session_destroy();

  4. #4
    Registriert seit
    May 2005
    Ort
    Leipzig
    Beiträge
    3,964

    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

  5. #5
    Registriert seit
    Apr 2005
    Ort
    Hessen - nähe Gießen
    Beiträge
    332

    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.

  6. #6
    Registriert seit
    Dec 2005
    Ort
    Köln
    Beiträge
    2,623

    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?

  7. #7
    Registriert seit
    Apr 2005
    Ort
    Hessen - nähe Gießen
    Beiträge
    332

    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.

  8. #8
    Registriert seit
    May 2005
    Ort
    Leipzig
    Beiträge
    3,964

    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

  9. #9
    Registriert seit
    Dec 2005
    Ort
    Köln
    Beiträge
    2,623

    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 .

  10. #10
    Registriert seit
    May 2005
    Ort
    Leipzig
    Beiträge
    3,964

    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.

    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!
    kommt da nicht auch was mit session_register oder so?

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

    Gruss Torro

Ähnliche Themen

  1. Probleme mit TMEX-Instanz
    Von wgreipl im Forum Ideen & Anregungen
    Antworten: 10
    Letzter Beitrag: 26.11.07, 17:57