Anzeige:
Ergebnis 1 bis 11 von 11

Thema: session gast

  1. #1
    Registrierter Benutzer
    Registriert seit
    07.11.2002
    Beiträge
    396

    session gast

    Ich hab mir ein login system mal runtergeladen und das so umgebaut das es mir gefelt.
    Aber wie ich hier und beim Burning bord giebs Gast session wie geht das bei dem was ich mir runter geladen habe giebs kein gast wie geht das den vonstandeten

  2. #2
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    das funktioniert genauso, wie bei jedem anderen benutzer auch, nur dass Gast halt der default ist, falls er nicht eingeloggt ist. Außerdem muss Gast von mehreren (sessions) gleichzeitg benutzt werden dürfen.

    ich poste gleich mal noch meine login Klasse

  3. #3
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    PHP-Code:
    <?php
            
    /***************************************************************************
             *                                login.php
             *                            -------------------
             *   begin                : Monday, Feb 17, 2003
             *   copyright            : (C) 2003 Markus ...
             *   email                : msi00 (at) gmx dot de
             *
             ***************************************************************************/


            /***************************************************************************
             *
             *   This program is free software; you can redistribute it and/or modify
             *   it under the terms of the GNU General Public License as published by
             *   the Free Software Foundation; either version 2 of the License, or
             *   (at your option) any later version.
             *
             ***************************************************************************/

        
    if (! defined('root_path') ) {
            die(
    "hacking attempt on login script");
        }

      class 
    cl_user {

        var 
    $username;
        var 
    $loggedin;

        function 
    cl_user($page "Unknown") {
          if (
    session_id() == "") {
            if (! @
    session_start() )
              die(
    "can't start a new session");
          }

          if ( 
    $_SESSION['loggedin'] == && $_SESSION['ip'] == $_SERVER['REMOTE_ADDR'] && $this->_validate_session(session_id())==) {
            
    $this->loggedin 1;
            
    $this->username $_SESSION['username'];
            
    $this->_db_entry($this->usernamesession_id(), $page);
          } else {
            
    $this->logout($page);
            
    $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
          }

        }

        function 
    login($usern$password$page="Unknown") {
          if ( 
    $this->loggedin ) return -1;
          if ( 
    $this->authentificate($usern$password) != 0) return -2;

          
    $this->loggedin 1;
          
    $this->username $usern;
          
    $_SESSION['loggedin'] = 1;
          
    $_SESSION['username'] = $usern;
          
    $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];

          
    $this->_db_entry($usernsession_id(), $page);
        }

        function 
    logout($page="Unknown") {
          
    $this->loggedin 0;
          
    $this->username "";
          
    $_SESSION['username'] = "";
          
    $_SESSION['loggedin'] = 0;

          
    $this->_db_entry("Guest"session_id(), $page);
          
    $this->_garbage();
        }

        function 
    authentificate($usern$password) {
          global 
    $config;
          
    $sql "select * from " $config['db']['users'] . " where name=\"" $usern "\"";
          
    $res mysql_query($sql);
          
    $arr = @mysql_fetch_array($res);
          if (! 
    $arr) {
            return 
    1;
          }
          if ( 
    $arr['password'] == md5($password) ){
            return 
    0;
          } else {
            return 
    1;
          }
        }

        function 
    _garbage() {
          global 
    $config;
          
    $sql "delete from " $config['db']['auth_active'] . " where
    (second(CURRENT_TIME)+minute(CURRENT_TIME)*60+hour(CURRENT_TIME)*3600)-(second(ltime)+mi
    nute(ltime)*60+hour(ltime)*3600) > 60 or CURRENT_DATE!=ldate"
    ;
          
    mysql_query($sql);
        }

        function 
    _validate_session($sessionid) {
          global 
    $config;
          
    $this->_garbage();
          
    $sql "select * from " $config['db']['auth_active'] . " where sid=\"" $sessionid "\"";
          
    $res mysql_query($sql);
          if (
    $arr mysql_fetch_array($res) ) {
            return 
    0;
          } else {
            return 
    1;
          }
        }

        function 
    _db_entry($username$session$page="Unknown") {
          global 
    $config;
          
    $this->_db_del($session);

          
    $sql "insert into " $config['db']['auth_active']  . " (name,ltime,ldate,sid,page) values(\""
    $username "\",CURRENT_TIME,CURRENT_DATE,\"" $session "\", \"" $page "\")";
          
    mysql_query($sql);
        }

        function 
    _db_del($session) {
          global 
    $config;
          
    $sql "delete from " .$config['db']['auth_active']  . " where sid=\"" $session "\"";
          
    mysql_query($sql);
        }

        function 
    get_active_users($page="") {
          global 
    $config;
          
    $return "";
          
    $sql "select * from " $config['db']['auth_active'] ;
          if (
    $page!=""$sql .= " where page=\"" $page "\"";
          
    $res mysql_query($sql);
          
    $return = array();

          
    $count=1;
          while (
    $arr mysql_fetch_array($res)) {
            
    $return[$count++] = array( => $arr['name'], => $arr['page'], 3
    => $arr['ltime'], => $arr['ldate'] );
          }

          return 
    $return;
        }

        function 
    show_form($url$page "unknown"$logintext "Login") {
          
    ?>
            <form action="<?php echo $url?>?login=enter" method="post">
          <input type="text" name="login_user" />
          <input type="password" name="login_password" />
          <input type="submit" name="login_go" value="<?php echo $logintext?>" />
        </form>
          <?php
        
    }
      }

    ?>

  4. #4
    Registrierter Benutzer
    Registriert seit
    05.10.2002
    Ort
    Erfurt
    Beiträge
    7
    Ich habe ein Frage zur Funktion '_garbage'

    Wird denn die Session nicht automatisch (per default in der php.ini) nach 60min geloescht? Oder habe ich da was falsch verstanden?

  5. #5
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Original geschrieben von chavez4k
    Ich habe ein Frage zur Funktion '_garbage'

    Wird denn die Session nicht automatisch (per default in der php.ini) nach 60min geloescht? Oder habe ich da was falsch verstanden?
    Es wird lediglich die Session Datei gelöscht - und diese auch nicht nach 60min, sondern nur sie wird lediglich als zu löschen markiert - das heißt nicht, dass sie nach 60min auf jeden fall weg ist.
    Hier geht es ja darum die Sessiondaten in der Datenbank zu halten - die Daten aus der Datenbank können logischerweise nur händisch über _garbage gelöscht werden.


  6. #6
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    meine _garbage funktion hat allerdings einen fehler, am nächsten tag, also um 0:00 muss jeder sich neu einloggen. wenn ich mal zuviel zeit hab werd ich das korrigieren.

  7. #7
    Registrierter Benutzer
    Registriert seit
    07.11.2002
    Beiträge
    396
    könnte ich das einfach anpassen und die alte session bei mir rauswerfen

  8. #8
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    Original geschrieben von localhost
    könnte ich das einfach anpassen und die alte session bei mir rauswerfen
    was willst du wie anpassen?

    ach du meinst mein script hernehmen? das kannst du natürlich ist ja unter der gpl .
    du musst aber einige variablen (mysql tabellen usw) anpassen und schon davor eine verbindung herstellen. wenn du willst kann ich dir noch eine sql datei zum erstellen einer passenden db posten und meine anderen php dateien mit bsp. wie ich dieses login script eingebaut habe, allerdings frühestens am samstag..

  9. #9
    Registrierter Benutzer
    Registriert seit
    07.11.2002
    Beiträge
    396
    Das wer cool wennst du das machen würdest
    Weil ich hab mir was nicht gpl runtergeladen und so viel verändert das es hoffe ich keiner mergt :-)

    Wie ich die session machen steht ja auch überall aber mit dem einlogen und sicherbekomemn naja.
    schwer schwer.

    Original geschrieben von msi
    was willst du wie anpassen?

    ach du meinst mein script hernehmen? das kannst du natürlich ist ja unter der gpl .
    du musst aber einige variablen (mysql tabellen usw) anpassen und schon davor eine verbindung herstellen. wenn du willst kann ich dir noch eine sql datei zum erstellen einer passenden db posten und meine anderen php dateien mit bsp. wie ich dieses login script eingebaut habe, allerdings frühestens am samstag..

  10. #10
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    Original geschrieben von localhost
    Das wer cool wennst du das machen würdest
    Weil ich hab mir was nicht gpl runtergeladen und so viel verändert das es hoffe ich keiner mergt :-)

    Wie ich die session machen steht ja auch überall aber mit dem einlogen und sicherbekomemn naja.
    schwer schwer.
    hallo,
    ja ich hab uahc ne weile rumgetüftelt, bis ich die klasse so hatte.
    also hier der code:

    create.sql:
    Code:
    create table users (
    id int(10) not null auto_increment,
    name tinytext not null,
    realname tinytext default null,
    password tinytext default null,
    email tinytext default null,
    accesslevel tinytext default "",
    primary key(id)
    );
    
    create table auth_active (
    name tinytext,
    ltime time,
    ldate date,
    page tinytext,
    sid tinytext
    );
    
    insert into users(name,password) values('markus', md5('passwort'));
    db.inc.php:
    PHP-Code:
    <?php

    if (! defined('root_path') ) {
        die (
    "hacking attempt");
    }
    if (! 
    defined('inc_config') ) {
        die (
    "config missing");
    }

    $db = @mysql_connect($config['mysql']['server'] ,"root","temp");
    if ( !
    $db) {
      die (
    "can not connect to the mysql server");
    }
    if ( ! @
    mysql_select_db($config['mysql']['database'], $db) ) {
      die (
    "can not connect to the database");
    }
    ?>
    config.inc.php
    PHP-Code:
    <?php
        
    if (! defined('root_path') ) {
            die (
    "hacking attempt");
        }

        
    define'inc_config'1);

        
    $config "";
        
    $config = array(
            
    web_url => "http://uranus/" );
        
    $config['mysql'] = array (
                
    server   => "localhost",
                
    database => "proto",
                
    tablepre => "",
                
    username => "root",
                
    password => "passwort"
            
    );
         
    $config['db'] = array (
                
    users       => $config['mysql']['tablepre'] . "users",
                
    auth_active => $config['mysql']['tablepre'] . "auth_active",
                
    protokolle  => $config['mysql']['tablepre'] . "protokolle",
                
    tops        => $config['mysql']['tablepre'] . "tops",

            );
    ?>
    inprogram.inc.php
    PHP-Code:
    <?php
        
    if (! defined('root_path') ) {
            die (
    "hacking attempt");
        }

        
    define'inc_game'1);

        require( 
    root_path "inc/pre.inc.php");
        require( 
    root_path "inc/login.inc.php");
        
    $user = new cl_user();
        if (! 
    $user->loggedin) {
            
    header("Location: " web_url"invalid_session.php");
            echo 
    "=> Error - Invalid Session <=\nUser needs to relogin";
            exit(
    1);
        }
        function 
    bottom() {   .....   }
    ?>
    <html>
    <head>
    <?php
        
    if (isset ($DATA_REFRESH)) {
            echo 
    '<meta http-equiv="Refresh" content="' $DATA_REFRESH '">';
        }
    ?>
    <title><?php if ($DATA_TITLE=="" || !isset($DATA_TITLE)) echo ".."; else echo $DATA_TITLE?></title>
    </head>
    <body>
    login.php
    PHP-Code:
    <?php

    if (defined(only_show)) {
        
    show_form();
    } else {

            
    define('root_path'"./");
            require(
    root_path "inc/pre.inc.php");
            require(
    root_path "inc/login.inc.php");

            
    $user = new cl_user();
            
    $user->logout();


            
    //    echo session_id();
            //    echo "<-";
            
    if (! isset($_POST['user']) ) {
                
    show_form();
            } else {
                
    $x="adf";
                if ( 
    $x $user->login($_POST['user'], $_POST['password']) != 0) {
                  echo 
    "login incorrect $x<br>";
                  
    show_form();
                } else {
                  
    header("Location: " web_url "startpage.php");
                }
            }

    }

    function 
    show_form() {
        echo 
    "<form action=login.php?dologin method=post>Name:<input type=text name=user><br>Passwort:<input type=password name=password><input type=submit></form>";

    }

    ?>

    irgendeineseite.php
    PHP-Code:
    define('root_path'"./");

    $DATA_TITLE "..";
    require (
    root_path "inc/inprogram.inc.php");
    .... 
    falls du auch leute willst, die nicht eingeloggt sind, musst das halt in ingame.inc.php anpassen und ansonsten im code mit klasse->loggedin überprüfen ob er eingeloggt ist, falls er zugang will.

  11. #11
    Registrierter Benutzer
    Registriert seit
    07.11.2002
    Beiträge
    396
    Was haltet ihr den davon
    marke eigenbau

    PHP-Code:
    <?    session_start();    // session start

    $_SESSION['zeit']    = time();
    $_SESSION['ip']        = $_SERVER["REMOTE_ADDR"];
    $session        = session_id();


    /*    mysql connegt    */
    $mysql_server = mysql_connect
        (
            'localhost',    // host
            'username',    // mysql user
            'passwd'    // mysql paswd
        )
    or die("Keine Verbindung möglich: " . mysql_error()); // db_connect
    mysql_select_db("no-nick")or die("Auswahl der Datenbank fehlgeschlagen");


    /*    Gast Group festlegen    */
    $result_default0 = mysql_query("SELECT default_group_gast,gast_style,admingroup,default_group_user FROM board");
    while($row2 = mysql_fetch_assoc($result_default0))
        {
            $gast_groups    = $row2['default_group_gast'];    // group id 1 = Gast
            $user_groups    = $row2['default_group_user'];
            $gast_style    = $row2['gast_style'];
            $admingroup    = $row2['admingroup'];
        }


    /*    wan kamm wer auch immer auf die page    */
    if(empty($_SESSION['to_page']) && $_SESSION['ip'] == $_SERVER["REMOTE_ADDR"])    $_SESSION['to_page'] = $_SESSION['zeit'];


    /*    Username und Passwd vom login formolar oder Cookie    */
    if($_SESSION['loginenmachen'] == 0 && $_SESSION['ip'] == $_SERVER["REMOTE_ADDR"])
        {
            if($_REQUEST['loginaction'] == 'login' && $_SESSION['ip'] == $_SERVER["REMOTE_ADDR"])
            {
                $_SESSION['loginname']        = $_POST['userloginname'];
                $_SESSION['passwd_md5_strin']    = $foo = md5($_POST['passwdlogin']);
                $_SESSION['authen']        = 1;
            }
            elseif($_SESSION['logout'] == 0)
            {
                $_SESSION['loginname']        = $_COOKIE['userloginname'];
                $_SESSION['passwd_md5_strin']    = $_COOKIE['md5passwd'];
                $_SESSION['authen']        = 1;
            }
        }


    /*    Wenn user und passwd stimmen dan login machen    */
    if($_SESSION['authen'] == 1 && $_SESSION['ip'] == $_SERVER["REMOTE_ADDR"])
        {
            $authen_sql = "select id,name from users where name='".$_SESSION['loginname']."' and password='".$_SESSION['passwd_md5_strin']."'";
            $authen_ergebnisa = mysql_query($authen_sql, $mysql_server);
            
            if(mysql_num_rows($authen_ergebnisa) == 1)
            {
                $_SESSION['loginenmachen']    = 1;
            }
            else
            {
                $_SESSION['loginenmachen']    = 0;
                $_SESSION['authen']        = 0;
            }
        }


    /*    Gast wenn kein login da ist || Login machen    */
    if($_SESSION['authen'] == 1 && $_SESSION['loginenmachen'] == 1 && $_SESSION['ip'] == $_SERVER["REMOTE_ADDR"])
        {
            if($_GET['m'] != 'logout')
            {
                /*    Login als $user['name']    */
                $login_ergebnis = mysql_query
                (
                    "
                    SELECT id,name,usergrupenid,style_id,cookie,schnellantwort
                    FROM    users
                    WHERE    name='".$_SESSION['loginname']."' AND password='".$_SESSION['passwd_md5_strin']."'
                    ",$mysql_server
                );
                if(mysql_num_rows($login_ergebnis) == 1)
                {
                    $user = mysql_fetch_array ($login_ergebnis);
                }
                else
                {
                    $_SESSION['loginenmachen']    = 0;
                    $_SESSION['authen']        = 0;
                }
                
                
                /*    cookie setzen    */
                if($user['cookie'] == 1)
                {
                    setcookie ("userloginname", $user['name'], time()+3600*24*60,"/");
                    setcookie ("md5passwd", $_SESSION['passwd_md5_strin'], time()+3600*24*60,"/");
                }
                
                $_SESSION['username']            = $user['name'];
                $_SESSION['user_session_id']        = $user['id'];
                
                mysql_query("update users set lastlogin='".$_SESSION['zeit']."' where id='".$user['id']."' and name='".$_SESSION['loginname']."'", $mysql_server);
                
                /*    welcher style aus der user_db    */
                
                $style_ergebnis = mysql_query("select * from style where id='".$user['style_id']."'", $mysql_server);
                if(mysql_num_rows($style_ergebnis) == 1)
                {
                    $styleauslesen = mysql_fetch_array ($style_ergebnis);
                }
                else
                {
                    $_SESSION['loginenmachen']    = 0;
                    $_SESSION['authen']        = 0;
                }
                
                /*    Group auslesen    */
                $ergebnis_group = mysql_query("select * from groups where id='".$user['usergrupenid']."'", $mysql_server);
                if(mysql_num_rows($ergebnis_group) == 1)
                {
                    $groups = mysql_fetch_array ($ergebnis_group);
                }
                else
                {
                    $_SESSION['loginenmachen']    = 0;
                    $_SESSION['authen']        = 0;
                }
            }
            else
            {
                $userloginname    = '';
                $md5passwd    = '';
                
                /*    Auten und login killen    */
                $_SESSION['loginenmachen']        = 0;
                $_SESSION['authen']            = 0;
                $_SESSION['logout']            = 1;
                
                /* Cookie löchen */
                setcookie ("userloginname", "");
                setcookie ("md5passwd", "");
            }
        }
    else    /*    else = kein login da oder nicht erfolgreich dan gast und gast_style    */
        {
            $_SESSION['username']        = 'Gast';
            $_SESSION['user_session_id']    = 0;
            
            $sqlbefehl_style = "select * from style where id=$gast_style";    /* sytle id 1 = gast style default */
            $ergebnis_style = mysql_query($sqlbefehl_style, $mysql_server);    /* deafult style = jederman style = standart style */
            
            if(mysql_num_rows($ergebnis_style) == 1)
            {
                $styleauslesen = mysql_fetch_array ($ergebnis_style);
            }
            
            $sqlbefehl = "select * from groups where id=$gast_groups";    // group id 1 = Gast
            $ergebnis = mysql_query($sqlbefehl, $mysql_server);
            
            if(mysql_num_rows($ergebnis) == 1)
            {
                $groups = mysql_fetch_array ($ergebnis);
            }
        }

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •