Session IDs

du solltest die session erst starten, wenn klar ist, dass der User rein darf. Also am besten
if(wenn dein Check = positiv) {
dann session_start();
header ("Location:./logged/check.php&".SID);
... bla bla bla
} else {

echo "ätsch";

}

Wie gesagt: immer die SID anhängen.

in deinem Beispiel:
PHP:
if (!$zeileholen)
    {
        $error = true;
    }

    if ($zeileholen["pass"] <> $passwort)
    {
        $error = true
    }

    if(!$error) {
      session_start();       
      header ....
    } else {
       echo "ätsch, da war was falsch";
    }

Ciao, F.o.G.
 
Zuletzt bearbeitet:
hm... jo das hab ich jetzt gemacht, aber wie is das jetzt mit der Session ID? Wie mach ich des zu ner Variable? Weil so wie oben funzt das nicht.

code: stimm aber net wirklich ;)
PHP:
<?php
    session_start();
    include('var.inc.php');
    
    if ((!isset($username)) OR (!isset($passwort)))
    {
        die ("Du hast keinen Namen oder PW angegeben!");
    }

    $conn = @mysql_connect($dbserver,$dbuser,$dbpass);

    if (!$conn)
    {
        die ("Sorry, Verbindungsversuch zur Datenbank ist fehlgeschlagen !");
    }

    mysql_select_db($dbname,$conn);
    $query = "SELECT pass, level FROM zugriff WHERE name = '".$username."'";
    $result = mysql_query($query,$conn);
    $result = mysql_query("SELECT pass, level FROM zugriff WHERE name = '$username'",$conn);
    $zeileholen = mysql_fetch_array($result,MYSQL_ASSOC);
    mysql_close($conn);

if (!$zeileholen)
    {
        $error = true;
    }

    if ($zeileholen["pass"] <> $passwort)
    {
        $error = true
    }

    if(!$error) {
      session_start();       
      header ("Location:./logged/check.php&".SID");
    } else {
       echo "ätsch, da war was falsch";
    }

    $level = $zeileholen["level"];
	

    session_register('username');
    session_register('level');
	session_register('zaehler');
 ?>
 
Zuletzt bearbeitet:
zuerst sollte das eher so aussehen, weil nachdem header das Script verlassen wird.

PHP:
    if (!$zeileholen)
    {
        $error = true;
    }

    if ($zeileholen["pass"] <> $passwort)
    {
        $error = true
    }

    if(!$error) {
        session_start();       
        $level = $zeileholen["level"];
    

        session_register('username');
        session_register('level');
        session_register('zaehler');
        header ("Location:./logged/check.php&".SID");
    } else {
        echo "ätsch, da war was falsch";
    }

Also falls die SID wieder erwarten nicht vorhanden ist (ist aber eigentlich unnormal), dann kannst du die ID so bekommen:

$sessid = session_id();

Eigentlich schon zu einfach oder? Um solche Funktionen zu finden, kannst du auch zu PHP.net und dort in der deutschsprachigen Hilfe nach session suchen. Dann bekommst du alle Funktionen. Auch das kleine Buch PHP GE-PACKT ist sehr hilfreich und kostet nur 15 €.

Ciao, F.o.G.
 
naja... ich bin nicht dumm oder so in sachen php, nur mit mysql wird kritisch... und das mit den Variablen hab ich nicht so gemeint, sondern ich muss es ja erstmal aus der DB raus bekommen (feld: id) und dann in ne variable umwandeln. Aber trotzdem danke.

Ich hab jetzt mal meinen Quelltext durch deinen ersetzt und ich bekomm den Fehler : Parse error: parse error, unexpected '}' in /home/sonicks/public_html/www/skow/verify.php on line 32 .

Sieht so aus...
PHP:
<?php
    session_start();
    include('var.inc.php');
    
    if ((!isset($username)) OR (!isset($passwort)))
    {
        die ("Du hast keinen Namen oder PW angegeben!");
    }

    $conn = @mysql_connect($dbserver,$dbuser,$dbpass);

    if (!$conn)
    {
        die ("Sorry, Verbindungsversuch zur Datenbank ist fehlgeschlagen !");
    }

    mysql_select_db($dbname,$conn);
    $query = "SELECT pass, level FROM zugriff WHERE name = '".$username."'";
    $result = mysql_query($query,$conn);
    $result = mysql_query("SELECT pass, level FROM zugriff WHERE name = '$username'",$conn);
    $zeileholen = mysql_fetch_array($result,MYSQL_ASSOC);
    mysql_close($conn);

    if (!$zeileholen)
    {
        $error = true;
    }

    if ($zeileholen["pass"] <> $passwort)
    {
        $error = true
    }

    if(!$error) {
        session_start();       
        $level = $zeileholen["level"];
        $sessid = session_id();    


        session_register('username');
        session_register('level');
		session_register('sessid');
        session_register('zaehler');
        header ("Location:./logged/check.php&".SID");
    } else {
        echo "ätsch, da war was falsch";
    }
?>
 
Zeile 29: $error = true;
Deine Mysql Abfragen hab ich mir nicht angeschaut. Ich hab mcih auf das Session Problem konzentriert.

Ciao, F.o.G.
 
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/sonicks/public_html/www/skow/verify.php on line 46

:( Ich verzweifel noch irgendwann
 
och mensch: SID ist wie eine Variable:

statt header ("Location:./logged/check.php&".SID");
muss das hin: header ("Location:./logged/check.php&".SID);

so hatt ich das auch gepostet. Da hinter SID nichts mehr kommt, bracuh man den String nicht beenden. Ansonsten würde das sowieso ganz anders aussehen müssen:

header ("Location:./logged/check.php&".SID."&mist=dreck");

Bitte versuch mal solch kleinen Fehler selber zu finden :)

Ciao, F.o.G.
 
hmpf... naja gut sorry, klappt... und des mit der Session id stimmt auch soweit oder? Oder muss ich die doch noch auslesen?

Naja dann mal thx für alles ;)
 
war ja net bös gemeint, aber um 2 Uhr inner Nacht .... du verstehst ;)

Du kannst auf der Folgeseite ja zum Test die ID ausgeben:

echo session_id();

Wenn was erscheint war alles ok. Ausserdem dürfte alles was nach session_start() kommt einem unauthorisierten User nicht angezeigt werden. Sonst wäre der Schutz ja nicht gegeben.

Ich glaube man kann die User dann auch wieder abfangen, die unauthorisiert sind:

if(session_start()) {

} else {

header("Location: login.php");

}

sicher bin ich mir nicht aber logisch wäre es.

Ciao, F.o.G.
 
kommt userid e05cbdef8222482d7a05bbfbd6755a4f sowas in der art... ich denk des stimmt oder? ;)

Ne is klar, ich stell mich glaub au nur dumm an weils so spät is und ich au noch einige private probs hab. Ich dank dir erstmal hast mir schon ziemlich weitergeholfen.

MFG sonicks

gn8 ;)
 
Zurück