这是我几天来的问题。当我做的时候
<form action = "something.php" method="post">
它始终有效,但是当我尝试在PHP中使用标题进行切换时,我遇到了一些问题。我要做的是检查输入数据是否写入,如果没有,则回显某个短语,但如果所有内容都写入,则登录。
<?php
$usernameErr = $passwordErr = "";
if (isset($_POST['submit'])) {
if(empty($_POST["uid"])){
$usernameErr = "Username required";
};
if(empty($_POST["pwd"])){
$passwordErr = "Password required";
} ;
if(!empty($_POST["uid"]) and !empty($_POST["pwd"])) {
header("Location: login.php");
};
};
?>
<form name="frm" method="post">
<input type = "text" name = "uid" placeholder = "Username"; >
<?php echo $usernameErr; ?> <br>
<input type = "password" name = "pwd" placeholder = "Password" ; >
<?php echo $passwordErr?> <br>
<input name="submit" type="submit" id="submit" onclick="action()" value="submit" >
</form>
<?php
if (isset($_SESSION['id'])){
echo $_SESSION['id']," ", "You've succesfully logged in";
} else {
echo "youre not logged in";
}
?>
答案 0 :(得分:0)
action
属性包含网页将您重定向到表单后重定向到的URL。 (MDN Docs - Form)header()
函数向客户端浏览器发送header
。 header("Location: http://www.example.com/");
还会将HTTP状态代码设置为302 - Redirect
,这会导致浏览器重定向到标头中添加的新位置。注意:关于在PHP中重定向:https://stackoverflow.com/a/768472/4257747
tl; dr:请记住在任何打印之前使用header()
。添加die()
标题后,立即使用exit()
或Location
。
作为最后一点。您的代码虽然不是很好,但应该最终重定向到login.php
。您遇到的问题究竟是什么?
如果要显示“已登录”消息,则应将其显示在login.php
文件中。