PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
kremenchug
Отправлено: 26 Июня, 2018 - 23:56:33
Новичок
Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2018
Помог: 0 раз(а)
Здравствуйте, помогите пожалуйста, нужно добавить обязательный ввод старого пароля и текущего, чтобы изменить пароль. Новичок в php и как осуществить, не понимаю, буду очень благодарен за помощь!
PHP:
скопировать код в буфер обмена
<?PHP include ( 'server.php' ) ?>
<?PHP
//PHP-код для обновления данных из базы mysql
if ( isset ( $_POST [ 'update' ] ) ) {
$hostname = "localhost" ;
$username = "root" ;
$password = "" ;
$databaseName = "registration" ;
$connect = mysqli_connect ( $hostname , $username , $password , $databaseName ) ;
// получать значения
$id = $_POST [ 'id' ] ;
$password = $_POST [ 'password' ] ;
// запрос mysql для обновления данных
$query = "UPDATE `users` SET `password`= '" . $password . "' WHERE `id` = $id " ;
if ( $result )
{
echo 'Data Updated' ;
} else {
echo 'Data Not Updated' ;
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title> PHP UPDATE DATA </title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div class="container">
<div class="frame">
<div class="nav">
<ul class"links">
<li class="signin-active"><a class="btn">Update inform</a></li>
</ul>
</div>
<form class="form-signin" action="change-password.php" method="post">
ID To Update: <input class="form-styling" type="text" name="id" required value="<?PHP echo $id ; ?> " readonly ><br><br>
New Password:<input class="form-styling" type="text" name="password" required ><br><br>
<input class="btn-signin" type="submit" name="update" value="Update Data">
</form>
<div class="forgot">
<a href="index.php">Back</a>
</div>
</div>
</div>
</body>
</html>
server.php
PHP:
скопировать код в буфер обмена
<?PHP
// initializing variables
$username = "" ;
$email = "" ;
$phone = "" ;
// connect to the database
//username
if ( isset ( $_GET [ 'username' ] ) ) { $username = $_GET [ 'username' ] ;
$userquery = "SELECT * FROM users WHERE username = '$username '" ;
die ( "That username could not be found" ) ; }
$id = $row [ 'id' ] ;
$password = $row [ 'password' ] ;
$username = $row [ 'username' ] ;
$email = $row [ 'email' ] ;
$phone = $row [ 'phone' ] ;
$dbusername = $row [ 'username' ] ;
}
if ( $username != $dbusername ) {
die ( "There has been a fatal error." ) ; }
}
// REGISTER USER
if ( isset ( $_POST [ 'reg_user' ] ) ) { // receive all input values from the form
// form validation: ensure that the form is correctly filled ...
// by adding (array_push()) corresponding error unto $errors array
if ( $password_1 != $password_2 ) {
array_push ( $errors , "The two passwords do not match" ) ; }
// first check the database to make sure
// a user does not already exist with the same username and/or email
$user_check_query = "SELECT * FROM users WHERE username='$username ' OR email='$email ' LIMIT 1" ;
if ( $user ) { // if user exists
if ( $user [ 'username' ] === $username ) {
}
if ( $user [ 'email' ] === $email ) {
}
}
// Finally, register user if there are no errors in the form
if ( count ( $errors ) == 0
) { $password = $password_1 ; //$password = md5($password_1)
$query = "INSERT INTO users (username, email, phone, password)
VALUES('$username ', '$email ', '$phone ','$password ')" ;
$_SESSION [ 'username' ] = $username ;
$_SESSION [ 'success' ] = "You are now logged in" ;
header ( 'location: index.php' ) ; }
}
if ( isset ( $_POST [ 'login_user' ] ) ) {
}
}
if ( count ( $errors ) == 0
) { $password = $password ; //$password = md5($password)
$query = "SELECT * FROM users WHERE username='$username ' AND password='$password '" ;
$_SESSION [ 'username' ] = $username ;
$_SESSION [ 'success' ] = "You are now logged in" ;
header ( 'location: index.php' ) ; } else {
array_push ( $errors , "Wrong username/password combination" ) ; }
}
}
?>
Vladimir Kheifets
Отправлено: 27 Июня, 2018 - 13:43:20
Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017
Откуда: Германия, Бавария
Помог: 37 раз(а)
kremenchug пишет: Здравствуйте, помогите пожалуйста, нужно добавить обязательный ввод старого пароля и текущего, чтобы изменить пароль. Новичок в php и как осуществить, не понимаю, буду очень благодарен за помощь!
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?PHP include ( 'server.php' ) ?>
<?PHP
//PHP-код для обновления данных из базы mysql
if ( isset ( $_POST [ 'update' ] ) ) {
$hostname = "localhost" ;
$username = "root" ;
$password = "" ;
$databaseName = "registration" ;
$connect = mysqli_connect ( $hostname , $username , $password , $databaseName ) ;
// получать значения
$id = $_POST [ 'id' ] ;
$password = $_POST [ 'password' ] ;
// запрос mysql для обновления данных
$query = "UPDATE `users` SET `password`= '" . $password . "' WHERE `id` = $id " ;
if ( $result )
{
echo 'Data Updated' ;
} else {
echo 'Data Not Updated' ;
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title> PHP UPDATE DATA </title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div class="container">
<div class="frame">
<div class="nav">
<ul class"links">
<li class="signin-active"><a class="btn">Update inform</a></li>
</ul>
</div>
<form class="form-signin" action="change-password.php" method="post">
ID To Update: <input class="form-styling" type="text" name="id" required value="<?PHP echo $id ; ?> " readonly ><br><br>
New Password:<input class="form-styling" type="text" name="password" required ><br><br>
<input class="btn-signin" type="submit" name="update" value="Update Data">
</form>
<div class="forgot">
<a href="index.php">Back</a>
</div>
</div>
</div>
</body>
</html>
Спойлер (Отобразить ) server.php
PHP:
скопировать код в буфер обмена
<?PHP
// initializing variables
$username = "" ;
$email = "" ;
$phone = "" ;
// connect to the database
//username
if ( isset ( $_GET [ 'username' ] ) ) { $username = $_GET [ 'username' ] ;
$userquery = "SELECT * FROM users WHERE username = '$username '" ;
die ( "That username could not be found" ) ; }
$id = $row [ 'id' ] ;
$password = $row [ 'password' ] ;
$username = $row [ 'username' ] ;
$email = $row [ 'email' ] ;
$phone = $row [ 'phone' ] ;
$dbusername = $row [ 'username' ] ;
}
if ( $username != $dbusername ) {
die ( "There has been a fatal error." ) ; }
}
// REGISTER USER
if ( isset ( $_POST [ 'reg_user' ] ) ) { // receive all input values from the form
// form validation: ensure that the form is correctly filled ...
// by adding (array_push()) corresponding error unto $errors array
if ( $password_1 != $password_2 ) {
array_push ( $errors , "The two passwords do not match" ) ; }
// first check the database to make sure
// a user does not already exist with the same username and/or email
$user_check_query = "SELECT * FROM users WHERE username='$username ' OR email='$email ' LIMIT 1" ;
if ( $user ) { // if user exists
if ( $user [ 'username' ] === $username ) {
}
if ( $user [ 'email' ] === $email ) {
}
}
// Finally, register user if there are no errors in the form
if ( count ( $errors ) == 0
) { $password = $password_1 ; //$password = md5($password_1)
$query = "INSERT INTO users (username, email, phone, password)
VALUES('$username ', '$email ', '$phone ','$password ')" ;
$_SESSION [ 'username' ] = $username ;
$_SESSION [ 'success' ] = "You are now logged in" ;
header ( 'location: index.php' ) ; }
}
if ( isset ( $_POST [ 'login_user' ] ) ) {
}
}
if ( count ( $errors ) == 0
) { $password = $password ; //$password = md5($password)
$query = "SELECT * FROM users WHERE username='$username ' AND password='$password '" ;
$_SESSION [ 'username' ] = $username ;
$_SESSION [ 'success' ] = "You are now logged in" ;
header ( 'location: index.php' ) ; } else {
array_push ( $errors , "Wrong username/password combination" ) ; }
}
}
?>
Добрый день!
Обычно для ввода нового пароля его требуют повторить. Поэтому в форму небходимо довить поля для ввода старого пароля, для нового пароля и для повторного вввода нового пароля
Спойлер (Отобразить ) CODE (
html ):
скопировать код в буфер обмена
<form class = "form-signin" action = "change-password.php" method = "post" >
ID To Update: <input class = "form-styling" type = "hidden" name = "id" required value = "<?PHP echo $id; ?> " readonly ><br ><br >
Old Password:<input class = "form-styling" type = "password" name = "password_old" required ><br ><br >
New Password:<input class = "form-styling" type = "password" name = "password_1" required ><br ><br >
Repeat New Password:<input class = "form-styling" type = "password" name = "password_2" required ><br ><br >
<input class = "btn-signin" type = "submit" name = "update" value = "Update Data" >
</ form >
Затем перед сохранение нового пароля небходимо проверить правильность ввода старого и нового пароляСпойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?PHP
foreach ( [ 'id' , 'password_old' , 'password_1' , 'password_2' ] as $n ) $$n = trim ( $_POST [ $n ] ) ; // запрос mysqli $password_from_db for user $id
$query = "SELECT password FROM `users` WHERE `id` = $id " ;
if ( $password_1 != $password_2 )
{
echo 'Error password_1 != password_2 ' ;
}
else if ( $password_1 == $password_from_db )
{
echo 'Error New password = Old password' ;
}
else
{
// запрос mysqli для обновления данных
$query = "UPDATE `users` SET `password`= '" . $password_1 . "' WHERE `id` = $id " ;
if ( $result )
{
echo 'Data Updated' ;
}
else
{
echo 'Data Not Updated' ;
}
}
?>
(Отредактировано автором: 28 Июня, 2018 - 14:44:25)
Vladimir Kheifets
Отправлено: 28 Июня, 2018 - 13:56:01
Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017
Откуда: Германия, Бавария
Помог: 37 раз(а)
kremenchug пишет: Спасибо большое, но при неверном старом пароле, все равно обновляется. может ли вы подсказать как это можно исправить?
Добрый день!
Поробуйте так
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?PHP
foreach ( [ 'id' , 'password_old' , 'password_1' , 'password_2' ] as $n ) $$n = trim ( $_POST [ $n ] ) ; // запрос mysqli $password_from_db for user $id
$query = "SELECT password FROM `users` WHERE `id` = $id " ;
$err = false ;
if ( $password_1 != $password_2 )
{
echo 'Error password_1 != password_2 ' ;
$err = true ;
}
if ( $password_1 == $password_from_db )
{
echo 'Error New password = Old password' ;
$err = true ;
}
if ( ! $err )
{
// запрос mysqli для обновления данных
$query = "UPDATE `users` SET `password`= '" . $password_1 . "' WHERE `id` = $id " ;
if ( $result )
{
echo 'Data Updated' ;
}
else
{
echo 'Data Not Updated' ;
}
}
?>
p.s. желательно во всех полях для ввода паролей изменить type на: type="password", а в поле id: type="hidden"
Удачи!(Отредактировано автором: 28 Июня, 2018 - 14:54:44)
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB