我是一个全新的程序员,我正在尝试用PHP开发一个网站。我想在这部分代码中做的就是“读取”用户的输入并将它们保存为会话变量,以便在另一个子页面中执行/计算其他内容。为了查看一切是否正常,我添加了行echo "Welcome ",$_SESSION["firstname"];
echo "ok"
,但它无效。你能帮助我吗?
这是我的代码:
<!DOCTYPE html>
<html>
<body>
<form method="post" action="">
<b>First Name:</b> <input name="firstname" type="text" value=""></br></br>
<b>Last Name:</b> <input name="lastname" type="text" value=""></br></br>
<b>Age:</b> <input name="age" type="number" min="0" value=""></br></br>
<b>Number of people in household:</b> <input name="numberofpeopleinhousehold" type="number" min="1"value=""></br></br>
</br></br>
<input type="submit" name="submit" value="Submit">
</form
<?php
session_start();
if (isset($_POST["submit"])){
$_SESSION["firstname"]= $_POST["firstname"];
$_SESSION["lastname"]= $_POST["lastname"];
$_SESSION["age"]= $_POST["age"];
$_SESSION["numberofpeopleinhousehold"]= $_POST["numberofpeopleinhousehold"];
}
echo "Welcome ".$_SESSION["firstname"];//here is....
echo "ok"
?>
</body>
</html>
答案 0 :(得分:1)
这实际上是有效的。如果您查看源代码,您将看到您的名字被回显。
一个问题是您在表单标记的末尾缺少一个大于号的符号。
</form
应该是
</form>
此外,您需要在任何html之前启动会话。试试这个......
<?php
session_start();
if (isset($_POST["submit"])){
$_SESSION["firstname"]= $_POST["firstname"];
$_SESSION["lastname"]= $_POST["lastname"];
$_SESSION["age"]= $_POST["age"];
$_SESSION["numberofpeopleinhousehold"]= $_POST["numberofpeopleinhousehold"];
}
?>
<!DOCTYPE html>
<html>
<body>
<form method="post" action="">
<b>First Name:</b> <input name="firstname" type="text" value=""></br></br>
<b>Last Name:</b> <input name="lastname" type="text" value=""></br></br>
<b>Age:</b> <input name="age" type="number" min="0" value=""></br></br>
<b>Number of people in household:</b> <input name="numberofpeopleinhousehold" type="number" min="1"value=""></br></br>
</br></br>
<input type="submit" name="submit" value="Submit">
</form>
<?php
if ($_SESSION["firstname"] != ""){
echo "Welcome ",$_SESSION["firstname"];
echo "ok";
}
?>
</body>
</html>
答案 1 :(得分:1)
session_start()所做的是在向浏览器提供cookie时在页眉中发送cookie。如果您已经将某些数据发送到浏览器,例如您的表单,那么PHP将无法启动会话。您需要将session_atart()
移到文档的最顶部,表单上方或任何echo
。另外,正如其他人所指出的那样,你错过了一个分号。此外,您需要正确关闭<form>
代码。
答案 2 :(得分:1)