我刚刚开始使用会话变量,而且我遇到了一些问题。
我试图将表单处理脚本中的变量回显到另一个页面,但目前我没有得到任何结果。
在开始之前,让我说我已经检查了其他问题,包括这个问题:
我检查了第一个答案清单上的所有内容,但仍然没有 我得到的唯一错误是:
注意:未定义索引:id
我假设是因为当页面首次启动时,它并不知道id是什么,但即使在提交错误后仍然存在。
<?php
session_start();
error_reporting(E_ALL);
ini_set("display_errors", 1);
?>
<!DOCTYPE html>
<html>
<head>
<title>PHP Sessions</title>
</head>
<body>
<?php echo $_SESSION['id']; ?>
<form action="submit.php" method="post">
<input type="text" name="number" id="number">
<button type="submit">Submit</button>
</form>
</body>
</html>
<?php
session_start();
try {
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$id = $_POST['number'];
};
header('Location: http://home.com/');
exit();
} catch (Exception $e) {
echo $e->getMessage();
}
?>
答案 0 :(得分:1)
正如我的评论中所提到的,你没有给它任何东西,这就是你得到这个通知的原因。因此,请使用isset()
。
if(isset($_SESSION['id'])) {
echo "The session is set.";
} else{
echo "Sorry, it's not set.";
}
或
if(isset($_SESSION['id'])) {
echo "The session is set.";
}
else{
$_SESSION['id'] = "ID123";
}
从初始页面开始,您可以使用三元运算符(参见参考注释)来回显它是否已设置。
<?php
session_start();
error_reporting(E_ALL);
ini_set("display_errors", 1);
?>
<!DOCTYPE html>
<html>
<head>
<title>PHP Sessions</title>
</head>
<body>
<?php echo isset($_SESSION["id"]) ? $_SESSION["id"] : '' ?>
<form action="submit.php" method="post">
<input type="text" name="number" id="number">
<button type="submit">Submit</button>
</form>
</body>
</html>
旁注:我对这些内容进行了评论,将这些内容放回去时,请评论echo $id;
;否则会抛出通知。
// header('Location: http://home.com/');
// exit();
submit.php 并使用条件!empty()
作为POST数组。
<?php
session_start();
try {
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if(!empty($_POST['number'])){
$_SESSION['id'] = $_POST['number'];
// $id = $_POST['number'];
$id = $_SESSION['id'];
echo $id;
}
};
// header('Location: http://home.com/');
// exit();
} catch (Exception $e) {
echo $e->getMessage();
}
?>
如果您愿意,''
末尾的isset($_SESSION["id"]) ? $_SESSION["id"] : ''
可用于输入默认文字/数字。
即:
isset($_SESSION["id"]) ? $_SESSION["id"] : 'default value'
<强>参考(S):强>
答案 1 :(得分:0)
$ _SESSION变量与所有变量一样,必须先创建。在您的表单上,您尝试显示变量但它尚不存在。
如果您尝试在之前初始化会话,则可以正常运行。
//If the variable exists, display it.
if ( isset($_SESSION['id'] )
echo $_SESSION['id'];