gpt4 book ai didi

javascript - yii2 在访问网页之前创建密码

转载 作者:行者123 更新时间:2023-11-28 05:19:23 25 4
gpt4 key购买 nike

我需要一个模式弹出窗口来询问密码。我执行了以下操作,但它总是将我重定向到登录页面。而且 session 似乎根本没有创建。

main.php(布局)

<div class="modal fade" id="mymodal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title"><span class="glyphicon glyphicon-lock"></span>PASSCODE</h4>
</div>
<form role="form" id="myform" action="site/passcode">
<div class="modal-body">
<div class="form-group">
<!--<label for="psw"><span class="glyphicon glyphicon-eye-open"></span> Enter Passcode</label>-->
<input type="text" class="form-control" id="passcode" placeholder="Enter Passcode">
</div>
</div>
<div class="modal-footer">
<button id="passcodeBtn" class="btn btn-success btn-block" onClick="btn_click()">Submit</button>
</div>
</form>
</div>

</div>

<?php
if(!isset($_SESSION))
{
session_start();
}
//$_SESSION["user"] = "permit";
if(!isset($_SESSION["user"])) {
echo "<script type='text/javascript'>
$('#passcodeModal').modal({
backdrop: 'static',
keyboard: false
})
$(document).ready(function(){
$('#passcodeModal').modal('show');
});
</script>";
}
?>
<script>

function validatePasscode_click()
{
var pc = document.getElementById('passcode').value
//document.getElementById("passcodeform").submit();
//
console.log("inside click");
$.ajax({
type: "POST",
url: '/site/passcode',
data: {name: pc, _csrf: yii.getCsrfToken()},
//dataType: "json",
success: function(response){
console.log("ajax");
var resp = response;
var answer = jQuery.parseJSON(response);
console.log(answer);
if(answer == '123'){
$('#passcodeModal').modal('hide');
}
}});
return false;
}
</script>

我已验证

Controller

public function actionPasscode() {
// a list of available cities
if(Yii::$app->request->isAjax) {
$data = Yii::$app->request->post();
$passcode = $data['name'];
$_SESSION["user"] = "permit";
if($passcode == '123'){
if(!isset($_SESSION))
{
session_start();
}
$_SESSION["user"] = "permit";
}
return json_encode($passcode);
}
}

我需要使用 ajax 验证密码,然后设置 session ,这样对于每个其他页面,如果您之前输入过,他们就不会再次要求输入密码

最佳答案

您的 session 未创建,因为在 Yii2 中您创建的 session 与代码中显示的 session 不同。 Yii2使用yii\web\User用于身份验证和 session 存储的类。

基本上,您应该使用类似的东西:

Yii::$app->user->login($this->getUser(), 3600 * 24 * 30);

$this->getUser() 返回的位置:

static::findOne(['email' => $email]);

这是在基本模板的基础上进行了一些修改,这正是 Yii2 存储用户 session 的方式。你自己创建的 session 可能(而且可能确实)与 Yii2 的 session 管理冲突。

请尝试使用此方法。

关于javascript - yii2 在访问网页之前创建密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40688724/

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