Witam.
Nie wymyśliłem odpowiedniej nazwy tematu, ale chyba coś w ten deseń. Na wstępie informuję, że w PHP jestem laikiem. Od pewnego czasu borykam się z pewnym problemem. Otóż tworzę stronę z ustawieniami konta dla gry. Póki co wszystko szło zgodnie z przewidywaniami, do czasu gdy poza 1 opcją ustawień wprowadziłem drugą: zmiana hasła i zmiana avatara. Obie rzeczy znajdują się na tej samem stronie, stąd wynika problem.
<?php
require_once('inc/system.php');
if(empty($oUser['user'])) header('location: index.php');
$tytul = "Ustawienia konta";
if(empty($_POST['old'])) $msg = "<p class='error'>Podaj stare hasło</p>"; elseif(empty($_POST['new'])) $msg = "<p class='error'>Podaj nowe hasło</p>"; elseif(empty($_POST['new'])) $msg = "<p class='error'>Podaj powtórnie nowe hasło</p>"; elseif($_POST['new'] != $_POST['newr']) $msg = "<p class='error'>Hasła różnią się</p>";
elseif(strlen($_POST['new']) < 5
) $msg = "<p class='error'>Nowe hasło musi zawierać minimum 5 znaków</p>"; else {
$pass = md5($_POST['new']); $old = md5($_POST['old']); if($oUser['haslo'] != $old) $msg = "<p class='error'>Nieprawidłowe stare hasło</p>";
else {
mysql_query("update users set haslo = '".$pass."' where user = ".$oUser['user']." limit 1"); $oUser['haslo'] = $pass;
$msg = "<p class='info'>Zmieniono hasło</p>";
}
}
}
$zmiana_hasla ="
<h2>Zmiana hasła</h2>
<form action='#' method='post'>
<table cellspacing='10' style='margin:0 auto'>
<tr>
<td width='150' align='right'>Stare hasło:</td>
<td width='150'><input class='input' type='password' name='old'/></td>
</tr>
<tr>
<td align='right'>Nowe hasło:</td>
<td><input class='input' type='password' name='new'/></td>
</tr>
<tr>
<td align='right'>Powtórz hasło:</td>
<td><input class='input' type='password' name='newr'/></td>
</tr>
<tr>
<td colspan='2' align='center'><input class='przycisk' type='submit' value='zmień'/></td>
</tr>
</table>
";
$uploaddir = "obrazy_profilowe"; // Where you want the files to upload to - Important: Make sure this folders permissions is 0777!
$allowed_ext = "jpg, gif, png"; // These are the allowed extensions of the files that are uploaded
$max_size = "20480"; // 20kb
$max_height = "150"; // This is in pixels - Leave this field empty if you don't want to upload images
$max_width = "150"; // This is in pixels - Leave this field empty if you don't want to upload images
$extension = pathinfo($_FILES['file']['name']); $extension = $extension[extension];
$allowed_paths = explode(", ", $allowed_ext);
for($i = 0; $i < count($allowed_paths); $i++) { if ($allowed_paths[$i] == "$extension") {
$ok = "1";
}
}
if ($ok == "1") {
if($_FILES['file']['size'] > $max_size)
{
print "Rozmiar obrazka jest zbyt duży!"; }
if ($max_width && $max_height) {
list
($width, $height, $type, $w) = getimagesize($_FILES['file']['tmp_name']); if($width > $max_width || $height > $max_height)
{
print "Rozmiary obrazka nie mogą przekroczyć 150 wysokości i 200 długości!"; }
}
{
}
print "Przesłano pomyślnie!"; }
else {
print "Nie wybrano pliku!"; }
$zmiana_avatara = "
<h2>Zmiana avatara</h2>
<form action='ustawienia.php' method='post' ENCTYPE='multipart/form-data'>
Plik: <input type='file' name='file' size='30'>
<input class='przycisk' type='submit' value='prześlij'>
</form>
";
$gra = "
".$zmiana_hasla."
".$zmiana_avatara."
";
require_once('inc/szablon.php');
?>
Zdaję sobie sprawę z tego (chyba, że się mylę

), że pierwsze co zrobi serwer, to sprawdzi czy z pierwszych pól zostały wysłane jakiekolwiek informacje. Tak też tym samym, gdy wyślę "avatar", strona wywali wiadomość, że nie wprowadziłem danych do pierwszego pola "stare hasło". I chodzi mi własnie o to, w jaki sposób można by rozwiązać ten problem?
Zapewne mógłbym to zrobić na iframach (poszczególne opcje), ale to raczej większość by mi odradziła...
Dobrym rozwiązaniem byłoby też, gdyby po wejściu w ustawienia.php wyświetlało mi się menu, w którym byłyby linki "Zmień hasło", "Zmień avatar" - ale wtedy chciałbym, aby treść tych stron/podstron również znajdowała się jeszcze w ustawienia.php (chce jak najbardziej ograniczyć ilość plików).
Ktoś ma jakieś pomysły? Proszę o pomoc.
(nie byłem pewny działu)