if(isset($ _ POST [“submit”]))

时间:2015-08-28 12:10:47

标签: php session post

我是一个全新的程序员,我正在尝试用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>

3 个答案:

答案 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)

回显输出内部如果,delcare会话开始在顶部,测试并且100%工作。注意 - 在顶部和关闭表单标签上添加php代码

ssh remote_host test -f "/path/to/file" && echo found || echo not found

enter image description here