PHP Sessions auf Lokalem Rechner

Also du übergibst die Session_id nicht per URL sondern versteckt per input-hidden-tag?

Du musst die session_id ja irgendwie übergeben, wenn nicht per URL dann per hidden. Anderst wird das sonst nichts. Wenn das auf deinem Win2k nicht läuft, dann dürfte da ein Einstellungsproblem vorliegen von PHP.

Ich würde fast wetten du hast ein Übergabeproblem und nicht ein Win2k oder PHP-Prob. ;)

Zeit doch mal das Script ganz.

Hier noch einige Infos: http://www.dclp-faq.de/q/q-sessions-methode.html
 
Hallo saila,
mit dem Link hast du mir gut auf die Sprünge geholfen...
Bisher wusste ich nicht wirklich, dass man die Session-Id übergeben muss um auf der nächsten Seite die gleiche SID zu bekommen...
Mir hatte man das damals so erklärt, dass der Browser eine bestimmte ID bestimmt, diese dann solange behält, bis der Browser geschlossen wird... und diese ID wird von PHP halt nur abgerufen (oder so ähnlich)....
Dummerweise funktioniert mein Script aber auf meinem Server...
Hier mal das Script in Kurzfassung:

index.php:
PHP:
<?
include 'sessionhelpers.inc.php';
connect();
if (!logged_in() && !$login) {
/* Hier der Text wenn nicht eingeloggt */
}
else {
    /* TEXT WENN EINGELOGGT */
}
?>

sessionhelpers.inc.php
PHP:
<?php
function connect()
{
    $con= mysql_connect('HOST','USER','PASS') or die(mysql_error());
     mysql_select_db('DATABASE',$con) or die(mysql_error());
}

function check_user($name, $pass)
{
    $sql="SELECT UserId
    FROM cm_users
    WHERE UserName='".$name."' AND UserPass=MD5('".$pass."')
    LIMIT 1";
    $result= mysql_query($sql) or die(mysql_error());
    if ( mysql_num_rows($result)==1)
    {
        $user=mysql_fetch_assoc($result);
        return $user['UserId'];
    }
    else
        return false;
}

function login($userid)
{
    $sql="UPDATE cm_users
    SET UserSession='".session_id()."',
    LastActive='".time()."',
    UserIP='".$_SERVER['REMOTE_ADDR']."',
    logins = logins +1,
    bantime=NULL
    WHERE UserId=".$userid;
     mysql_query($sql);
}

function logged_in()
{
    $sql="SELECT UserId
    FROM cm_users
    WHERE UserSession='".session_id()."'
    LIMIT 1";
    $result= mysql_query($sql);
      return ( mysql_num_rows($result)==1);
}

function logout()
{
    $sql="UPDATE cm_users
    SET UserSession=NULL,
    WHERE UserSession='".session_id()."'";
     mysql_query($sql);
}
?>

login.php:
PHP:
<?php
@session_start();
include 'sessionhelpers.inc.php';
connect();
if ($login){
    $userid = check_user($UserName, $UserPass);
    if ($userid==false) {
        failed_login($UserName);
        /* TEXT BEI FEHLERHAFTEM EINLOGGEN */
        }
    else {
          login($userid);
        }
    }
}

und zu guter Letzt logout.php:
PHP:
session_start();
include 'sessionhelpers.inc.php';
connect();
logout();


Ich nehme dann an, dass das Problem einfach nur sein wird, dass mein Server die SessionID solange über die verschiedenen Seiten behält, wie der Browser offen ist und dass ich das selbst nur missverstanden habe...
Danke für eure Hilfe :)
 
hihi.. das is das Script aus dem tutorials hier.. hab ich auch kopiert.. aba geht irgendwie nur teilweise bei mir..
naja..
@saila:
Also du übergibst die Session_id nicht per URL sondern versteckt per input-hidden-tag?

Du musst die session_id ja irgendwie übergeben, wenn nicht per URL dann per hidden. Anderst wird das sonst nichts. Wenn das auf deinem Win2k nicht läuft, dann dürfte da ein Einstellungsproblem vorliegen von PHP.

Ich würde fast wetten du hast ein Übergabeproblem und nicht ein Win2k oder PHP-Prob.

Zeit doch mal das Script ganz.

Hier noch einige Infos: http://www.dclp-faq.de/q/q-sessions-methode.html
kannste die url nochmal irgendwie zur Verfügung stellen?
bräucht mal ne genauere Erklärung zu den Sessions.. hab da auch so meine Probleme !

greetz²all

edit: hab grad noch was gefunden... bezüglich ungleichen SID´s
A common problem with session.auto_start, when activated in php.ini file, is the fact that if you've php objects inside the session classes must be loaded before session in started. You'll run into trouble then...

To avoid this, if you cannot ask your sysadmin to modify the php.ini file, add this line to your .htaccess wherever you need it in your application (usually on top of your app):

php_value session.auto_start 0
Hoffe das das richtige *g* ~jez nämlich schnell wech muss~
 
Zuletzt bearbeitet:
ZidaneIX hat gesagt.:
Hallo saila,
mit dem Link hast du mir gut auf die Sprünge geholfen...
Bisher wusste ich nicht wirklich, dass man die Session-Id übergeben muss um auf der nächsten Seite die gleiche SID zu bekommen...
Mir hatte man das damals so erklärt, dass der Browser eine bestimmte ID bestimmt, diese dann solange behält, bis der Browser geschlossen wird... und diese ID wird von PHP halt nur abgerufen (oder so ähnlich)....
Da hast Du schon recht. Grundsätzlich wird die Session-ID in einem Cookie gespeichert, welcher auf dem Rechner vom Benutzer abgelegt wird. Da man aber nicht zwigend davon ausgehen kann, dass jeder Besucher der Seite auch Cookies aktiviert hat, sollte man auf jeden Fall als Fallback-Variante die Methode mit Übergabe durch POST/GET wählen.

Einem Besucher wird beim Aufruf Ihrer Website eine eindeutige ID, die sogenannte Session-ID, zugeordnet. Diese wird entweder benutzerseitig in einem Cookie abgelegt oder in der URL übermittelt.
http://de3.php.net/manual/de/ref.session.php
 
Zurück