Делаю свой первый сайт, столкнулся со следующей проблемой:
при переходе по ссылке "редактировать профиль" данные в форме отображаются нормально, но при изменении данных и нажатии кнопки "редактировать" данные в форме пропадают и появляются только когда пользователь проходит повторную авторизацию и снова нажимает "редактировать профиль".
подключение вида в контроллере:
case('edit_profile'):
// редактирование профиля
$user_id = $_SESSION['auth']['user_id'];
$user = user($user_id);
if($_POST){
if(edit_profile($user_id)) redirect();
}
break;
функция редактирования профиля:
/* ===Редактирование профиля=== */
function edit_profile($user_id){
$login = trim($_POST['login']);
$newpass = trim($_POST['pass']);
$newpass2 = trim($_POST['pass2']);
$last_name = trim($_POST['last_name']);
$first_name = trim($_POST['first_name']);
$email = trim($_POST['email']);
$phone = trim($_POST['phone']);
$address = trim($_POST['address']);
if(empty($login)) $error.='<li>Не указан логин</li>';
if(empty($last_name)) $error.='<li>Не указана фамилия</li>';
if(empty($newpass)) $error.='<li>Не указан пароль</li>';
if(empty($newpass2)) $error.='<li>Не указана повторный пароль</li>';
if(empty($first_name)) $error.='<li>Не указано имя</li>';
if(empty($email)) $error.='<li>Не указан email</li>';
if(empty($address)) $error.='<li>Не указано откуда Вы</li>';
if(empty($error) && ($newpass == $newpass2)){
$login = clear($_POST['login']);
$last_name = clear($_POST['last_name']);
$first_name = clear($_POST['first_name']);
$email = clear($_POST['email']);
$phone = clear($_POST['phone']);
$address = clear($_POST['address']);
$newpass = md5($newpass);
$query = "UPDATE users SET
first_name = '$first_name',
last_name = '$last_name',
email = '$email',
phone = '$phone',
login = '$login',
password = '$newpass',
address = '$address'
WHERE user_id = $user_id";
$res = mysql_query($query) or die(mysql_error());
if(mysql_affected_rows() > 0){
// если запись добавлена
$_SESSION['edit']['res'] = '<div class="success">Профиль изменен!</div>';
$_SESSION['auth']['user'] = $_POST['first_name'];
$_SESSION['auth']['user_id'] = mysql_insert_id();
return true;
}
}else{
$_SESSION['edit']['res'] = '<div class="error">Вы не заполнили все обязательные поля,<br /> либо введенные пароли не совпадают: <ul>'."$error".'</ul></div>';
return false;
}
}
/* ===Редактирование профиля=== */
форма редактирования профиля:
<form method="post" action="#">
<table class="reg-data" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="reg-txt">Логин</td>
<td class="reg-inpt"><input type="text" name="login" value="<?=htmlspecialchars($user['login'])?>" /></td>
</tr>
<tr>
<td class="reg-txt">Новый пароль</td>
<td class="reg-inpt"><input type="password" name="pass" /></td>
</tr>
<tr>
<td class="reg-txt">Повторите пароль</td>
<td class="reg-inpt"><input type="password" name="pass2" /></td>
<td class="reg-prim"></td>
</tr>
<tr>
<td class="reg-txt">Фамилия</td>
<td class="reg-inpt"><input type="text" name="last_name" value="<?=htmlspecialchars($user['last_name'])?>" /></td>
</tr>
<tr>
<td class="reg-txt">Имя</td>
<td class="reg-inpt"><input type="text" name="first_name" value="<?=htmlspecialchars($user['first_name'])?>" /></td>
</tr>
<tr>
<td class="reg-txt">Е-mail</td>
<td class="reg-inpt"><input type="text" name="email" value="<?=htmlspecialchars($user['email'])?>" /></td>
</tr>
<tr>
<td class="reg-txt">Телефон</td>
<td class="reg-inpt"><input type="text" name="phone" value="<?=htmlspecialchars($user['phone'])?>" /></td>
</tr>
<tr>
<td class="reg-txt">*Откуда Вы</td>
<td class="reg-inpt"><input type="text" name="address" value="<?=htmlspecialchars($user['address'])?>" /></td>
</tr>
</table>
<input type="submit" name="edit" value="Редактировать" />
</form>
Помогите разобраться. Если что то не понятно пишите, объясню где что я пытался делать