我有一个包含PHP文件的应用程序,可以用来参加我的摄影俱乐部参加的比赛。
如果我这样使用它的功能:
登录页面(将用户ID保存在SESSION变量中)
菜单页面
支付页面->进入贝宝->返回“支付成功”页面
“ Paysuccess”页面失败,因为SESSION变量现在为空 (会话ID相同,因此它不是新会话)
但是,如果我这样做的话:
登录页面(将人员ID保存在SESSION变量中)
菜单页面
其他页面(在应用程序内)->处理数据页面
菜单页面
支付页面->进入贝宝->返回“支付成功”页面
由于SESSION变量仍然存在,Paysuccess页面现在可以工作了。
此系统已经使用了一段时间,但现在已经出现此问题。可能是巧合,但是我想最近安装Worpress(用于其他用途),这需要将我的站点移至托管系统上的新服务器,并将PHP从4.x升级到7.x。主持人还设置了使用https的内容: 巧合?一旦我适应了MySQL调用,其他一切似乎都可以正常工作。 如果似乎也很可疑,则该问题仅在我的应用程序跳转到Paypal并返回时才会出现。话虽如此,为什么在Paypal跳转之前运行其他功能会有所不同?
所有PHP页面在DOCTYPE第一行之后立即执行''。人员id变量在登录页面中设置,然后被其他页面引用。
最后一件事是,尽管我一直在弄乱它,但放入ECHO等来尝试对其进行调试,但有时似乎可行。我可能未如我应该的那么有条不紊,所以无法确切地说出何时。
代码……(不知道要发布多少mcuh,因为这会使问题变得很长。
** 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))