Сохраненные файлы cookie исчезают после аутентификации в неактивном портале - PullRequest
0 голосов
/ 16 декабря 2018

Обязательное «Я новичок в этом».

У меня проблема, из-за которой файл cookie не сохраняется после входа в портал.У меня есть настроенный портал, где он попадает на наш веб-сервер, хранит mac и уникальный идентификатор на 2 куки, перенаправляет их в другое место для аутентификации, а затем они возвращаются на наш веб-сервер, где мы ищем этот uid и возвращаем уникальный код,Тестирование этого на компьютере с Windows работает нормально, однако на телефоне с Android это не так.Кажется, что на телефоне Android я вижу, что cookie установлен, в этом браузере по умолчанию вы получаете с точками доступа Wi-Fi, потому что я сделал эту страницу, повторяющую значение.Но затем, когда я вручную ввожу URL-адрес в браузере Chrome, он показывает мне, что cookie больше не имеет никакого значения.Протестировал это на 2 телефонах android и моем ноутбуке Windows (который снова работает отлично).Есть какие-нибудь идеи по этому поводу?

Это, вероятно, похоже на руины.

Это первая страница, на которой они попадают:

$sql = "select uid from table where mac =('$client_mac_address')";
$uidResult = $conn->query($sql);
if($uidResult->num_rows > 0) {
    while($row = mysqli_fetch_array($uidResult)) {
        $cookie_uid = "UID";
        echo $row['uid'];
        setcookie($cookie_uid,$row['uid'],time() + (86400 * 30),"/");
        if(!isset($_COOKIE[$cookie_uid])) {
            echo "Cookie named '" . $cookie_uid . "' is not set!";
        } else {
            echo "Cookie '" . $cookie_uid . "' is set!<br>";
            echo "Value is: " . $_COOKIE[$cookie_uid];
            echo $_COOKIE[$cookiename];
        }
    }
};

Это последняя страница, на которой они приземляютсяСначала я получаю их MAC, а затем использую его, чтобы потом найти uid:

<?php

$cookiename = "UID";
if(!isset($_COOKIE[$cookiename])) {
    echo "Cookie '" . $cookiename . "' isn't set <br>";
} else {
    echo "Cookie '" . $cookiename . "' is set <br>";
    echo "Value: " . $_COOKIE[$cookiename];
}

?>

<script>
function getCookie(UID) {
  var name = UID + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i <ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

function getCode(){
    var uid = getCookie("UID");
    if (uid == "") {
        return;
        console.log("empty");
    } else {
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
    } else {
        // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById("divCode").innerHTML = this.responseText;
            console.log("on ready");
        }
    };
    xmlhttp.open("GET","getCode.php?q="+uid,true);
    console.log("open");
    xmlhttp.send();
    console.log("send");
    }           
}

</script>

, который идет в php-файл на сервере для обработки запроса get:

$q = intval($_GET['q']);
echo "$q";
$servername = "localhost";
$username = "user";
$password = "password";
$dbname = "dbname";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
if (!$conn) {
    die('can't connect: ' . mysqli_error($conn));
}
mysqli_select_db($conn,"table");
$sql="SELECT code FROM table WHERE uid = ".$q;
$result = mysqli_query($conn,$sql);

echo "<table>
<tr>
<th>Code</th>
</tr>";
while($row = mysqli_fetch_array($result)) {
    echo "<tr>";
    echo "<td>" . $row['code'] . "</td>";
    echo "</tr>";
}
echo "</table>";
mysqli_close($conn);

1 Ответ

0 голосов
/ 11 марта 2019

Captive Portal хранит файлы cookie в среде «песочницы», они не делятся с обычным браузером в Android и IOS.

...