Я хотел бы иметь страницу, где я могу изменить пароли. Я должен быть единственным, кто имеет к нему доступ. поэтому я думал сохранить свой IP-адрес и зашифровать его перед тем, как сохранить в БД. моей первой попыткой было ввести IP вручную. затем я подумал, что будет гораздо проще и безопаснее получить мой IP-адрес, который я получил, во втором файле с именем ip.php:
$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 не работает. по причине, которую я не знаю, почему это не работает. я также использовал errorreport и получил сообщение:
Notice: Undefined variable: db_IP in ...
Я также попробовал var_dump, но не было никакой ошибки. но когда я отзовусь
$IP and $ip_address
, который будет отображать IP правильно. поэтому я не понимаю, почему это не сработает. спасибо.
UPDATE
хорошо, когда для сообщения об ошибке установлено значение 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 и забыл о том, каково условие в операторе if, чтобы сначала получить оператор else. я пытался получить вывод без условий оператора if. так что наверняка не могло быть сгенерировано вывода, когда первая фраза не состоялась. Вот почему var_dump был пуст и не показывал никакой ошибки, потому что ошибки не было :) Большое спасибо за попытку помочь мне. я правда ценю это.