Я тестирую процесс обновления пароля с помощью php / mysql. Я не получаю никаких ошибок при отправке, но мои значения не обновляются. Есть идеи?
if (!empty($_POST['password']) && !empty($_POST['password2'])){ $id = $_GET['id']; $password = md5(mysql_real_escape_string($_POST['password'])); $sql = mysql_query("UPDATE users SET `Password` = '$password' WHERE UserID = '$id'"); if ($sql){ echo $password, $id; }else{ echo mysql_error(); } }
Просто догадка. Попробуйте удалить кавычки вокруг переменной, $id
:
if (!empty($_POST['password']) && !empty($_POST['password2'])){ $id = $_GET['id']; $password = md5(mysql_real_escape_string($_POST['password'])); $sql = mysql_query("UPDATE users SET `Password` = '$password' WHERE UserID = {$id}"); if ($sql){ echo $password, $id; }else{ echo mysql_error(); } }
Вы объединили $_GET
и $_POST
. Попробуйте изменить $_GET['id']
на $_POST['id']
. Если это не сработает, попробуйте добавить
var_dump( $_POST ); var_dump( $_GET );
к вашему коду. Это может помочь вам отладить.
mysql_real_escape_string
возвращает TRUE/FALSE
просто используйте его так
if(mysql_real_escape_string($_POST['password'])) { $password = md5($_POST['password']); }
Он будет работать сейчас!
Предложение :
Идите в одну сторону. Либо GET, либо POST
Казалось, это сработало:
$id = $_REQUEST['id']; if (!empty($_POST['password']) && !empty($_POST['password2'])){ $password = md5(mysql_real_escape_string($_POST['password'])); $sql = mysql_query("UPDATE users SET Password = '".$password."' WHERE UserID = '".$id."'"); if ($sql){ echo "Password reset."; echo "<meta http-equiv='refresh' content='1;index.php' />"; }else{ echo mysql_error(); } }else{ ?> <form role="form" action="[Leave blank]" method="post" name="resetpassword" id="resetpassword">
Это правильный идентификатор, который вы пытаетесь обновить?