Как вы обновляете переменную в php файле через форму отправки? Такой как статический пароль

Будучи новичком в PHP, я провел массу исследований и не смог найти ответ на этот вопрос. Чтобы дать некоторые подробности, у меня есть небольшое веб-приложение для загрузки, которое использует PHP и Javascript. В том, что я называю разделом администратора, который защищен именем пользователя и паролем, пользователь может получить доступ к загруженным файлам.

На данный момент я устанавливаю статическое имя пользователя и пароль в php-файле и сохраняю их как следующие переменные.

$username = "admin";
$password ="admin";

Страница входа в систему затем читает сообщение формы, чтобы проверить, соответствуют ли введенные имя пользователя и пароль тому, что было установлено. После аутентификации он устанавливает маркер сеанса. Все это прекрасно работает, но я бы хотел, чтобы люди могли сменить пароль в разделе admin.php.

Поэтому я хочу, чтобы в файле admin.php была форма смены пароля, которая, когда человек отправляет ее, обновляет переменную $password в файле login.php. Как я могу записать в существующий файл 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.

login.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>

2 ответа

ОБНОВЛЕННЫЙ ОТВЕТ:

создайте файл конфигурации и поместите его в корневой каталог. Содержание:

<?php
$username = 'admin';
$password = 'admin;

Затем включите вложенный файл конфигурации и удалите $username а также $password декларация от вашего $requestMethod условно:

<?php //Password Protected Area
    session_start();

    if($_GET['action'] == 'logout'){
       unset($_SESSION['currentUser']); 
    }

    $requestMethod = strtolower($_SERVER['REQUEST_METHOD']);
    if($requestMethod == 'post'){
        include($_SERVER['DOCUMENT_ROOT']."/path-to-nested-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;
        }
    }
?>

Наконец, чтобы обновить файл, вы должны использовать fwrite

<?php
if(isset($_POST['new_pw']) && trim($_POST['new_pw']) != "")
{
    $fp = fopen($_SERVER['DOCUMENT_ROOT']."/path-to-nested-config.php", 'w');
    fwrite($fp, '<?php');
    fwrite($fp, '$username = "admin"');
    fwrite($fp, '$password = "'.trim($_POST['new_pw']).'");
    fclose($fp); 
}
?> 

Это предполагает, что у вас есть форма где-то, которая передает "new_pw" в скрипт php, который записывает в файл конфигурации с надлежащими разрешениями, установленными для записи системой.

Это всего лишь один из способов сделать это. Я решил сделать это таким образом, потому что файл конфигурации имеет 3 строки кода, поэтому нет необходимости в более сложной системе.

Как уже упоминалось, ребята, это очень нежелательный способ сделать это, но если вам действительно нужно сделать это таким образом, то вам нужно сделать 1- прочитать в файле администратора

$file = file_get_contents('./admin.php', FILE_USE_INCLUDE_PATH);

2- замените текущий пароль (который он хранится в сеансе на новый пароль, который пользователь дал вам в форме

$file=str_replace($oldPass,$newPass,$file);

также желательно добавить сегмент назначения как к $oldPass, так и к $newPass, чтобы избежать замены других частей вашего кода, если пользователи вводят вещи, которые соответствуют 3- запишите файл после замены

$fp=fopen('admin.php','w');
fwrite($fp,$file,strlen($file));
Другие вопросы по тегам