0

管理パネルを作成して問題が発生しました。ac-config.phpファイルでパスワードを変更するためのフォームを作成するためのいくつかの助けが必要です。

adminpasswordを変更するためのフォームが必要$adminpass= "adminpassword";

役に立つ助けを待ってくれてありがとう。

ac-config.php

<?php
//Admin Username and password
$adminuser = "admin";
$adminpass = "adminpassword";

//Error message variables
$not_logged_in_message_error_message = "Error<br><br>You Are not logged in. Go back and try again!<br><br>";
$incorrect_error_message = "Error<br><br>You have entered the incorrect username and/or password, please go back and try again!<br><br>";
$no_pass_or_user_error_message = "Error<br><br>You have either not entered a password or a username, please go back and try again!<br><br>";

//The first page you want the script to go to after creating those cookies (this page must include the validating code as seen in admin1.php)
$first_page = "ac-admin.php";
?>

それは私のログイン検証ac-login.phpです

<?php
$formuser = $_POST["formuser"];
$formpass = $_POST["formpass"];
$formpass = md5($formpass);
if($formuser && $formpass) {
    setcookie ("cookuser");  
    setcookie ("cookpass");

    setcookie ("cookuser", $formuser);
    setcookie ("cookpass", $formpass);
    header("Location: ac-admin.php");
    }
    else {
        include("ac-config.php");
    echo($no_pass_or_user_error_message);
    }
?>

ac-admin.php

<link href="css.css" rel="stylesheet" type="text/css" />
<?php error_reporting(E_ALL ^ E_NOTICE); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Admin</title>
</head>
<body>
<div id="content">
<div id="logo"></div>
<?php include("nav.php"); ?>
<?php
include("ac-config.php");
$cookuser = $_COOKIE["cookuser"];
$cookpass = $_COOKIE["cookpass"];
$adminpass = md5($adminpass);
$moderatorpass = md5($moderatorpass);
if($cookuser && $cookpass) {
    if(($cookuser == $adminuser || $cookuser == $moderatoruser) && ($cookpass == $adminpass || $cookpass == $moderatorpass)){
    //Any protected stuff you want goes in here!
    echo'<green>Successfully logged in!</green><br /><br />';
    }
    else{
    echo($incorrect_error_message);
    }
}
else{
echo($not_logged_in_message_error_message);
}
?>

This is Admin Page<br />
Anything want can place here<br />
<div id="footer">CopyRight 2011 - All Rights Reserved</div>
</div>
</body>
</html>
4

3 に答える 3

0

this what you are doing here is what we call "hard coded" passwords into the code, try reading some more on how to use databases or file system, then you can change your password dynamically;

于 2011-07-19T06:48:36.163 に答える
0

file_*_contents() & heredoc example...

<?php 
//Replacing the values into the config
$config_file="";
if(isset($_POST['update']) && isset($_POST['user']) && isset($_POST['pass'])){
    $user = $_POST['user'];
    $pass = $_POST['pass'];

    $config_file = <<<CONFIG
<?php
//Admin Username and password
\$adminuser = "$user";
\$adminpass = "$pass";

//Error message variables
\$not_logged_in_message_error_message = "Error<br><br>You Are not logged in. Go back and try again!<br><br>";
\$incorrect_error_message = "Error<br><br>You have entered the incorrect username and/or password, please go back and try again!<br><br>";
\$no_pass_or_user_error_message = "Error<br><br>You have either not entered a password or a username, please go back and try again!<br><br>";

//The first page you want the script to go to after creating those cookies (this page must include the validating code as seen in admin1.php)
\$first_page = "ac-admin.php";
?>
CONFIG;
    file_put_contents('ac-config.php',$config_file);
    //Where to send after update
    header('Location: ./admin.php?page=changepass');
}

//Getting the values for the form
$config_file = file_get_contents('ac-config.php');
$match = preg_match('%adminuser = \"(.*?)\"%',$config_file,$confuser);
$match = preg_match('%adminpass = \"(.*?)\"%',$config_file,$confpass);
//$confuser[0] & $confpass[0] can be used to insert the values into the form
?>

<form method="POST" action="">
<input type="hidden" name="page" value="changepass">
<input type="hidden" name="update" value="go">
  <h1>Change Logins</h1>
  <p>Username:<input type="text" name="user" value="<?php echo $confuser[0];?>" size="20"></p>
  <p>Password:<input type="password" name="pass" value="<?php echo $confpass[0];?>" size="20"></p>
  <p><input type="submit" value="Submit"></p>
</form>
于 2011-07-19T06:48:38.913 に答える
0

別のファイルを作成します。これを使用して、パスワードのハッシュ バージョンを格納します。(これは別のファイルにあるため、それを操作している PHP スクリプトを強制終了することなく、必要に応じて読み取り/書き込み/編集できます。)

ファイル「_something_random.txt」を作成します

そのファイルに、次を貼り付けます (次のみ - 改行やスペースなどは入れません)。

11982574c05624fd4946dda5298cf9db6c679ef4

これは「StackOverflow」のSHA1ハッシュであり、基本的に単語の一方向暗号化です。

既存のファイル内:

" ac-config.php "

<?php
//Admin Username and password
$adminuser = "admin";
$adminhashfile = '_something_random.txt';

$adminhash = file_get_contents( $adminhashfile );
.... (rest of the file as-is) ...

" ac-login.php "

<?php
$formuser = $_POST["formuser"];
$formpass = sha1( $_POST["formpass"] );
if( $formuser==$adminuser && $formpass==$adminhash ){
  setcookie ("cookuser", $formuser);
  setcookie ("cookpass", $formpass);
  header( "Location: ac-admin.php" );
} else {
  include("ac-config.php");
  echo($no_pass_or_user_error_message);
}
?>

いつでもパスワードを変更したい場合は、新しいパスワードの SHA-1 ハッシュを手動で計算して " _something_random.txt " ファイルに貼り付けるか、PHP スクリプトを作成して、(既に変更されていることを認証する) ことができます。ログインしてから)新しいパスワードを取得し、そのファイルに書き込みます。

<?php

include("ac-config.php");

$newPassword = $_POST['newPassword'];

file_put_contents( $adminhashfile , sha1( $newPassword ) );
于 2011-07-19T07:27:30.510 に答える