Forum
Tipps
News
Menu-Icon

sessions , wie ist das speicherverfahren

Hallo
Ich speichere eine Zahl in eine Session variable
$_session["user_id"] = 4

So diese Variable kommt doch nur auf meinem Rechner oder ?
Also die wird doch in meinem Browser gespeichert.

Bei mir läuft das so, das immer eine session geöffnet wird auf der Seite, aber jeder bekomtm dann eine gruppen_id in die session gespeciehrt, aber irgendwie klappt das nicht, wenn mehrere auf der Seite sind , wie kann das

wenn ich zum beispiel abfrage
if(4==$_session["user_id"])
sollte das naütlich nur auf meinen Rechner(Brwoser funktionieren)

Ich glaube ich habe da noch was im falschen kopf.
aber es wird doch für jeden user eine neue Session gestartet oder nicht ?


vielen dank schonmal
der_webi
 


Antworten zu sessions , wie ist das speicherverfahren:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ja, für jeden User wird eine Session gestartet, und für jeden Browser auch. Beim Standard-Session-Handling von PHP werden die Session-Daten als Datei auf dem Webserver gespeichert. Der Browser enthält nur ein Cookie mit der Session-ID, um die Referenz zum Session-Objekt auf dem Server herzustellen.

Hab ehrlich gesagt nicht verstanden, wo dein Problem liegt, aber vielleicht hilft dir die Erklärung ja schon ;)

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo
Ja bin ziemlich durch den Wind

1. Ich hab das mit den session schon verstanden

2. ich lade meine neue seite hoch, und  denke juhu endlich klappt mal alles, plötzlich kommt einer bei mir an
und erzähltz mir er hätte mein Profil geändert
ich gleich : HÄÄÄÄÄÄÄÄ.

Also auf meiner Seite läuft das so:

am anfang meiner Seite steht session_start(); das heist ja dann, das die session gestartet wurde.
Das passwirt bei jedem user!!!

Jetzt wird dann anhand eines login die gruppen_id in eine session Variable gespeichert.
Und dann wird auch noch eine User_id in die session gespeichert.

und jetzt frage ich zum beispiel für die Profilbearbeitung ab
if($_session["user_id"]==$_GET[user_id])
{
formular zum änder der daten
}

SO das könnte doch eigentlich nicht der Fall sein, wenn ein anderer User als ich das mache....

Aber anscheinend geht es ja doch, wenn er mein Profil geändert hat  ;D;D

Ich hoffe jetzt ist es verständlicher...


vielen dank schonmal
der_webi

 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Jupp, das war verständlicher.

Und jetzt kommt die Weisheit schlechthin: Da wird wohl irgendwo ein Programmierfehler vorliegen ;D

Was soll man dazu sagen? Natürlich dürfte es nicht passieren. Aber wie sollen wir den Fehler lokalisieren, so ganz ohne Code?

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Was soll man dazu sagen? Natürlich dürfte es nicht passieren. Aber wie sollen wir den Fehler lokalisieren, so ganz ohne Code?

Jaaaa.  ;D;D
Ich dachte das wäre ein Fehler, den ich bei der Überlegung von session gemacht habe.
Ich schaue mir das ganze noch mal in einem logischen Ablauf an.


ich melde mich dann noch mal

gruß
der_webi

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo nochmal
Ich habe das jetzt mal mit ein paar Mann getestet.
Funktioniert irgendwie alles nun(zum Glück)

Ich poste jetzt mal so meinen CODE vll entdeckt ihr ja nen Fehler:

also

ich habe eine index.php durch die findet die ganze Navigation statt.
am anfang der index.php steht:
session_start();

Also wird die session bei jedem gestartet, ob eingeloggt oder nicht.

jetzt kommt das interresantere:

