Защита паролем страниц с помощью подсказки и PHP - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь защитить страницы паролем от CMS, которую я использую (couchcms).Все сгенерированные страницы со страницы "Contract.php" имеют уникальный идентификатор и URL.

Я бы хотел, чтобы у вас было окно с подсказкой, которое всплывающее при загрузке страницы, если вы посещаете один изэти страницы, и если то, что вы вводите, не соответствует идентификатору контракта URL, который вы посетили, это не позволит пользователю посетить страницу.

Если идентификатор совпадает, вы можете просмотреть посещенныестр.

Например:

Контракт № 334455 имеет следующий URL: example.com/contract/25348764329871098723498

Если бы я щелкнул по этой ссылке, я бы ничего не увиделно пустая страница, и увидит окно подсказки.Я должен был бы ввести 334455 в поле, чтобы разблокировать страницу.Если не правильный идентификатор (который не совпадает с текущим 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

Эти переменные изменяются для каждой страницы.

Какие-нибудь решения, которые были бы более безопасными и работали бы как я описал?Большое спасибо

1 Ответ

0 голосов
/ 18 сентября 2018

Это то, что вы могли бы сделать.Конечно, это не самое безопасное, но это простая логика, которая скрыта от исходного кода:

**<?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(); 
    } 
?>
...