我想有一個頁面,我可以更改密碼。我應該是唯一可以訪問它的人。所以我的想法是保存我的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