gpt4 book ai didi

javascript - 如何为自动登录 Cacti 多次发布 PHP 表单 onload?

转载 作者:可可西里 更新时间:2023-10-31 23:38:40 24 4
gpt4 key购买 nike

我有这样的 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>

问题是,我想在 iframe 中自动登录 cacti,问题是如果 cacti 中的 session 被破坏,或者如果我们已经从 cacti 注销脚本工作正常,它可以自动登录到站点。但是如果我们已经登录到cacti,就会出现这样的错误显示。

You are not permitted to access this section of Cacti. If you feel that you need access to this particular section, please contact the Cacti administrator.

我已经实现了 javascript window.onload 但没有成功,这是 firebug 的输出。

Firebug

谢谢。

最佳答案

感谢@Manchary Manchaary 的建议,在我最终搜索之后,我使用充当 session 的文件来解决我的问题。

这是我 Cacti 中的部分代码,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 代码来保存 session ,代码是让 php 将 “开始” 写入名为 session 的文件中。

然后这是我网站中 iframe 的新 php 代码 cacti2.php

<?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站点,但如果 session 文件包含“停止”,它将自动在表单中进行身份验证。

为了处理注销后的session 文件,我在我的 Cacti 站点中添加了代码,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 文件中写入 "stop" ,这样我的 cacti2.php 可以在用户已经注销的情况下读取文件,希望这有帮助对于另一个,谢谢。

关于javascript - 如何为自动登录 Cacti 多次发布 PHP 表单 onload?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33539334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com