Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 25

Thema: PHP - SessionProbleme

  1. #1

    PHP - SessionProbleme

    hallo Leute koennt ihr mir helfen mit meinem board?!?

    auf meiner haupt-board-seite wo alles includet wird steht session_start();

    so beim einloggen wird zB reingeschrieben:
    $_SESSION["name"] = $name;
    $_SESSION["passwort"] = $passwort;

    so, dann wird auch alles richtig gemacht, wird dann auch zB ueber
    $login_name = $_SESSION["name"];
    print("$login_name");
    auch alles richtig ausgegeben, nur wenn ich dann zB weiter klicke zB in ein thread reingehe, dann ist auf einmal nichts mehr in der session drinne und wird nichts ausgegeben und bin dann nicht eingeloggt!

    woran kann dies liegen? im prinzip ist alles richtig, denn bei mir auf dem apache2 server funzt alles einwandfrei, nur nicht auf dem server im internet!

    plz help! thx im voraus!

    mfg WebRobert


    Wollte nur mal angemerkt haben, daß ich den Thread ins Webdev-Forum verschoben habe. --Jeez

    Geändert von Jesus_666 (24.01.2005 um 18:52 Uhr)

  2. #2
    Pack in die erste Zeile des Php-Codes jeder(!) Seite den Befehl session_start() rein.
    Und poste nächstes mal ins Webdesigner-/Programmiererforum, wenn du eine Frage zu Php hast (zumindest, wenn sie eindeutig Webprogrammierung bestrifft).

  3. #3

    hab ich

    ds hab ich jetzt gemacht und klappt trotzdem nicht!
    woran kann es liegen?

    ich hab jetzt sogar bei reinschreiben in die session
    statt $_SESSION["name"] = $name;
    dies gemacht:
    $name = "hans";
    session_register("name");

    und geht immer noch nicht! help!

  4. #4
    Ich hab' nicht soviel Ahnung von Session. Werden die Session-IDs bei dir evtl. nur mittels Cookie gespeichert? Wenn ja, würde ich das ändern, viele Surfer lassen nicht alle Cookies zu.

  5. #5
    Zitat Zitat von masterquest
    Ich hab' nicht soviel Ahnung von Session. Werden die Session-IDs bei dir evtl. nur mittels Cookie gespeichert? Wenn ja, würde ich das ändern, viele Surfer lassen nicht alle Cookies zu.
    wie soll ich denn das aendern? ich hab auch nicht viel ahnung mit sessions!

  6. #6
    Einfach die Session ID per GET übermitteln, du hast zwar dann immer nen häßlichen Hash in der Leiste, aber dafür braucht es keine Cookies.

  7. #7
    Ich versteh ja das Anti-Cookie Argument. Aber jeder der aktiv in Foren mitwirkt wird wohl Cookies aktiviert haben.

    Ohne Cookies funktioniert zB das automatische Einloggen nicht mehr.

  8. #8
    Das beruhigt mich: Ich bin nicht der einzige, der Probleme mit Sessions hat
    Möglich wäre es, dass du in der ersten Datei mit session_name() der Session einen neuen Namen zugewiesen hast und es deshalb nicht funktioniert. Um die SID per URL zu übergeben musst du "nur" an jeden Link folgendes anhängen:
    Code:
    echo '<a href="index.php?'.SID.'">Index</a>';
    echo '<a href="view_forum.php?id=3&'.SID.'">Forum</a>';

  9. #9
    @ ork
    Wäre das nicht so sinnvoller:
    PHP-Code:
    echo '<a href="index.php?SID='.SID.'">Index</a>';
    echo 
    '<a href="view_forum.php?id=3&SID='.SID.'">Forum</a>'
    Sonst kommt man irgendwie nicht so gut an die ID ran...
    (BTW, muss man nicht &amp; statt & nehmen? Zumindest für den Validator )

  10. #10
    Zitat aus dem PHP-Manual zur Konstante "SID":
    Zitat Zitat
    Konstante, die entweder den Namen und die ID der Session in der Form "name=ID" enthält oder eine leere Zeichenkette, falls die Session-ID in einem entsprechenden Cookie gesetzt wurde.
    Aber das mit &amp; statt & stimmt, hab ich kurzfristig vergessen (der Validator hätte mich ja aber freundlich darauf hingewiesen )

  11. #11
    Zitat Zitat von Der Threadersteller
    statt $_SESSION["name"] = $name;
    dies gemacht:
    $name = "hans";
    session_register("name");
    Piiiiiiiiep.
    Zitat Zitat von Dingsi
    Code:
    $bla = "123";
    session_register("bla");
    Veraltet, unsauber und nur bei aktivierten register_globals funktional (Bei neueren PHP-Version sind register_globals endlich standardmäßig deaktiviert). Besser und mMn übersichtlicher ist es folgendes zu machen:
    Code:
    $_SESSION['bla'] = "123";

  12. #12
    @dingsi:
    das mit der veralteten weise hab ich auch nicht angewendet, mache es so wie du es gesagt hast, aber hatte ich auch schon fueher gemacht, bevor du es mir gesagt hast!

    @all:
    das prob ist behoben, musste einfach in den internet-optionen unter datenschutz automatisches cookie-bearbeiten ausmachen und somit einfach cookies annehmen!

    mit firefox ging das sowieso sofort einwandfrei!

    thx fuer alle fleissigen posts und hilfe-versuche!

    mfg WebRobert

  13. #13
    Ja ... ich hab auch irgendwie gerade ein dämliches Sessionproblem >_>

    Zitat Zitat
    Hab mich jetzt mal ein klein wenig mit Sessions auseinandergesetzt und die dann auch anstelle der Cookies verwendet ... aber sobald ich auch nur ein session_start(); an den Anfang der Datei schreib, weigert sich mein Browser strikt, diese aufzurufen ._.
    Siehe auch hier
    Aus irgendeinem Grund will nichts mehr funktionieren, wenn ich auch nur session_start(); hinschreibe und den restlichen Sessionkram (ohne den es vorher ja funktioniert hatte) weglasse ... der erste Teil des Scripts (mit PHP-Anweisungen) sieht so aus ...

    PHP-Code:
    <?php session_start();
    include (
    'global.php'); // mit MySQL-Verbindung usw.

    if ($_GET['autologin'] != 'false' && isset ($_COOKIE['chat_user']) && isset ($_COOKIE['chat_pass']))
    {
        
    $username $_COOKIE['chat_user'];
        
    $password $_COOKIE['chat_pass'];
    }
    else
    {
        
    $username $_POST['user'];
        
    $password md5($_POST['pass']);
    }

    $select mysql_query ('SELECT `ID`, `pass` FROM `chat_users` WHERE `user` = "'.$username.'"');
    while (
    $row mysql_fetch_array ($select))
    {
        if (
    $password == $row[1])
        {
            
    $_SESSION['chat_logged'] = true;
            
    $_SESSION['chat_logged_as_id'] = $row[0];
            
    $_SESSION['chat_logged_as'] = $username;
            
    $_SESSION['chat_logged_pass'] = $row[1];

            if (
    $_POST['cookie'] == true && !isset ($_COOKIE['chat_user']))
            {
                
    setcookie ('chat_user'$_POST['user'], time() + 60*60*24*365);
                
    setcookie ('chat_pass'md5($_POST['pass']), time() + 60*60*24*365);
            }

            
    mysql_query ('UPDATE `chat_users` SET `lastlogin` = NOW(), `active` = 1 WHERE `user` = "'.$username.'"');
            
    mysql_query ('INSERT INTO `chat_messages` (`msg`, `user`, `zeit`) VALUES ("'.$username.' hat sich gerade eingeloggt!", "-Chatbot-", NOW())');
            
    header ('Location: chat.php?'.SID); // wobei ich mir nicht ganz sicher war, ohne SID geht's aber auch nicht
            
    exit();
        }
    ?>
    Das einzig veränderte daran ist eigentlich der Teil nach der Passwortkontrolle, und zwar dass nun die Daten in Sessionvariablen und nicht mehr in Cookies gespeichert werden ... mit Cookies funktionierte es zwar in den Grundlagen, führte aber zu Fehlern. Wäre schön wenn mir wer das erklären kann ._.

  14. #14
    @ Tomarus:
    Browser haben mit Sessions nix zu tun... zumindest nicht mit diesen PHP-Sessions.
    Alles findet auf dem Server statt
    Hat ein User noch keine Session-ID (welche per Cookie oder auch per GET-Variable an das Script übergeben wird) wird per session_start() eine ID angelegt.
    Jede Session-ID hat dann ein Konto an Variablen die man mit der ID assoziiert anlegen kann und die, soweit die Session-ID an das Script übergeben wird (per Cookie oder auch GET-Variable), kann das Script auf das damit Assoziierte Konto zurückgreifen.
    Alles was nun also ein Browser tun können muss, ist:
    1.: Cookies annehmen und an Scripte übergeben,
    oder
    2.: Variablen+Werte per GET an ein Script übergeben.
    Ersteres können schätzungsweise 90% aller Clients die im Netz unterwegs sind.
    Zweiteres... *zucktmitdenschultern* 99%.

    Hier stellt sich ergo eher die Frage, ob dein Server überhaupt mit Sessions klarkommt.
    Mach halt mal'n phpinfo() und schau was dort bei den Sessions erlaubt ist.

    Ansonsten ist dieser Text zum Thema Sessions recht interessant:
    http://tut.php-q.net/sessions.html

  15. #15
    Hatte ich schon nachgeschaut, wusst nur net genau, was da nu aktiviert sein muss und was nicht ... also die infophp.php sagt mir folgendes ...

    Code:
    Session Support 		enabled 
    Registered save handlers 	files user mm 
    
    Directive			Local Value	Master Value
    session.auto_start		Off		Off
    session.bug_compat_42		On		On
    session.bug_compat_warn		On		On
    session.cache_expire		180		180
    session.cache_limiter		nocache		nocache
    session.cookie_domain		no value	no value
    session.cookie_lifetime		0		0
    session.cookie_path		/		/
    session.cookie_secure		Off		Off
    session.entropy_file		no value	no value
    session.entropy_length		0		0
    session.gc_dividend		100		100
    session.gc_maxlifetime		1440		1440
    session.gc_probability		1		1
    session.name			PHPSESSID	PHPSESSID
    session.referer_check		no value	no value
    session.save_handler		files		files
    session.save_path		/tmp		/tmp
    session.serialize_handler	php		php
    session.use_cookies		On		On
    session.use_only_cookies	Off		Off
    session.use_trans_sid		On		On
    Hat das was mit dem Autostartdingens zu tun? Aber ich mein ... müsst dann beim Aufrufen der Datei nicht wenigstens ne Fehlermeldung oder der HTML-Teil der Datei angezeigt werden? Ist ja gleich auf der Loginseite, auf der die Session eigentlich erst nach dem erfolgreichen Login starten sollte ._. Und außerdem, einmal hatte ich auf diesem Server schon was mit Sessions gemacht, und da funktionierte es auch ...

    Ich werd's mal eben auf nem anderen Host versuchen ... gestern hat mein FTP-Prog gestreikt >_>
    [edit] Habs mal woanders getestet ... da streikt er zwar nicht gleich wegen dem session_start();, funktionieren tut's aber auch nichts >_>

    Geändert von Tomarus (06.02.2005 um 10:57 Uhr)

  16. #16
    ich hatte das gleiche prob dass er session_start() net erkennen konnte!

    das liegt aber daran, das der internet explorer standartmaessig cookies nicht annimmt!
    firefox tut dies!

    mit dem IE:

    du gehst auf internet optionen -> datenschutz -> erweitert-> automatische cookiebehandlung ausschalten (haekchen hinmachen!)

    so muesste das gehen!

    mfg WebRobert

  17. #17
    Öhm joar ... nur haben Sessions nicht unbedingt was mit Cookies zu tun, und zweitens benutz ich ja normalerweise Opera und hab überall anders mit Sessions keine Probleme >_>

    Es ist einfach nur, dass die Seite, sobald ich das session_start(); in die erste Zeile schreibe, nicht mehr will >_>

    Kann jetzt eigentlich irgendwer diese phpinfo da oben deuten?

  18. #18
    Zitat Zitat von Tomarus
    ...Kann jetzt eigentlich irgendwer diese phpinfo da oben deuten?
    Keine Ungereimtheiten, bis auf den Umstand, das dein SID nicht funktionieren wird.
    Standard-Name des Variable-Value-Paars ist PHPSESSID.
    Wie man nun einen anderen, eigenen Namen per PHP-Funktion im Script initiiert, weiß ich nicht, geht aber. Ich machs direkt in der php.ini. Das ist der Vorteil eines root-Zugangs.

    Weshalb dein Script nun so seltsam reagiert, weiß ich nicht. Ich bin zu faul/hab zu viel zu schaffen dein Script bis ins Detail zu analysieren.

  19. #19
    session_name('SID');
    It's as easy as that!
    Muss aber vor jedem session_start() neu aufgerufen werden

  20. #20
    Irgendwie fühle ich mich langsam schlecht, nie was zum Problem selber zu schreiben sondern nur zu anderen Sachen die nebenbei erwähnt wurden.. Aber auch nur langsam..
    Zitat Zitat von Chocwise
    Wie man nun einen anderen, eigenen Namen per PHP-Funktion im Script initiiert, weiß ich nicht, geht aber.
    Jup. Vor dem session_start(); einfach session_name("name_fur_session"); Machen. Unter name_fur_session wird dann der Cookie bzw die GET-Variable gespeichert...

    EINE Sekunde. EINE. :/.
    Quatsch, eine Minute.

Berechtigungen

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