我想有一个页面,我可以更改密码。我应该是唯一可以访问它的人。所以我的想法是保存我的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为空,并没有显示任何错误,因为没有错误:)非常感谢试图帮助我。我真的很感激。
为什么你使用''strip_tags()''''stripslashes()'和'trim()'盲目地使用每个POST变量? – 2012-04-02 15:34:14
防止sqlinjections在某人曾经会找到页面的情况下! – bonny 2012-04-02 15:36:11
哦,我原以为你正在使用'real_escape_string()'。然后,不要忘记'strtolower()'。这样可以防止黑客在你的页面中大喊大叫; --P – 2012-04-02 15:42:04