Как получить доступ к одной переменной php на другой веб-странице - PullRequest
3 голосов
/ 01 апреля 2019

Возникла некоторая проблема при доступе к переменной сеанса на другой веб-странице

Я пытался использовать jquery для обновления страницы, которая создает сеанс (data.php), а также соединение с базой данных и SQL-запрос работает нормально, проверил их независимо.

test.php

    <?php
    session_start();
    ?>

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>

    </head>
    <body>
         <div id="show">   </div>

         <script type="text/javascript" src="jquery.js"></script>
         <script type="text/javascript">
                $(document).ready(function() {
                setInterval(function () {
                $('#show').load('data.php')  // reloades data.php repetedly
                }, 1000);
        });
        </script>

        <?php   echo $_SESSION["id"];  ?>
    </body>
    </html>

data.php

<?php    
session_start();


$conn = new mysqli("localhost","id6207501_datausername","123456789","id6207501_dataname");
    if ($conn->connect_error) {
    die("Connection error: " . $conn->connect_error);
    }
$result = $conn->query("SELECT status,id FROM logs order by id desc limit 1");
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
    $_SESSION["id"]=$row['id'];
    $_SESSION["status"]=$row['status'];

     }
}

?>

Я ожидаю, что test.php выведет значение переменной сеанса $_SESSION["id"], чего нет.

Ответы [ 3 ]

1 голос
/ 01 апреля 2019

Вы должны вызвать метод получения AJAX и установить возвращаемый текст в файле data.php.

test.php

 <!DOCTYPE html>
 <html>
 <head>
 <meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <title></title>

<head>

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script type="text/javascript">
    setInterval(function () {

            $.get("data.php", function(data, status){
                $('#show').html(data);
            });
            }, 1000);
    </script>

 </head>
 <body>
    <div id="show"> <?php   echo $_SESSION["id"];  ?>  </div>
 </body>
 </html>

data.php

<?php    
session_start();

// You can uncomment it and test

// $conn = new mysqli("localhost","id6207501_datausername","123456789","id6207501_dataname");
//     if ($conn->connect_error) {
//     die("Connection error: " . $conn->connect_error);
//     }
// $result = $conn->query("SELECT status,id FROM logs order by id desc limit 1");
// if ($result->num_rows > 0) {
// while ($row = $result->fetch_assoc()) {
//     echo $_SESSION["id"]=$row['id'];
//     echo $_SESSION["status"]=$row['status'];

//      }
// }

    // Comment when you uncomment DB
    // FOR example purpose 
    $_SESSION["id"]= rand(1,2000);

    echo $_SESSION["id"];

?>
0 голосов
/ 01 апреля 2019

Вы также можете использовать локальное хранилище. Установите значение переменной на первой странице.

<script>localstroage.setItem("myItem","value");</script>

И получить значение на другой странице, используя getItem

<script>var x = localstroage.getItem("myItem");</script>

Или сумасшедшие

<script type="text/javascript">document.cookie = "cookieName=cookieValue";</script>

А на странице php

  <?php $phpVar =  $_COOKIE['cookieName'];echo $phpVar ;?>
0 голосов
/ 01 апреля 2019

Во-первых, проверьте, работает ли сессия на какой-либо странице или нет.

Добавьте эту строку вверху

<?php

ini_set('session.save_path',realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../session'));
session_start();

Это работает как с перенаправлением из PHP с помощью header('Location: '), так и сJavaScript window.location.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...