Radhad
Erfahrenes Mitglied
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:
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:
<?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> </p>
<input class="FormButton" type="submit" value="Speichern" name="submit" />
</fieldset>
</form>