パスワードを変更できるページが必要です。私はそれにアクセスできる唯一の人でなければなりません。だから私の考えは私のIPアドレスを保存し、それをdbに格納する前に暗号化することでした。私の最初の試みは手でipを入力することでした。今、これは私が私に追加されたものであるif文がcrypt中に機能しない
$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;
}
:その後、私は2番目のファイルで得たものを私のIPアドレスがでip.php呼び出されるために、それは同様にはるかに簡単かつ安全だろう、と思いましたこのようなスクリプトは、次のようになります。
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文がうまくいきません。私はなぜこれが動作していないのか分からない理由のために。私はまたのvar_dumpを試みたが、アップ示すエラーがなかった
Notice: Undefined variable: db_IP in ...
:私もerrorreportを使用してメッセージを取得されました。しかし、私が反響するとき
$IP and $ip_address
これは正しい方法を表示します。だから私はなぜこれは動作しません理解していない。ありがとう。
UPDATE
さて、エラー報告をE_ALLに設定されている場合、変数は
として定義される一方<?php echo $db_IP;?>
に関する
Notice: Undefined variable: db_IP in /var/www/web775/html/scripts/masterchange.php on line 179
を表示します
$db_IP = crypt($IP, '$2a$12$password');
と
$IP = $ip_address;
と
$ip_address
ip.phpから来
アップデート2
大丈夫、私は問題を解決しました。失敗はif-else条件があるということでした。私はちょうどelseステートメントを監視し、elseステートメントを最初に取得するためにifステートメントの条件が何か忘れていました。私はif文の条件なしで出力を得ようとしました。最初のフレーズが出現しなかったときに出力が生成されていないことは確かです。なぜvar_dumpが空で、エラーがなかったので何も表示されませんでした:)助けてくれてありがとう。私は本当にそれを感謝します。
あなたが使用しているPOST変数をすべて盲目的に 'strip_tags()'、 'stripslashes()'と 'trim()'しているのはなぜですか? –
誰かがかつてページを見つけた場合に、sqlinjectionを防ぐ! – bonny
ああ、私はあなたが 'real_escape_string()'を使っていると思っていたでしょう。次に、 'strtolower()'も忘れないでください。 -P –