tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
210
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Radhad Radhad ist offline Mitglied Diamant
    Registriert seit
    Mar 2003
    Ort
    Wuppertal (NRW)
    Beiträge
    1.917
    Blog-Einträge
    35
    Hallo zusammen,

    ich habe mir ein kleines Script zur Aktivierung von Accounts erstellt. Nachdem der Account aktiviert worden ist muss der benutzer ein Kennwort eingeben. Nach klick auf "Speichern" im Formular wird das Kennwort gespeichert. Allerdings verliere ich die SESSION-Variable "userid". Woran kann das liegen? Das Script wird per include() in mein "HTML Template" (kein wirkliches Template) geladen, wo auch session_start() gesetzt ist. Ich verstehe das einfach nicht! Ich hoffe ihr könnt mir helfen. Wer das live sehen will kann mir eine PN schicken.

    Hier mal das Script:
    PHP-Code:
    <?php
    $errormessages 
    = array();
    $i 0;
    $error false;

    function 
    check_passwordlength($password)
    {
        if(
    strlen($password) >= 5)
        {
            return 
    true;
        }
        else
        {
            return 
    false;
        }
    }

    function 
    randString$length=12$charset='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' )
    {
        
    $retVal '';
        
    $cardinality strlen($charset);
        for( 
    $i=0$i<$length$i++ )
        {
            
    $retVal .= $charset{mt_rand()%$cardinality};
        }
        return 
    $retVal;
    }


    if(isset(
    $_POST["submit"]))
    {    
        
    $password strip_tags($_POST["password"]);
        
    $password2 strip_tags($_POST["password2"]);
        
        if(
    $password == "")
        {
            
    $error true;
            
    $errormessages[$i] = "Bitte geben sie ein Passwort ein<br />";
            
    $i++;
        }
        else
        {
            if(!
    check_passwordlength($password))
            {
                
    $error true;
                
    $errormessages[$i] = "Das Passwort ist zu kurz. Passwörter müssen mindestens 5 Zeichen enthalten!<br />";
                
    $i++;
            }
        }
        
        if(
    $password != $password2)
        {
            
    $error true;
            
    $errormessages[$i] = "Die Passwörter stimmen nicht überein!<br />";
            
    $i++;
        }
        if(!
    $error)
        {
            
    print_r($_SESSION);
            
    $offset randString();
            
    $password .= $offset;
            
    $sql "UPDATE nk_users SET offset = '".mysql_real_escape_string($offset)."', password = '".mysql_real_escape_string(hash("md5",$password))."' WHERE userid = ".mysql_real_escape_string($_SESSION["userid"]);
            echo 
    "<br />".$sql."<br />";
            
    mysql_query($sql) or die ("Error: ".mysql_error());
            
    //header("Location: http://www.codegroup.de/Privat/Radhad/netkicker/pwchanged");
        
    }
    }
    if(isset(
    $_GET["key"]) && $_GET["key"] != "")
    {
        
    $sql "SELECT userid FROM nk_users WHERE activationkey = '".mysql_real_escape_string($_GET["key"])."'";
        
    $ressource mysql_query($sql) or die ("Error: ".mysql_error());
        
    $user mysql_fetch_assoc($ressource);
        
        
    $_SESSION["userid"] = $user["userid"];
        
    print_r($_SESSION);
        
        
    $sql "UPDATE nk_users SET activationkey = NULL WHERE activationkey = '".mysql_real_escape_string($_GET["key"])."'";
        
    $ressource mysql_query($sql) or die ("Error: ".mysql_error());
        
        if(
    mysql_affected_rows() == 1)
        {
            echo 
    '<h1>Account aktiviert</h1>
            <p>Ihr Account wurde erfolgreich aktiviert.</p>'
    ;
        }
        echo 
    '<h1>Passwort eintragen</h1>
        <p>Trage nun dein Passwort ein. Dies muss sofort gemacht werden da du sonst deinen Account nicht nutzen kannst!</p>'
    ;

        if(
    count($errormessages) > 0)
        {
            echo 
    '<p class="errormessages">';
            
            foreach(
    $errormessages as $errormessage)
            {
                echo 
    $errormessage;
            }
            echo 
    "</p>";
        }
    }
    ?>
    <form action="activate" method="post">
        <fieldset>
            <p>Passwort:</p><input type="password" name="password" />
            <p>Passwort wiederholen:</p><input type="password" name="password2" />
            <p>&nbsp;</p>
            <input class="FormButton" type="submit" value="Speichern" name="submit" />
        </fieldset>
    </form>
     
    Mein neues Projekt: zandman.de - Bericht über den Aufbau einer Entwicklungsumgebung für Test-Driven-Development mit phpUnderControl und dem Aufbau einer Webapplikation mit Zend Framework Version 1.9.x

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Bist du dir sicher, dass die Sitzung gestartet wird? Wird die Sitzungs-ID korrekt übergeben und so die vorhandene Sitzung wieder aufgenommen? Kommt es überhaupt dazu, dass der Wert gesetzt wird?
     
    Markus Wulftange

  3. #3
    Radhad Radhad ist offline Mitglied Diamant
    Registriert seit
    Mar 2003
    Ort
    Wuppertal (NRW)
    Beiträge
    1.917
    Blog-Einträge
    35
    also der Wert wird gesetzt, und die Session wird auch gestartet, denn wenn ich in diesem Script oben session_start() verwende, kommt die Meldung von wegen "Notice: a session has been started before" oder so ähnlich. Ich geb jetzt nochmal die Session selbst aus, aber das dürfte ja eigentlich nichts ändern!

    [EDIT]
    Hmm... ich habe 2 Cookies namens PHPSSID zu der Domain, eigenartig
    Geändert von Radhad (27.04.07 um 16:40 Uhr)
     
    Mein neues Projekt: zandman.de - Bericht über den Aufbau einer Entwicklungsumgebung für Test-Driven-Development mit phpUnderControl und dem Aufbau einer Webapplikation mit Zend Framework Version 1.9.x

  4. #4
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Zitat Zitat von Radhad Beitrag anzeigen
    Hmm... ich habe 2 Cookies namens PHPSSID zu der Domain, eigenartig
    Heißt das, das Problem ist gelöst?
     
    Markus Wulftange

  5. #5
    Radhad Radhad ist offline Mitglied Diamant
    Registriert seit
    Mar 2003
    Ort
    Wuppertal (NRW)
    Beiträge
    1.917
    Blog-Einträge
    35
    Ne, leider nicht
     
    Mein neues Projekt: zandman.de - Bericht über den Aufbau einer Entwicklungsumgebung für Test-Driven-Development mit phpUnderControl und dem Aufbau einer Webapplikation mit Zend Framework Version 1.9.x

Ähnliche Themen

  1. Problem mit Session
    Von Sessionnase im Forum PHP
    Antworten: 5
    Letzter Beitrag: 07.07.10, 07:47
  2. Antworten: 2
    Letzter Beitrag: 20.10.09, 12:35
  3. Antworten: 8
    Letzter Beitrag: 29.01.09, 01:38
  4. Session problem!
    Von proloser im Forum PHP
    Antworten: 10
    Letzter Beitrag: 10.11.06, 18:48
  5. Session Problem
    Von DarkSummer im Forum PHP
    Antworten: 4
    Letzter Beitrag: 17.04.02, 20:55