我目前有一個函數可以存儲已經輸入到表單中的查詢。我正在嘗試保存提交表單的用戶的IP地址以及輸入。存儲獲取和存儲IP地址
目前是這樣的功能:
function userIP(){
$ip = $_SERVER['REMOTE_ADDR'];
if($ip){
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
$ipis = ip2long($ip);
}
return $ip;
}
return false;
}
public function __construct($data = array()) {
if(isset($data['text'])) $this->text = stripslashes(strip_tags($data['text']));
if(isset($data['ipis'])) $this->ipis = stripslashes(strip_tags($data['ipis']));
}
public function storeFormValues($params) {
$this->__construct($params);
}
public function store() {
$correct = false;
try {
$con = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO tbl(content, ip) VALUES(:text, :ipis)";
$stmt = $con->prepare($sql);
$stmt->bindValue("text", $this->text, PDO::PARAM_STR);
$stmt->bindValue("ipis", $this->ipis, PDO::PARAM_STR);
$stmt->execute();
return "Added";
}catch(PDOException $e) {
return $e->getMessage();
}
}
}
但是它目前只存儲已輸入的,只是增加了NULL到數據庫IP「文本」。 IP行的MYSQL被設置爲一個無符號的INT 11. 關於解決這個問題的任何想法?
可能是您需要更改數據類型爲varchar來存儲IP地址 – DeDav
應該不需要,因爲我使用ip2long – JPDP
Ip2long可能會返回負值。猜測第一項措施需要做什麼? – itachi