【问题标题】:Password protect pages with prompt and PHP使用提示符和 PHP 密码保护页面
【发布时间】:2018-09-18 16:18:50
【问题描述】:

我正在尝试对我正在使用的 CMS (couchcms) 中的页面进行密码保护。从“contracts.php”页面生成的所有页面都有一个唯一的 ID 和 URL。

我想做的是,如果您访问这些页面之一,当页面加载时会弹出一个提示窗口,如果您输入的内容与您访问的 URL 的合同 ID 不匹配,它不允许用户访问该页面。

如果ID匹配,则可以查看访问过的页面。

例如:

合同 #334455 的网址如下: example.com/contract/25348764329871098723498

如果我单击该链接,我只会看到一个空白页面,并且会看到一个提示窗口。我必须在字段中输入 334455 才能解锁页面。如果不是正确的 ID(与当前 URL 不匹配),它应该显示一条阻止页面的消息。

我尝试过类似的方法,但这不够安全,因为您可以在源代码中看到它,并且它会重定向到同一页面,因此它会创建一个循环并始终要求输入密码。我需要它来解锁页面,而不需要重定向:

 <SCRIPT>
function passwordCheck(){
    var password = prompt("Please enter the password.");
    if (password==="<cms:show my_uid/>"){
        window.location="<cms:show k_page_link/>";
    } else{
        while(password !=="<cms:show my_uid/>"){
            password = prompt("Please enter the password.");
        }
    }
}
window.onload=passwordCheck;
</SCRIPT>

以下是有关使用的变量的一些详细信息:

<cms:show my_uid/> = The generated ID for the page
<cms:show k_page_link/> = The generated URL for the page

这些变量随每个页面而变化。

任何解决方案会更安全并且可以像我描述的那样工作? 非常感谢

【问题讨论】:

  • 安全只能在只有您控制的环境中才能实现,因此必须在服务器上而不是在客户端上实现。
  • 我明白了。我只需要比直接在源代码中输入密码更安全的东西。不需要是最佳的,但比我描述的要好。有任何想法吗?非常感谢!

标签: javascript php password-protection


【解决方案1】:

这是你可以做的。当然它不是最安全的,但这是隐藏在源代码中的一个简单逻辑:

**<?php
//All the verification stuff 
$password = "YOURPASSWORD";

function load_verify () { 
echo "<input type='password' name='txt_check' value='' style=' width: 300px; height: 30px; border-radius: 5px;' /> <br> ";
echo "<input type='submit' name='btn_check' value='Verify' style=' width: 300px;'  /> <br> <br> ";
} 

//check the password 
    if (isset($_POST['btn_check'])) {

    if ($password === $_POST['txt_check']){

         $_SESSION['is_verified'] = 1  ;

    }else {
        echo "Please Try Again <br>" ; 
        $_SESSION['is_verified'] = 0 ;
    }
    }

     $test = (isset($_SESSION['is_verified']))? 1:0 ; 

    //if password fails we reload the verify form if not we load the form and hide the verify 
    if ( $test === 1 && $_SESSION['is_verified'] === 1 ) {          
         load_form(); 

         $_SESSION['is_verified'] = 1  ;

    } else {    

            load_verify(); 
    } 
?>

【讨论】:

  • 谢谢。我已将代码粘贴到我的页面中,但我看到的只是添加到页面顶部的表单,我仍然看到其余部分。如果我点击提交按钮,也没有任何反应。
  • 您必须在函数 load_form() 中完成所有加载表单的工作。这就是您加载网页的其余部分的地方。
猜你喜欢
  • 1970-01-01
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
  • 2018-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多