Source

Selador / usersetup.php

<?php

/* usersetup.php - Front-end code for the in-portal setup page
 *
 * Copyright (C) 2006, 2007, 2008 Kevin Read, Simone Schaefer
 *
 * This file is part of Selador, a browser-based fantasy strategy game
 *
 * This program is distributed under the terms of the GNU Affero General Public License.
 *
 *
 *   Selador is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU Affero General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   any later version.
 *
 *   Selador is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU Affero General Public License for more details.
 *
 *   You should have received a copy of the GNU Affero General Public License
 *   along with Selador.  If not, see <http://www.gnu.org/licenses/>.
 **/

header ("Content-Type: text/html; charset=UTF-8");
ob_start ();
require_once ("php/base/config.inc.php");
require_once ("php/base/AuthDB.inc.php");
if (FORUM_NEEDED)
	require_once ("php/base/forumdb.inc.php");
require_once ("php/base_functions.php");
require_once ("php/base_outside.php");
require_once ("php/auxiliary.php");
session_start ();

if (!isset ($_SESSION['authed_user']))
{
	require_once ("index.php");
	die ();
}

if (!$_SESSION['email_ok'])
{
	require_once ("activate.php");
	die ();
}
$authdb = new AuthDB;
// require_once("php/base/user.inc.php");
// require_once("php/base.php");
// require_once("php/event.php");

require_once("menue_portal.php");

$query = "select * from user where uid=".$_SESSION['authed_uid'];
$result = $authdb->query ($query);
$row = mysql_fetch_array($result);

?>
<form name="setup" method="POST" action="usersetup.php">
<div id="contentbox">
<?php
$err = false;

if (isset ($_POST['del']))
{
	if ((MD5($_POST['del_passwd'])) != ($row['password']))
		$err ="Das von dir eingegebene alte Kennwort ist nicht korrekt<br>";
	else
	{
		require_once ("php/base/forumdb.inc.php");
		$forumdb = new ForumDB;

		$forumdb->delete_user ($_SESSION['authed_user']);

		$authdb->query ("start transaction");

		$query = "delete from sitter where uid=".$_SESSION['authed_uid']." or sitting_uid=".$_SESSION['authed_uid'];

		if (!$authdb->query ($query))
		{
			$err = "Leider ist ein Datenbank-Fehler aufgetreten.";
			log_err ("Cannot delete sitter for deleted user. Query: ".$query.", ".$authdb->error ());
			$authdb->query ("rollback");
		}
		else
		{
			$query = "select invited_by from user where uid=".$_SESSION['authed_uid'];

			if (!($res = $authdb->query ($query)))
			{
				$err = "Leider ist ein Datenbank-Fehler aufgetreten.";
				log_err ("Cannot lookup inviter at user delete. Query: ".$query.", ".$authdb->error ());
				$authdb->query ("rollback");
			}
			else
			{
				if ($row = mysql_fetch_array ($res))
				{
					if ($row['invited_by'] != 0)
					{
						$query = "update user set invitations=invitations-1 where uid=".$row['invited_by'];

						if (!$authdb->query ($query))
						{
							log_err ("Cannot lower invitation count at user delete. Query: ".$query.", ".$authdb->error ());
						}
					}
				}

				$query = 'update user set user="_d'.$_SESSION['authed_uid'].'_'.$_SESSION['authed_user'].'",email="",password="" where uid='.$_SESSION['authed_uid'];

				if (!$authdb->query ($query))
				{
					$err = "Leider ist ein Datenbank-Fehler aufgetreten.";
					log_err ("Cannot set user to deleted. Query: ".$query.", ".$authdb->error ());
					$authdb->query ("rollback");
				}
				else
				{
					if (!$authdb->query ("commit"))
					{
						$err = "Leider ist ein Datenbank-Fehler aufgetreten.";
						log_err ("Cannot set user to deleted. Query: ".$query.", ".$authdb->error ());
						$authdb->query ("rollback");
					}
					else
					{
						// Unset all of the session variables.
						$_SESSION = array();

						// If it's desired to kill the session, also delete the session cookie.
						// Note: This will destroy the session, and not just the session data!
						if (isset($_COOKIE[session_name()]))
						{
							 setcookie(session_name(), '', time()-42000, '/');
						}

						// Finally, destroy the session.
						session_destroy();

						echo "<p>Schade, dass du uns verlassen willst. Machs gut und hoffentlich bis bald.</p>Dein Selador-Team.</div></body></html>";
						die ();
					}
				}
			}
		}
	}
}


