リモートユーザIPをデータベースに保存しようとしています。目的のために私はint(10) UNSIGNED
という列を作成しました。用意された状態でリモートIPを保存する
私はこのすべての作品のようにしてみてくださいしかし、私はINET_ATON
何がデータベースに行かない使用しようとするとIPが127.0.0.1
$ipaddr = $_SERVER['REMOTE_ADDR'];
$stmt = $pdo->prepare('INSERT INTO comment (body, author, email, date, url, ip) VALUES (:body, :author, :email, NOW(), :url, :ipaddr)');
$stmt->execute(array(
':body' => $_POST['k3jZGEeX1k1oo'],
':author' => $_POST['k3k0xKicU0eHQ'],
':email' => $email,
'url' => $url,
'ip' => $ipaddr
));
のように保存されます。
$ipaddr = $_SERVER['REMOTE_ADDR'];
$stmt = $pdo->prepare('INSERT INTO comment (body, author, email, date, url, ip) VALUES (:body, :author, :email, NOW(), :url, :INET_ATON(ipaddr))');
$stmt->execute(array(
':body' => $_POST['k3jZGEeX1k1oo'],
':author' => $_POST['k3k0xKicU0eHQ'],
':email' => $email,
'url' => $url,
'ip' => $ipaddr
));
:INET_ATON(ipaddr)
に注意してください。準備されたステートメントでこれを行うにはどうすればよいですか?
':INET_ATON'?これは組み込み関数ですhttps://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_inet-atonなぜコロンですか?あなたが望むのは 'INET_ATON(:ip)'です。 –
'int(10)UNSIGNED'を使うべきではありません。それは "奇妙な"数字です...あなたは3つのドット( '.')を持っています。それで 'varchar(12)' - > 'XXX.YYY.ZZZ.WWW' - > 12 – matiaslauriti
@ Fred-ii-に変更してください。これも同様に試しましたが、' error 500'を返しました –