Ich brauchte ein modales Popup, um nach einem Passcode zu fragen. Ich habe das Folgende gemacht, aber es leitet mich immer zur Anmeldeseite weiter. Und es scheint, als ob die Sitzung überhaupt nicht erstellt wurde.yii2 Erstellen von Passcode vor dem Zugriff auf die Webseite
main.php (Layout)
<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>
I
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);
}
}
Ich muss das Passwort mit Ajax validieren validiert dann die Sitzung festgelegt also für den Abend Auf dieser anderen Seite werden sie nicht erneut nach dem Passcode fragen, wenn Sie vor