Я сделал страницу на PHP, чтобы пользователь мог изменить свои данные до сих пор, все это работает, и так было по электронной почте (
Поэтому я пытаюсь сделать это, чтобы пользователь мог изменить свои данные (пароль) (электронная почта) и т. Д. Сейчас пользователь должен изменить все свои данные, чтобы изменить одну конкретную вещь. Я хочу, чтобы пользователь мог изменить свой адрес электронной почты, не меняя пароля
Мой код:
<title>Honda |</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link href='http://fonts.googleapis.com/css?family=Julius+Sans+One' rel='stylesheet' type='text/css'> <link href="../css/style.css" rel="stylesheet" type="text/css" media="all" /> <?php session_start(); $username = $_SESSION['sess_user']; echo '<div class="search1"><h2>'.$username.'</h2></div>'; if (isset($_SESSION['sess_user'])) { //user is logged in if (isset($_POST['submit'])) { //start changing password //check fields $oldpassword = md5($_POST['oldpassword']); $newpassword = md5($_POST['newpassword']); $email = $_POST['email']; $repeatnewpassword = md5($_POST['repeatnewpassword']); //check password against db include('../includes/config.php'); $queryget = mysql_query("SELECT password FROM login WHERE username='$username'") or die ("change password failed"); $row = mysql_fetch_assoc($queryget); $oldpassworddb = $row['password']; //check passwords if ($oldpassword==$oldpassworddb) { //check two new passwords if ($newpassword==$repeatnewpassword) { //successs //change password in db $querychange = mysql_query("UPDATE login SET password='$newpassword' WHERE username='$username'"); $querychange = mysql_query("UPDATE login SET email='$email' WHERE username='$username'"); die("<div class='successmate'>Your password has been changed. <a href='index2.php'><br><br> Return</a></div>"); } else die("<div class='results'>New password doesn't match!</div>"); }else die("<div class='results'>Old password doesn't match!</div>"); } else { echo" <form class='search1' action='changepassword.php' method='POST'> <label>Current Password:</label> <input type='password' id='password' name='oldpassword'><p> <label>New Password:</label> <input type='password' id='password' name='newpassword'><p> <label>Repeat New Password:</label> <input type='password' name='repeatnewpassword'><p> <label>Email:</label> <input type='email' name='email'><p> <input type='submit' name='submit' class='submit' value='submit'><br><br><br> <h2><p><a href='index2.php'>Back</a></p></h2> </form> "; } }else die ("You must be logged in to change your password"); ?> <img src="../images/main.jpg">
Обычно для смены пароля вы сначала создаете для них пустые поля. Затем проверьте, заполнены ли они, если да, проверьте правильность и обновление пароля, иначе просто обновите любые другие данные.
[html] <input type="password" name="password" value=""/> <input type="password" name="password_repeat" value=""/> [php] $updates = []; if (!empty($_POST['password']) && !empty($_POST['password_repeat'])) { /* do validation */ $pswd = sha1($saltString . $_POST['password']); $updates['password'] = "password = `{$pswd}`"; } unset($_POST['password']); unset($_POST['password_repeat']); $sql = "UPDATE `tbl_table` SET "; foreach ($_POST as $columnName => $value) { /* mind SQL Injection! */ $updates[$columnName] = "{$updates} = `{$values}`"; } if (!empty($updates)) { $sql .= implode(', ', $updates); mysql_query($sql); }
с[html] <input type="password" name="password" value=""/> <input type="password" name="password_repeat" value=""/> [php] $updates = []; if (!empty($_POST['password']) && !empty($_POST['password_repeat'])) { /* do validation */ $pswd = sha1($saltString . $_POST['password']); $updates['password'] = "password = `{$pswd}`"; } unset($_POST['password']); unset($_POST['password_repeat']); $sql = "UPDATE `tbl_table` SET "; foreach ($_POST as $columnName => $value) { /* mind SQL Injection! */ $updates[$columnName] = "{$updates} = `{$values}`"; } if (!empty($updates)) { $sql .= implode(', ', $updates); mysql_query($sql); }
с[html] <input type="password" name="password" value=""/> <input type="password" name="password_repeat" value=""/> [php] $updates = []; if (!empty($_POST['password']) && !empty($_POST['password_repeat'])) { /* do validation */ $pswd = sha1($saltString . $_POST['password']); $updates['password'] = "password = `{$pswd}`"; } unset($_POST['password']); unset($_POST['password_repeat']); $sql = "UPDATE `tbl_table` SET "; foreach ($_POST as $columnName => $value) { /* mind SQL Injection! */ $updates[$columnName] = "{$updates} = `{$values}`"; } if (!empty($updates)) { $sql .= implode(', ', $updates); mysql_query($sql); }
PS Для пароля вам, возможно, придется проверить хеш-версию на ту, что хранится в БД (в основном MD5)