首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用access代码保护页面

如何使用access代码保护页面
EN

Stack Overflow用户
提问于 2016-03-08 23:03:55
回答 1查看 420关注 0票数 0

好了,伙计们,我试着用访问代码保护页面,但如果有人在url中写pagename.php页面加载而没有检查我的代码,页面是不安全的。代码是工作后放置正确的访问代码重定向到我的页面,但是,页面是不安全的客户访问页面没有代码后写在url我的页面.....

代码语言:javascript
复制
 <?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>
EN

回答 1

Stack Overflow用户

发布于 2016-03-08 23:30:42

正如我在评论中所说的那样,看到到目前为止还没有人发布答案,我提交了以下内容。

检查是否设置了会话(使用可选的"if { equal to something }"),如果没有,则执行else { kick them out }

逻辑是,和成为每个页面的一部分,使用您希望保护的会话,并假设$secretcode等于12345为例:

代码语言:javascript
复制
<?php 

session_start();

if (isset($_SESSION['login_user']) && $_SESSION['login_user'] == '12345'){

   // Do something

}

else {

   // Do something else

}

最好在header后面添加exit;,否则您的代码可能需要继续执行。

参考资料:

  • http://php.net/manual/en/function.header.php

脚注:

您不需要使用两次session_start();,因为这可能会触发会话已经启动。

  • 使用它一次,并且在每个页面的“顶部”,同时确保你没有在页眉之前输出。

参考文献:

将添加到文件的顶部,这将有助于查找错误。

代码语言:javascript
复制
<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

Sidenote:显示错误应该只在试运行中进行,而不应该在生产环境中进行。

补充说明:

您可以选择在查询中同时检查用户名和密码,这会使其更具唯一性。

代码语言:javascript
复制
$username = "Johnny B. Good";

$sql = "SELECT * FROM password 
        WHERE username = '$username' 
        AND password = '$secretcode'";

除非你只检查一个密码,否则就让你的查询保持现在的样子。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35870859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档