Okey们,我尝试使用访问代码来保护页面,但是如果有人在url pagename.php页面中加载而没有检查我的代码,那么页面就没有了。代码是正确的访问代码重定向到我的页面之后的工作但是,在我的页面中写入后,页面没有安全的客户端访问页面而没有代码.....
<?php
include ('modules/conf.php');
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST") {
$secretcode = mysqli_real_escape_string($db,$_POST['secretcode']);
$sql = "SELECT * FROM password WHERE password = '$secretcode'";
$result = mysqli_query($db,$sql);
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
$active = $row['active'];
$count = mysqli_num_rows($result);
if($count == 1) {
$_SESSION['login_user'] = $secretcode;
session_start();
header("location: question.php");
}else {
echo '<script type="text/javascript">';
echo 'setTimeout(function () { swal("", "Съжеляваме вашият код е невалиден");';
echo '}, 1000);</script>';
}
}
?>
<div class="section">
<div class="container-fluid gamebox">
<div class="row">
<div class="col-md-6">
<div class="secretcode">
<h1 class="text-center">въведете код от брошурата</h1>
<form action="" method="post" class="formsecretcode text-center">
<input type="secretcode" id="codeverify" name="secretcode" placeholder="въведете вашият код">
<input type="submit" class="buttonsubmit" name="submit" value="провери код">
</form>
</div>
</div>
答案 0 :(得分:3)
正如我在评论中所说,到目前为止没有人发布答案,我提交了以下内容。
检查会话是否已设置(使用可选&#34; if { equal to something }
&#34;),如果没有,则else { kick them out }
。
逻辑是,并且是使用您希望保护的会话的每个页面的一部分,并假设$secretcode
等于12345作为示例:
<?php
session_start();
if (isset($_SESSION['login_user']) && $_SESSION['login_user'] == '12345'){
// Do something
}
else {
// Do something else
}
最好在标头之后添加exit;
,否则您的代码可能希望继续执行。
参考:
<强>脚注:强>
您不需要使用session_start();
两次,因为这可能会触发会话已经开始。
参考文献:
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
附加说明:
您可以选择在查询中检查用户名和密码字,使其更加独特。
$username = "Johnny B. Good";
$sql = "SELECT * FROM password
WHERE username = '$username'
AND password = '$secretcode'";
除非您仅检查密码,否则请按照现在的方式保留查询。