Php 为什么我的会话_id()没有传递到下一页?
也许有更好的方法可以做到这一点,但我非常确定我仍然应该将会话_id()传递到第二页。相反,在第2页调用它作为我的前几行生成了一个全新的会话_id(),而不是在第1页创建的会话 第2页开始:Php 为什么我的会话_id()没有传递到下一页?,php,session,sessionid,Php,Session,Sessionid,也许有更好的方法可以做到这一点,但我非常确定我仍然应该将会话_id()传递到第二页。相反,在第2页调用它作为我的前几行生成了一个全新的会话_id(),而不是在第1页创建的会话 第2页开始: <?php error_reporting(E_ALL);ini_set('display_errors',1); session_start(); echo session_id(); $sessionid = session_id(); echo "sessionNUM  &
<?php
error_reporting(E_ALL);ini_set('display_errors',1);
session_start();
echo session_id();
$sessionid = session_id();
echo "sessionNUM          = $sessionid\n";
echo "<br>";
echo '<pre>' .print_r($_SESSION, TRUE) . '</pre>';
所有第2-5页都会将该会话的数据插入到数据库中,但由于某种原因,第2页在第1页创建了一个新会话后一直在创建一个新会话,这使我达到了现在的位置
我发现的东西-会话_save_path()是可写的,url路径与页面上的路径相同(…)。同样,在同一个URL上,在不同的目录中有非常相似的页面可以完美地工作,因此我认为这是一个代码错误,而不是php.ini错误。首先,您的浏览器是否拒绝cookie?在这种情况下,您可能总是会得到一个新的会话id。不同的浏览器有不同的选项/面板来接受cookie 其次,将php.ini中的以下字段编辑为合适的值
两个页面具有不同的
会话\u start()
调用?如果要对所有页面使用一个session\u id
,则应该对这两个文件只使用一个session\u start()
调用
例如,创建第三个页面,我们将其命名为bootstrap.php
,并将其包含在PAGE1
和PAGE2
的开头。在此文件中,您可以启动会话
希望我能正确理解你的问题 您是否可以检查会话cookie是否在客户端持久化并被发送回服务器?另外,检查服务器上是否启用了会话持久性。我已经让第2-5页正常工作,共享相同的会话id。只是第1页到第2页的切换不起作用。我猜它可以这样工作,但是当它从第1页到第2页创建新id时,它会像这样跳过数据库中的订单号。一旦它在第2页上获得会话id,它就会将会话id保留到第5页。您的代码似乎没有什么意义。为什么在同一个脚本中多次调用session_start和session_regenerate_id?我现在已经让第2-5页正常工作,共享同一个session_id。只是第1页到第2页的切换不起作用。在会话_start()之前,您不能有任何回显/输出。对于第1页和第2页,确保文件是纯文本,而不是unicode文件。将文件另存为ANSI。
<?php
error_reporting(E_ALL);ini_set('display_errors',1);
session_start();
$sessionid = session_id();
$currentDate = date('Y-m-d');
//echo "sessionNUM          = $sessionid\n";
//echo "<br>";
//echo "<br>";
//echo '<pre>' .print_r($_SESSION, TRUE) . '</pre>';
session_unset();
$old_sessid = session_id();
session_regenerate_id();
$new_sessid = session_id();
session_id($old_sessid);
session_destroy();
session_regenerate_id(FALSE);
session_start();
echo session_id();
echo "<br>";
$sessionid = session_id();
$currentDate = date('Y-m-d');
echo "sessionNUM          = $sessionid\n";
echo "<br>";
echo "<br>";
echo '<pre>' .print_r($_SESSION, TRUE) . '</pre>';
//Connect to DB
require_once 'configPOS.php';
$conn = new mysqli($hn, $un, $pw, $db);
if ($conn->connect_error) die($conn->connect_error);
//Enter Session ID and set Order ID
//search for session info already exsiting
$result=$conn->query("SELECT * FROM POS_HEADERS WHERE sessionid='$sessionid' AND date='$currentDate'");
echo mysql_error();
if(mysqli_num_rows($result) > 0){
echo "session info already exists";
}
else{
echo "test.";
/*
$sessionid = session_id();
*/
$sql="INSERT INTO POS_HEADERS (sessionid, date)
VALUES('$sessionid', '$currentDate')";
if ($conn->query($sql) === TRUE) {
echo "New order started.<br>";
}
else {
echo "Error " . $sql . "<br>" . $conn->error;
}
}
$res=$conn->query("select ORDID from POS_HEADERS where sessionid='$sessionid'");
list($ORDERNUM)= $res->fetch_row();
//echo "<br>";
echo "<br>";
echo "ORDERNUM          = $ORDERNUM\n";
$_SESSION["OrderNum"] = $ORDERNUM;
echo "<br>";
//echo "<br>";
echo "Session variables are set.";
$res=$conn->query("select ORDID from POS_HEADERS where sessionid='$sessionid'");
list($ORDERNUM)= $res->fetch_row();
echo "ORDERNUM= $ORDERNUM\n";
//echo "<br>";
echo $_SESSION["OrderNum"];
$ordernum= $ORDERNUM;
echo $ordernum;
echo '<br>';
$LOCATION = $_POST["pickedlocation"];
echo $LOCATION;
echo "<br>";
echo "<br>";
echo "END Debugging Info";
echo "<br>";
echo "<br>";
echo '<pre>' .print_r($_SESSION, TRUE) . '</pre>';
echo "<br>";
echo session_id();
echo "<br>";
?>
<input type="button" value="Home" class="homebutton" id="btnHome"
onClick="window.location = 'https://www.example.com/POS/home.php'" />
PAGE 2 having one session_id(), lets call it "A",
PAGE 3 had a previous session(id), lets call it "B",
PAGE 4 had session_id() "A" again, and
PAGE 5 had session_id() "B" again.
session.use_cookies
session.save_path
session.use_trans_sid