パスワードを変更できるページが欲しいのですが。私だけがそれにアクセスできるはずです。だから私の考えは、私のIPアドレスを保存し、それをデータベースに保存する前に暗号化することでした。私が最初に試したのは、IPを手動で入力することでした。次に、ip.phpという2番目のファイルで取得したIPアドレスを次のように取得する方がはるかに簡単で安全だと思いました。
$http_client_ip = $_SERVER['HTTP_CLIENT_IP'];
$http_x_forwarded_for = $_SERVER['HTTP_X_FORWARDED_FOR'];
$remote_addr = $_SERVER['REMOTE_ADDR'];
if (!empty($http_client_ip)){
$ip_address = $http_client_ip;
}
else if (!empty($http_x_forwarded_for)){
$ip_address = $http_x_forwarded_for;
}else{
$ip_address = $remote_addr;
}
これが私のスクリプトに追加したもので、次のようになります。
if(isset($_POST['submit'])){
include_once "db_connect.php";
include_once "ip.php";
$IP = $ip_address;
$masterkey = $_POST['masterkey'];
$masterkey2 = $_POST['masterkey2'];
if(empty($masterkey)||empty($masterkey2)){
if(empty($masterkey)){
$errors[]="there is no key1";
}
if(empty($masterkey2)){
$errors[]="there is no key2";
}
}else{
$masterkey = strip_tags($masterkey);
$masterkey = stripslashes($masterkey);
$masterkey = trim($masterkey);
$masterkey = $db->real_escape_string($masterkey);
$masterkey2 = strip_tags($masterkey2);
$masterkey2 = stripslashes($masterkey2);
$masterkey2 = trim($masterkey2);
$masterkey2 = $db->real_escape_string($masterkey2);
$IP = strip_tags($IP);
$IP = stripslashes($IP);
$IP = trim($IP);
$IP = $db->real_escape_string($IP);
$db_IP = crypt($ip_address, '$2a$12$password');
...start queries
今私の問題は、elseステートメントが機能しないことです。理由で、これが機能しない理由がわかりません。私もエラーレポートを使用していて、メッセージを受け取りました:
Notice: Undefined variable: db_IP in ...
var_dumpも試しましたが、エラーは表示されませんでした。しかし、私がエコーするとき
$IP and $ip_address
IPが正しい方法で表示されます。だから私はこれがうまくいかない理由を理解していません。ありがとう。
アップデート
エラーレポートがe_allに設定されている場合は、次のように表示されます。
Notice: Undefined variable: db_IP in /var/www/web775/html/scripts/masterchange.php on line 179
これに関連する
<?php echo $db_IP;?>
変数は次のように定義されます
$db_IP = crypt($IP, '$2a$12$password');
と
$IP = $ip_address;
と
$ip_address
ip.phpから来ています
UPDATE2
さて、私は問題を解決しました。失敗は、if-else条件があることでした。私はelseステートメントを監視していて、最初にelseステートメントに到達するためのifステートメントの条件を忘れていました。ifステートメントの条件なしで出力を取得しようとしました。したがって、確かに、最初のフレーズが実行されなかった場合、出力は生成されなかった可能性があります。そのため、var_dumpは空で、エラーがなかったためエラーは表示されませんでした:)助けてくれてありがとう。本当に感謝しています。