<?php
#funktion loggt einen user ein
function user_login($passwort,$username) {

    
$sql "SELECT * FROM user WHERE passwort=MD5(&#39;".$passwort."&#39;) AND username=&#39;$username&#39;";
    
$query  mysql_query($sql) or die(mysql_error());
    
$fetched_user mysql_fetch_array($query);

    if(
mysql_num_rows($query)!=0)
    {
    
$_SESSION["gruppe_id"]= $fetched_user["gruppe_id"];
    
$_SESSION["username"]= $fetched_user["username"];
    
$_SESSION["user_id"]= $fetched_user["id"];
    
$_SESSION["session_id"] = session_id();
    echo 
"Sie sind einegloggt\n";
    }
    else
    {
    echo 
"Passwort oder Username stimmen nicht";
    }
  
}

#funktion setzt user status
function user_status() {
    if(empty(
$_SESSION["username"]) AND empty($fetched_user["username"]) AND empty($_SESSION["user_id"]))
    {
    
$_SESSION["gruppe_id"]= 1;
    }
}
?>


die variable $_SESSION["gruppe_id"] existiert also auch, wenn der user noch nicht eingeloggt ist.

Aber dann ist es halt 1 und 1 heist bei mir halt "GAST" also stink normaler Besucher.
wenn man eingeloggt ist, hat man dort mindestens 2 als Wert drin stehen.

Also jder User hat diesen Wert in seiner session

und wenn ich jetzt zum beispiel frage

if($_SESSION["gruppe_id"]=1)
{
echo "Hallo Gast";
}
elseif($_SESSION["gruppe_id"]=2)
{
echo "Hallo User";
}elseif
#...

so das passiert dann halt soähnlich auch wenn ich die Rechte aus der Datenbank hole und so, da kann aber normal kein Fehler drin sein  ;D;D;D

So jetzt meine Frage:
Da ist doch kein Programmierfehler drin?
Also ich mein jetzt kein Denk/logik Fehler.
Ich denke nicht das ihr Lust habt meine kompletten Codes mit Datenbänken und so durchzuschauen.
Und wie gesagt, bei den Rechten sind keine Fehler drin.

gruß
der_webi


 
« Letzte Änderung: 24.04.07, 21:34:18 von der_webi »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Die Login-Funktion ist nicht so ganz astrein, sollte aber im Regelfall keine Fehler produzieren. Problem ist: du nimmst dir den ersten zurückgelieferten Datensatz als Grundlage. Auch schaust du nur, ob mehr als Null Resultate existieren. Es ist aber anzuraten, auf die Eindeutigkeit des Users zu checken.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo

Naja also es ist eigentlich schon eindeutig, weil alle User einen anderen username haben somit kann ich doch im WHERE teil fragen wo  der username und das Passwort stimmen, weil es nicht sein kann, dass es 2 selbe datensätze gibt.
Oder meinst du das anders ?

gru
der-webi

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Was ist, wenn tatsächlich 2 gleiche Logins existieren?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Okay
Ist nen Argument.
Abser solange das der einzige Fehler ist, bin ich schon zu frienden
der ist jetzt ja nciht so gigantisch, ich änder das dann mal....

besten Dank
der_webi

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo
Also ich habe das Problem mit der session variable jetzt gelöst.

Ich hatte eine gleichnamige eifnach Variable, die dann irgendwie immer in die session variable geschrieben wurde.
Also klingt mir zwar völlig unlogisch, aber jetzt tuts

vielen dank
der_webi

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hängt sicher mit register_globals zusammen. Deswegen Session-Variablen immer anders nennen, z.B. mit dem Prefix 'session_'.

greez 8)
JoSsiF


« Hilfe bei phpBB ForensoftwareTipp: PHP Funktion "Convert HTML into text" »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Private Session
Private Session ist ein Modus, in dem kein Verlauf oder Chronik angelegt wird. Diese Funktion gibt es bei den üblichen Internet Browsern wie Internet Explorer, Apple...

Multiprozessor Rechner
Multiprozessorsysteme oder Multiprozessor-Rechner sind Computer, die mehr als einen Hauptprozessor (CPU) zur Ausführung von Aufgaben verwenden. Sie ermöglichen ...

Browser
Der Browser oder Webbrowser ist das Programm, dass die HTML - Befehle einer Internetseite mit Bildern, Videos und Texten auf dem Bildschirm anzeigt. Der Browser ist also ...