방금 전에 구입 한 웹 서버에 내 웹 사이트를 업로드하면 컴퓨터에서 모든 것이 완벽하게 작동합니다. 하지만 지금은 데이터베이스에 데이터를 삽입 할 때 문제가 발생했습니다. 삽입 된 모든 행에 삽입되는 행을 만드는 사용자의 IP 주소로 문제를 추적했습니다.PHP가 내 데이터베이스에 ip2long을 삽입 할 때 문제가 발생했습니다.
나는 ip2long
값을 반환하는 PHP 함수를 가지고 있고 그것은 다음과 같습니다
function ip2()
{
return ip2long($_SERVER['REMOTE_ADDR']);
}
내 데이터베이스에 삽입하기 위해 SQL 코드는 다음과 같습니다
$sql = "INSERT INTO `Users`
(
`Username`,
`Password`,
`Email`,
`ip_created`
)
VALUES
(
'".$db->sql_escape(htmlspecialchars($this->username, ENT_QUOTES))."',
'".$db->sql_escape($this->secure_pass)."',
'".$db->sql_escape($this->clean_email)."',
'".ip2()."'
)";
$db->sql_query($sql))
ip_created
필드는 길이가 int
이고 길이가
데이터베이스 상호 작용은 모두 PHP 클래스에서 처리됩니다. 문제가 될 수 있습니다.
나는 문제가 어디에서 유래했는지 알지 못하고 정말로 내 문제를 일으키기 시작했다. 모든 것이 내 localhost 버전에서 완벽하게 작동했습니다. 당신이 64 비트 시스템을 실행하는 경우
'ip2long()'은 32 비트 시스템에서 음수를 반환 할 수 있습니다. 데이터베이스 필드가'INT UNSIGNED'이라면 게임이 올바르게 실행되지 않습니다. 나는 개인적으로 IP 주소를''(N ')'포장하여'VARBINARY (4)'로 저장하는 것을 선호한다. YMMV – DaveRandom