Как несколько раз опубликовать PHP форму загрузки для аутологичных кактусов?

У меня есть HTML и JavaScript-код, как это.

<form action="http://MYCACTI/cacti/logout.php" name="logout_cacti" method="post"></form> 
<form action="http://MYCACTI/cacti/" name="auth_cacti" method="post">
<input type="hidden" name="action" value="login">
<input type="hidden" name="realm" value="local">
<input type="hidden" name="login_username" value="guest">
<input type="hidden" name="login_password" value="guest">
</form> 
<script>
window.onload = PageLoad;
function PageLoad(){
    Logout();
    Login();
}
function Logout(){
    setTimeout(document.forms['logout_cacti'].submit(), 4000);
} 
function Login(){
    setTimeout(document.forms['auth_cacti'].submit(), 4000);
}
</script>

Вопрос заключается в том, что я хочу сделать autologin cacti в iframe, и проблема в том, что если сеанс в cacti разрушен или если мы уже вышли из cacti, скрипт работает нормально, он может перейти на сайт автоматически. Но если мы уже вошли в систему cacti, появляется сообщение об ошибке, подобное этому.

Вам не разрешен доступ к этому разделу Кактусов. Если вы считаете, что вам нужен доступ к этому конкретному разделу, обратитесь к администратору Cacti.

Я реализовал JavaScript window.onload но ничего удачного, это выход из firebug.

поджигатель

Спасибо.

1 ответ

Решение

Спасибо @Manchary Manchaary за совет, после того, как я наконец-то ищу, я использую файл, который служит сеансом для решения моей проблемы.

Вот код части в моих кактусах, auth_login.php

/* Process the user  */
        if (sizeof($user) > 0) {
                cacti_log("LOGIN: User '" . $user["username"] . "' Authenticated", false, "AUTH");
                db_execute("INSERT INTO user_log (username,user_id,result,ip,time) VALUES (" . $cnn_id->qstr($username) . "," . $user["id"] . ",1,'"$
                /* is user enabled */
                $user_enabled = $user["enabled"];
                if ($user_enabled != "on") {
                        /* Display error */
                        auth_display_custom_error_message("Access Denied, user account disabled.");
                        exit;
                }

                /* set the php session */
                $_SESSION["sess_user_id"] = $user["id"];
                $sharesession = fopen("/var/www/html/session/session", "w") or die("Unable to open file!");             
                fwrite($sharesession, "start");
                fclose($sharesession);

Я добавил PHP-код, чтобы сохранить сеанс, если пользователь уже авторизован, код сделан php, напишите "start" в файл с именем session,

И тогда вот мой новый код PHP cacti2.php для iframe на моем сайте.

<?php 
$sharesession = fopen("/var/www/html/session/session", "r") or die("Unable to open file!");
$session = fread($sharesession,filesize("/var/www/html/session/session"));
fclose($sharesession);

if ($session == "start"){
        header("Location: http://MYCACTI/cacti/graph_view.php?action=tree&tree_id=1&leaf_id=8&select_first=true");
} 
else {
?>
        <form action="http://MYCACTI/cacti/" name="auth_cacti" method="post">
        <input type="hidden" name="action" value="login">
        <input type="hidden" name="realm" value="local">
        <input type="hidden" name="login_username" value="soc">
        <input type="hidden" name="login_password" value="telkom">
        </form> 
        <script>
        window.onload = PageLoad;
        function PageLoad(){
                Login();
        }
        function Login(){
                setTimeout(document.forms['auth_cacti'].submit(), 4000);
        }
</script>
<?php
}
?>

во-первых, php будет читать файл с именем session, если session Файл содержит "start", затем он автоматически переходит на сайт cacti graph, но если файл сеанса содержит "stop", он автоматически отправляет сообщение с проверкой подлинности в форме.

Обрабатывать, session файл после выхода из системы, я добавил код на моем сайте кактусов, logout.php

include("./include/auth.php");

api_plugin_hook('logout_pre_session_destroy');

/* Clear session */
setcookie(session_name(),"",time() - 3600,"/");
session_destroy();
$sharesession = fopen("/var/www/html/session/session", "w") or die("Unable to open file!");             
                fwrite($sharesession, "stop");                  
                fclose($sharesession);

написать "стоп" в session файл, так что мой cacti2.php Можно прочитать файл, если пользователь уже вышел из системы, надеюсь, эта помощь для других, спасибо.

Другие вопросы по тегам