我写了这个剧本:
<html>
<head>
<link rel="stylesheet" type="text/css" href="../../css/stile.css">
</head>
<body>
<?php
include_once("../../classi/funzioni.php");
include_once("../../classi/config.php");
include_once("../../classi/auth.lib.php");
session_start(); //Inizio la sessione
list($status, $user) = auth_get_status();
if($status == AUTH_LOGGED && $user['nome_negozio']=="Black Fashion"){
echo "<h1>ORDINE DA CLIENTE</h1>";
$prodotto="SELECT * FROM elenco_movimenti WHERE cliente='".$user['nome_negozio']."'";//query
echo "<br><b>QUERY</b><br>";
echo $prodotto;
$prodotto=$db_magazzino->query($prodotto);
$prodotto=$prodotto->fetch_row();
$i=count($_SESSION);
$_SESSION[$i]=$prodotto;
}
?>
<form name="form1" method="post" action="./ordine_da_cliente.php">
<label for="barcode"><b>Codice a barre</b></label>
<input type="text" name="barcode" >
<input type="submit" name="submit" value="OK">
</form>
</body>
</html>
NB
$i=count($_SESSION);
$_SESSION[$i]=$prodotto;
然后如果会话有0个元素,我将产品设置为$ _SESSION [0],我用var_dump看到它:
VAR DUMP SESSION
array(1) { [0]=> array(14) { [0]=> string(1) "0" [1]=> string(19) "2014-10-12 08:31:18" [2]=> string(18) "Carico da articoli" [3]=> string(13) "0913VLA002001" ETC...
但下一个计数总是为零,我看到相同的vardump ......
为什么我看不到$ _SESSION [0] [0] [1] [2]。 $ _SESSION [1] [0] [1] [2],等等?
答案 0 :(得分:1)
你的问题是:
<html>
<head>
<link rel="stylesheet" type="text/css" href="../../css/stile.css">
</head>
<body>
<?php
include_once("../../classi/funzioni.php");
include_once("../../classi/config.php");
include_once("../../classi/auth.lib.php");
session_start(); //Inizio la sessione
通过在<html>
和<?php
之间发送所有内容,您have already sent headers to the browser,因此浏览器不会在页面之间存储会话变量。因此,每次页面加载之间的每个用户每次都会有一个空的$_SESSION
,因为浏览器没有从您的服务器存储会话ID,但仍然会在即时脚本中存储$_SESSION
个变量执行就像你只使用任何其他变量一样。
在任何浏览器输出之前,将代码更改为使用session_start
。
<?php
session_start(); //Inizio la sessione
include_once("../../classi/funzioni.php");
include_once("../../classi/config.php");
include_once("../../classi/auth.lib.php");
?><html>
<head>
<link rel="stylesheet" type="text/css" href="../../css/stile.css">
</head>
<body>
<?php
// .. Rest of your code
你知道,if you read the docs fully,它说:
注意:强> 要使用基于cookie的会话,必须在向浏览器输出任何内容之前调用session_start()。
答案 1 :(得分:0)
我发现了错误:
如果我删除以下行:
include_once("../../classi/funzioni.php");
include_once("../../classi/config.php");
include_once("../../classi/auth.lib.php");
页面config.php包含以下行:
error_reporting(E_ALL & ~E_NOTICE); //0 E_ALL
然后我看到这个通知:
Notice: Unknown: Skipping numeric key 1 in Unknown on line 0
然后我写这个:
$_SESSION['ordine_'.'1']="Ciao come stai?";
它会保存会话。我不太喜欢这种方法,但现在它有效。
无论如何,谢谢你的支持。
亲切的问候。