kostenloser Webspace werbefrei: lima-city


Session wird nicht geändert

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    m*********i

    Ein freundliches hallo an alle =)

    Ich habe einen Captcha geschrieben der eine Session mit einem Wert belegt.
    Nach absenden eines Formulars wird dann geprüft ob die eingabe mit der Session des Captchas
    übereinstimmt.
    Dies funktioniert lokal auf XAMPP einwandfrei.
    Nachdem ich das ganze aber auf einen Server geladen habe habe ich das Problem das
    sich die Session nicht ändert.
    Es wird einmal ein Wert zugewiesen und dieser wird nicht mehr geändert.

    Captcha
    header("Content-type: image/png");
    header("Expires: Sat, 05 Nov 2005 00:00:00 GMT");
    header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    
    session_start();
    $zahl1 = mt_rand(1, 100);
    $zahl2 = mt_rand(1, 100);
    	
    $summe = $zahl1 + $zahl2;
    
    unset($_SESSION["att_cp"]);
    $_SESSION["att_cp"] = $summe;
    Meines erachtens ist das ja eigentlich eine sache der unmöglichkeit da ich die Session vorher lösche.

    Auswertung
    //und an dieser stelle bleibt der wert der session immer gleich.
    if($_POST["cp"] != $_SESSION["att_cp"]){
            $error = true;
    }

    Was ich aber noch erwähnen möchte ist,
    wenn ich die Session auf der seite mit dem Formular ausgebe, funktioniert wieder alles.
    Natürlich ist das keine lösung für das Problem.

    Also nun meine Frage an euch:
    Wieso ist das so und womit hängt das zusammen?
    Und wie kann ich das Problem beheben?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. bvb-fanclub-nr1-in-sundern

    Kostenloser Webspace von bvb-fanclub-nr1-in-sundern

    bvb-fanclub-nr1-in-sundern hat kostenlosen Webspace.

    Ich denke, Dein Problem liegt darin, dass "session_start();" ausgeführt werden muss, bevor der Header gesendet wird... in Deinem Script ist es genau anders herum! Siehe auch http://php.net/manual/de/function.session-start.php

    Beitrag zuletzt geändert: 1.2.2011 8:31:54 von bvb-fanclub-nr1-in-sundern
  4. Autor dieses Themas

    m*********i

    session_start() muss keines falls vor einem header gesetzt werden.
    Außer dieser würde in irgenteiner weise eine Ausgabe erzeugen.

    Die regel ist das vor dem senden eines headers sowie vor session_start keine Ausgabe erfolgen darf
    was hier nicht der fall ist. :wink:

    Schließlich wird die Session ja auch gesetzt, trotzdem danke für die Antwort. =)
  5. unset($_SESSION["att_cp"]);
    $_SESSION["att_cp"] = $summe;
    Meines erachtens ist das ja eigentlich eine sache der unmöglichkeit da ich die Session vorher lösche.
    Das stimmt so nicht. Du löscht ledeglich den Wert aus der Session, nicht die Session selbst. Allgemein gilt, wenn du ein Array löschen willst, müsstest du das mit unset($_SESSION) machen (siehe PHP-Doku), allerdings ist das bei Sessions anders: die lassen sich nur mit session_destroy() sicher leeren.
    Alleine das Verwenden von $_SESSION["att_cp"] = $summe; sollte aber bereits den alten Wert überschreiben.

    Was mir jetzt noch nicht ganz klar ist: wolltest du die Session ganz löschen, oder nur einen einzelnen Wert ändern?
  6. Autor dieses Themas

    m*********i

    Das stimmt so nicht. Du löscht ledeglich den Wert aus der Session, nicht die Session selbst.
    Richtig ich hab mich an der stelle falsch ausgedrückt. :wink:

    Ich wollte nur den einzelnen Wert löschen in der hoffnung das es dann
    funktioniert, obwohl mir bewusst war das es auch ohne funktioniert.
    Hat aber nichts bewirkt.

    Aus diesem Grund spielt das unset eigentlich keine weitere Rolle mehr.


  7. 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!