我正在尝试为使用的CMS密码保护页面(couchcms)。从“ contracts.php”页面生成的所有页面均具有唯一的ID和URL。
我想做的是,如果您访问这些页面之一,并且当您输入的内容与您访问的URL的合同ID不匹配时,将在页面加载时弹出一个提示窗口。将不允许用户访问该页面。
如果ID匹配,则可以查看访问过的页面。
例如:
合同#334455具有以下URL: example.com/contract/25348764329871098723498
如果我单击该链接,除了空白页面,我什么都看不到,并且会看到一个提示窗口。我必须在字段中输入334455才能解锁页面。如果ID不正确(与当前网址不匹配),则会在页面阻止区域显示一条消息。
我尝试了类似的方法,但是这样做不够安全,因为您可以在源代码中看到它,并且它重定向到同一页面,因此它会创建一个循环并始终要求输入密码。我需要它来解锁页面,而无需重定向:
<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
这些变量每页都会更改。
有没有更安全,可以像我描述的那样工作的解决方案? 非常感谢
答案 0 :(得分:0)
这是您可以做的事情。当然,这不是最安全的方法,但这只是源代码中隐藏的一小段逻辑:
**<?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();
}
?>