//Speichern-Buton wurde gedrückt
if (isset($_POST['save']))
{
	$pw1 = mysql_real_escape_string( $_POST['new_passwd']);
	$pw2 = mysql_real_escape_string($_POST['new_passwd_best']);
	if ((strlen($pw1) < 1) && strlen($pw2)<1)
		$password_changing = false;
	else
		$password_changing = true;
	if ($password_changing==true)
	{
		if ((MD5($_POST['old_passwd'])) != ($row['password']))
			$err .="Das von dir eingegebene alte Kennwort ist nicht korrekt<br>";
		else
		{
			if ($pw1 != $pw2)
				$err .= "Kennwort und Kennwortbest&auml;tigung sind nicht gleich<br>";
			else
			{
				if (strlen ($pw1) < 6)
					$err .= "Das neue Kennwort ist zu kurz! Mindestens 6 Zeichen.<br>";
				else
				{
					if (CheckPasswordStrength($pw1) < 1)
						$err .= "Das neue Kennwort ist zu schwach. Es sollte gemischte Gro&szlig;- und Kleinschreibung enthalten, oder Zahlen.<br>";
				}
			}
		}
	}
	if ($err)
		echo "<b>".$err."</b>";
	else
	{
		if (isset($_POST['wants_mail']))
		{
			if (($_POST['wants_mail']) == 1)
				$wants_mail = 1;
			else
				$wants_mail = 0;
		}
		$query = "update user set ";
		if ($password_changing == true)
			$query .= "password=md5('".$pw1."') , ";
		$query .= "wants_mail=".(int)$wants_mail." where uid=".$_SESSION['authed_uid'] ;
		if (!$authdb->query($query))
			$err .= "Beim Speichern ist ein Fehler aufgetreten!<br>";
		else
		{
			if ($password_changing == true)
			{
				$forum = new ForumDB;
				if ($forum->change_pw ($_SESSION['authed_user'] , $pw1))
					echo "<b>Erfolgreich gespeichert!<br></b>";
				else
					echo "Something wrong:".$forum->error();
				$_SESSION['pwh'] = md5($pw1);
			}
			$row = $_POST;
		}
	}
}
?>
	<h2>Benutzereinstellungen  von <?php echo $_SESSION['authed_user']; ?> </h2>

<span class="info">Hier kannst du deine Benutzerdaten anpassen.</span>
	<table class="border">
		<tr>
			<th class="bold" colspan="2">Kennwort &auml;ndern</th>
		</tr>
		<tr>
			<td>
				<table>
					<tr>
						<td>Altes Kennwort: </td>
						<td><input type="password" size="12" name="old_passwd"></td>
					</tr>
					<tr>
						<td>Neues Kennwort: </td>
						<td><input type="password" size="12" name="new_passwd"></td>
					</tr>
					<tr>
						<td>Neues Kennwort bestätigen: </td>
						<td><input type="password" size="12" name="new_passwd_best"></td>
					</tr>
				</table>
			</td>
		</tr>
	</table>
	<table class="border">
		<tr>
			<th class="bold"> Newsletter</th>
		</tr>
		<tr>
			<td>
				<input type="checkbox" value="1" name="wants_mail" <?php if ($row['wants_mail'] == 1)  echo "checked" ?>>Ich m&ouml;chte den Newsletter per Mail zugeschickt bekommen
			</td>
		</tr>

		<tr>
			<td colspan="2"><input type="submit" value="=> Speichern" name="save"></td>
		</tr>
	</table>
	<table class="border">
		<tr>
			<th class="bold">Account komplett l&ouml;schen</th>
		</tr>
		<tr>
			<td>
				<input type="password" size="12" name="del_passwd">(mit Kennwort bestätigen)<br>
				<input type="checkbox" value="1" name="del_wants">Wirklich l&ouml;schen<br><br>
			</td>
		</tr>
		<tr>
			<td>
				<input type="submit" value="=> L&ouml;schen" name="del" onClick="return window.confirm ('Willst du deinen Account wirklich l&ouml;schen? Das l&auml;sst sich _nicht_ r&uuml;ckg&auml;ngig machen und umfasst auch den Forumsaccount. Du wirst keinen Zugriff mehr auf deine Helden haben (diese werden allerdings nicht mitgel&ouml;scht, wenn du das willst musst du sie vorher von Hand l&ouml;schen).');">
			</td>
		</tr>
	</table>
</div>
</form></div>