无法根据$ _GET重定向用户
此文件名为forgot.php
<?php
$mode_allowed = array('password');
if (isset($_GET['mode']) === true && in_array($_GET['mode'], $mode_allowed) === true) {
echo $_GET['mode'];
} else {
header('Location: index.php');
exit();
}
?>
<form action="" method="post">
<div class="form-group">
<label class="sr-only">Email Address</label>
<input type="text" name="form-emailaddress" placeholder="Email Address" class="form-emailaddress>
<button type="submit" class="btn signin">Submit</button>
</div>
</form>
所以基于php代码,我认为应该做的是在URL中它应该只接受http://localhost/forgot.php?mode=password
然而,如果它是其他任何东西,那么它应该重定向。但它的作用是,如果我将“模式”更改为其他内容或者模式=“某些”不在数组中($ mode_allowed),那么它只会停留在同一页面上。
由于
答案 0 :(得分:1)
此处;是您的更新代码。
<?php
$mode_allowed = array('password');
if ((isset($_GET['mode'])) && (in_array($_GET['mode'], $mode_allowed))) {
echo $_GET['mode'];
} else {
header('Location: index.php');
exit();
}
?>
您无需在任何地方使用=== true
。
答案 1 :(得分:0)
您需要检查参数值。您获得mode = password,但如果您还有其他任何内容,则应将用户重定向到上一页。
header('Location:index.php');
或者你可以简单地使用if(isset($_GET['mode']) && $_GET['mode'] == 'password')
答案 2 :(得分:0)
首先使用print_r($_GET);
并检查你得到的是什么而不是使用条件还注意我使用trim()
来删除任何多余的空间。
if (isset($_GET['mode']) && in_array(trim($_GET['mode']), $mode_allowed))
{...}
或者如果您仍然面临同样的问题,也可以使用$_REQUEST
if (isset($_REQUEST['mode']) && in_array(trim($_REQUEST['mode']), $mode_allowed))
{...}
答案 3 :(得分:0)
问题是因为我在体内调用了这个php标签