Потеря переменных SESSION в PHP с Paypal - PullRequest
0 голосов
/ 02 января 2019

У меня есть приложение, состоящее из файлов PHP, которое предназначено для участия в конкурсе, который запускает мой фотоклуб.

Если я использую его функции таким образом:

Страница входа (сохраняет идентификатор пользователя впеременная SESSION)
Страница меню
Страница оплаты комиссии -> переходит на Paypal -> возвращает на страницу 'paysuccess'

страница Paysuccess не работает, поскольку переменные SESSION теперь равны нулю (Идентификатор сеанса такой же, хотя, так что это не новый сеанс)

Однако, если я сделаю:
Страница входа (сохраняет идентификатор лица в переменной SESSION)
Страница меню
Некоторые другиестраница (в приложении) -> обработать страницу данных
Страница меню
Страница оплаты комиссии -> переходит на Paypal -> возвращается на страницу 'paysuccess'

страница Paysuccess теперь работает,поскольку переменные SESSION все еще находятся на своем месте.

Эта система уже некоторое время используется, но эта проблема появилась.Это может быть совпадением, но я недавно хотел установить Worpress (для другого использования), и для этого потребовалось перенести мой сайт на новый сервер в хостинговой системе и обновить PHP с 4.x до 7.x.Хостинг люди также настроили использовать https: совпадение?Все остальное работает нормально, как только я адаптировал вызовы MySQL.Если также кажется подозрительным, что проблема возникает только тогда, когда мое приложение переходит на Paypal и возвращается.Сказав это, зачем запускать какую-то другую функцию перед переходом на Paypal?Переменная person id задается на странице входа в систему, а затем на нее просто ссылаются другие страницы.

И последнее, что, пока я возился с ней, вставлял ECHO и т. д., чтобы попытаться отладить ее,иногда это похоже на работу.Возможно, я не был так методичен, как следовало бы, поэтому не могу точно сказать, когда это так.

Код ...... (не уверен, как много постить, так как вопрос очень длинный.

** Login.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php session_start(); ?>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href="RO.css">
</head> 

<body>
((snip))
if ($logresult == "Bad") 
    $_SESSION['logok'] = 0;
    echo "Your log-in details were incorrect. Please try again.<br><br>(use the 'Back' button to get back to the login screen)";
    }
else
    {
    $_SESSION['logok'] = 1;
    $_SESSION['authid'] = $authid;
    header("Location: ro-menu.php");    
    }

?>
</div>

** payfee.php:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <?php session_start(); ?>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <link rel="stylesheet" type="text/css" href="RO.css">
    </head> 

    <body>
    <?php

    if ($_SESSION['logok'] <> 1)
        {
        echo "<h4>Rushden Open Photographic Exhibition.</h4><br>";
        die("Not logged in.");
        }
    $authid = $_SESSION['authid'];
    ?>  

((snip))

** paysuccess.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php session_start(); ?>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href="RO.css">
</head> 

<body>

<?php
function sendtheMail($rr, $mm)
    {
    $to = "";
    $subject = "Rushden Open exhibition";
    $headers = "From: Rushden Open <xxxxxxx@xxxxx.co.uk>\n";
    $headers .= "Bcc:" . $rr;
    mail($to, $subject, $mm, $headers);
    }
?>

<div id="wrapper">

<h2>Rushden Open Photographic Exhibition - 37th year, 2019</h2> 
<?php

$conn = new mysqli("localhost", "open", "xxxxxx", "Rushden_Open");
if ($conn->connect_error) 
    {
    die("MySQL connection failed: " . $conn->connect_error);
    }
$sql = "lock tables author WRITE";
if (!$conn->query($sql))
    die("Error locking tables : " .  $conn->error);

# get entrant record 
$sql = "Select * from author where Author_id = " . $authid;
**** - and the above line fails as $authid is null
((snip))
...