Я пишу код, который записывает размеры экрана пользователей, а затем перенаправляет их на другой сайт, но, похоже, не работает. Я не знаю, где ошибка, так как я много раз пересматривал синтаксис, и все, кажется, в порядке. Вот пример кода, который используется:
index. html
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="utf-8">
<title>My Title</title>
<link rel="shortcut icon" href="./Logo.png"/>
</head>
<body onload="process()">
<script>
var xmlHttp = createXmlHttpRequestObject ();
function createXmlHttpRequestObject () {
var xmlHttp;
// if running Internet Explorer 6 or older
if (window.ActiveXObject) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
xmlHttp = false;
}
} else {
try {
xmlHttp = new XMLHttpRequest();
}
catch (e) {
xmlHttp = false;
}
}
if (!xmlHttp)
alert ("Error creating the XMLHttpRequest object.");
else
return xmlHttp;
}
function process () {
height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
xmlHttp.open("POST", "screenRecorder.php", true);
xmlHttp.onreadystatechange = handleRequestStateChange;
xmlHttp.send("height=" + height + "&width=" + width);
} else
setTimeout('process()', 1000);
}
function handleRequestStateChange () {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
try {
HandleServerResponse();
} catch(e) {
alert("Error reading the response: " + e.toString());
}
}
}
}
function HandleServerResponse () {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
var response = xmlHttp.responseText;
if (response == 'OK') {
window.location.replace("My URL");
} else {
setTimeout('process()', 1000);
}
}
}
}
</script>
</body>
</html>
и screenRecorder. php
<?php
class DB {
private static function connect () {
$pdo = new PDO('mysql:host=myhost;dbname=mydbname;charset=utf8', 'myusername', 'mypassword');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
}
public static function query ($query, $params = array()) {
$statement = self::connect()->prepare($query);
$statement->execute($params);
if (explode(' ', $query)[0] == 'SELECT') {
$data = $statement->fetchAll();
return $data;
}
}
}
$height = $_POST['height'];
$width = $_POST['width'];
if (!empty($height) && !empty($width)) {
DB::query('INSERT INTO screens VALUES(:height, :width)', array(':height'=>$height, ':width'=>$width));
echo 'OK';
} else {
echo 'NO';
}
?>