kostenloser Webspace werbefrei: lima-city


Session Problem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    bilo

    bilo hat kostenlosen Webspace.

    Hi,

    als erstes wollte ich sagen das ich vllt seit 2-4 Jahren FASST nichts mehr mit PHP gemacht habe :D

    Ich hab jetzt eine Seite ende 2005 sinnlos da stehen. Heute hatte ich dann lust sie es mal wieder anzusehen und auf der Seite war ein Fehler die ich nie beseitigt habe. So hab ich versucht dann sie zu beseitigen aber bekomme es nicht hin. Quelltext ist auch sehr unübersichtlich und alles wurde durcheinander includiert aber ich versuch zu erklären.

    Es gibt ein index.php. Der enthält oben session_start. Man kann sich da einloggen und es wird $_SESSION["username"] = $username; definiert. Nun wenn man eingeloggt ist wird etwas neu includiert und da wird auch gefragt ob session existiert. Läuft alles prima. in index.php wird switch.php geladen und dort dann die neuen seiten als links angezeigt. Z.B. main.php. Da drinne ist nochmal news.php, und writenews.php. Und in writenews.php hab ich das Problem. Dort erkennt er meine $username nicht. Wenn ich echo als test eingebe steht da test. .aber bei username einfach nichts. In main.php gibst noch die session aber nicht in writenews. Normaleweise guckt er dort ob der User ein admin ist usw damit er post verfassen kann aber naja. Woran kann das liegen. Da index so oder so oben session_start stehen hat und alles andere includiert ist muss doch jetzt jedes datei das haben oder nicht? Es läuft ja alles über index.php.

    Achja. in neswrite.php müsste ich außerdem nochmal config.php includieren.. sonst sagte es no database selcted oder so

    mfg
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Das hört sich sehr verdächtig danach an, als hättest du register_globals auf on und würdest dich richtig darauf verlassen :scared:

    Das darfst du schon allein wegen der auftretenden Sicherheitslücken nicht tun. Lasse doch mal $_SESSION['username'] ausgeben, oder füge mal diesen Code ein:
    echo '<pre>';
    var_dump($_SESSION);
    echo '</pre>';
  4. Autor dieses Themas

    bilo

    bilo hat kostenlosen Webspace.

    array(0) kommt da
    mit ausgeben hab ich schon ausprobiert. Geht nicht. Meinst du das in php.ini? Da hab ich keinen zugriff mehr.. kein rootpw ^^. Die Seite wird so oder so gelöscht.

    Beitrag zuletzt geändert: 2.4.2010 18:50:19 von bilo
  5. regiser_globals ist heutzutage schlauerweise auf 'off' gestellt.
    Deswegen musst du dir den Usernamen aus dem passenden "superglobalen" Array besorgen.

    Entweder:

    $_SESSION["username"] = $_GET['username'];

    oder:

    $_SESSION["username"] = $_POST['username'];

    Je nachdem, wie du den Parameter 'username' dem Script übergeben hast.

  6. Autor dieses Themas

    bilo

    bilo hat kostenlosen Webspace.

    So sieht es bei miraus
    <?php 
    require("inc/config.php");
    
    $username = $_POST["username"]; 
    $passwort = md5($_POST["password"]); 
    
    $abfrage = "SELECT username, passwort, status FROM user WHERE username LIKE '$username' LIMIT 1"; 
    $ergebnis = mysql_query($abfrage); 
    $row = mysql_fetch_object($ergebnis); 
    
    if($row->passwort == $passwort) 
        { 
        $username = $row->username;
        $_SESSION["username"] = $username;
        echo '<a href="index.php">O.K. Baby du bist Online, checkst hier rein.*kloiK*</a>'; 
    #$abfrage = "UPDATE online FROM user WHERE username LIKE '1'";
    #header("location: start.php");
        } 
    else 
        { 
        echo "Benutzername und/oder Passwort waren falsch. <a href=\"index.php\">Zurück</a>";
    }
    
    if($row->status == Hauptadmin) 
       {
       echo "<br><br>Status $row->status erhalten. <br>";
       }
    ?> 
    
    </div>
    
    
    <?
    if(!isset($_SESSION["username"])) 
       { 
       echo '
    <div id="footer">
    <center>Alle Rechte vorbehalten</center>
    </div>';
    } else {
    echo '
    <div id="footer">
    <a href="?seite=logout" style="font-size:20px;text-align:left;padding-left:10px;color:white;">Logout</a><center>Alle Rechte vorbehalten</center>
    </div>';
    }
    
    ?>


    jetzt versuch ich dein vorschlag.. wobei ihc das etwas bezweifele

    Beitrag zuletzt geändert: 6.4.2010 22:28:55 von bilo
  7. Du musst einfach ganz oben hin ein
    session_start();

    schreiben.

    LG cookies
  8. Autor dieses Themas

    bilo

    bilo hat kostenlosen Webspace.

    cookies schrieb:
    Du musst einfach ganz oben hin ein
    session_start();

    schreiben.

    LG cookies


    Das steht schon. Das war ja nur ein Teil =)
  9. Wenn es in den anderen Bereichen funktioniert könnte es dann sein, dass Du irgendwo vor dem include der writenews.php ein unset($_SESSION) oder ein unset($_SESSION['username']) hast?
  10. Autor dieses Themas

    bilo

    bilo hat kostenlosen Webspace.

    Aber dann müsste man ja bei Neuladen der Seite wieder ausgeloggt sein. Ist ja aber nicht der Fall. Session wird nur bei korrekte PW eingabe definiert bzw beim ausloggen wieder gelöscht. Sonst hab ich da eigentlich nichts. Hab auch eben geguckt.
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!