PHP の初心者である私は、大量の調査を行いましたが、この質問に対する答えを見つけることができませんでした。詳細を説明すると、PHP と Javascript を使用する小さなアップロード Web アプリがあります。ユーザー名とパスワードで保護された管理セクションと呼ばれるものでは、ユーザーはアップロードされたファイルにアクセスできます。
この時点で、静的なユーザー名とパスワードを php ファイルに設定し、それらを次の変数として保存しています。
$username = "admin";
$password ="admin";
次に、ログイン ページがフォーム ポストを読み取り、入力されたユーザー名とパスワードが設定されているものと一致するかどうかを確認します。認証されると、セッション トークンが設定されます。これはすべてうまく機能しますが、admin.php セクション内でパスワードを変更できるようにしたいと考えています。
したがって、admin.php にパスワード変更フォームを作成し、ユーザーがそれを送信すると、login.php ファイルの $password 変数が更新されるようにしたいと考えています。既存の login.php ファイルに書き込み、静的変数 $password を更新するにはどうすればよいですか。
どんな助けでも大歓迎です!
更新: 現在の login.php ファイル
ユーザー名とパスワードが静的に設定されていることがわかるように、ユーザーがログイン情報を入力し、セッション変数が設定されていることを確認すると、. admin.php ページのユーザーがフォームを送信して $password 変数を更新できるようにする方法が必要です。私は今これを読んでいます 管理者パスワードを変更します(フォームを作成する必要があります)
<?php //Password Protected Area
session_start();
if($_GET['action'] == 'logout'){
unset($_SESSION['currentUser']);
}
$requestMethod = strtolower($_SERVER['REQUEST_METHOD']);
if($requestMethod == 'post'){
$username = "admin";
$password ="admin";
$postUsername = strip_tags($_POST['username']);
$postPassword = strip_tags($_POST['password']);
if(($postUsername == $username) && ($postPassword == $password)){
$_SESSION['currentUser'] = 'admin';
header("location: admin.php");
}else{
$loginError = true;
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Login</title>
<?php include_once "assets/includes/loader.php" ?>
</head>
<body>
<div id="wrapper">
<div id="upload-text" >
<h1>Please Login</h1>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST" id="loginForm">
<?php if($loginError){?>
<h2>Login Error:</h2>
<p>Sorry, your username or password was incorrect.</p>
<?php } ?>
<br>
<label><span>Username:</span> <input type="text" name="username" value="<?php echo $_POST['username'];?>" /></label>
<br>
<br>
<label><span>Password:</span> <input type="password" name="password" /></label>
<br><br>
<label><input type="submit" value="Login" /></label>
</form>
</div>
</div>
<!-- #upload-wrapper -->
</body>
</html>
更新しました:
私は提供された提案に取り組み、それを機能させました。以下の更新されたコードを参照してください。config.php ファイルを作成し、そこにログイン情報を保存しました。login.php ファイルへのインクルードを使用して、情報を呼び出しています。認証されると、admin.php ファイルには fwrite を使用して conif.php ファイルを更新するフォームがあります。
ログイン.php
$requestMethod = strtolower($_SERVER['REQUEST_METHOD']);
if($requestMethod == 'post'){
include "assets/includes/config.php";
$postUsername = strip_tags($_POST['username']);
$postPassword = strip_tags($_POST['password']);
if(($postUsername == $username) && ($postPassword == $password)){
$_SESSION['currentUser'] = 'admin';
header("location: admin.php");
}else{
$loginError = true;
}
}
admin.php
if(isset($_POST['new_pw']) && trim($_POST['new_pw']) != ""){
$fp = fopen("assets/includes/config.php", 'w');
fwrite($fp, '<?php');
fwrite($fp, ' ');
fwrite($fp, '$username = "admin";');
fwrite($fp, '$password = "'.trim($_POST['new_pw']).'";');
fwrite($fp, ' ');
fwrite($fp, '?>');
fclose($fp);
}
?>
<form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
<input type="text" name="new_pw">
<input type="submit">
</form>