我正处于jQuery jouerny的开头,我仍然很难理解一些基本主题,因此我决定使用几行PHP编写一个简单的脚本来尝试一些事情。我有一个主页:
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
<title> TEST </title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
</head>
<body>
<a href = "http://www.abv.bg/" class="isLogged">abv.bg</a>
<br />
<hr />
<a href = "http://www.yahoo.com/" class="isLogged">Yahoo!</a>
<br />
<hr />
<a href = "http://www.southparkstudios.com/" class="isLogged">South Park</a>
<br />
<hr />
<a href = "http://www.youtube.com/" class="isLogged">Youtube</a>
<br />
<hr />
<a href = "http://www.vbox7.com/" class="isLogged">Vbox</a>
<br />
<hr />
<a href = "http://www.sa.dir.bg/" class="isLogged">Dir.BG</a>
<br />
<div class="isLogged"> hi<div>
<script type="text/javascript">
$(document).ready(function(){
var Status = <?php echo $_SESSION['isLogged'] ?>
$('.isLogged').click(function(){
if(Status!=true){
var Check = prompt('Enter Password', '');
$.post('check.php', {Check:Check}, function(data) { var result = data;
alert(result); exit;
});
}
});
});
</script>
</body>
</html>
重要部分在标签中。如你所见,我想做一个非常简单的检查,如果用户输入了密码,并让他打开与class =“isLogged”的链接,如果他是。我很难理解的是如何管理我的php端脚本,这就是我现在所拥有的:
<?php session_start();
$data = $_POST['Check'];
$yes = "[{data}]";
$no = 'N';
if ($data != 'Ivan')
{
echo json_encode($yes);
}
else
{
$_SESSION['isLogged'] = true;
}
?>
但是我不知道如何在PHP端格式化我的数据,所以我可以在脚本中进行适当的检查。但是我已达到至少echo json_encode($yes);
那么远,所以我用它来进行检查,但是,我仍然无法找到如何防止链接加载。
所以它提出了很多问题,但希望得到正确答案并不难。
感谢
Leron
答案 0 :(得分:1)
你可以这样做。我认为这是您尝试做的事情:在允许用户进入点击的链接之前检查密码是否正确。
<script type="text/javascript">
$(document).ready(function(){
var Status = <?php echo (bool)$_SESSION['isLogged']; ?>
$('.isLogged').click(function(){
if(!Status)
{
var Check = prompt('Enter Password', '');
var Success = false;
$.post('check.php', {Check:Check}, function(data) {
var response = $.parseJSON(data);
if(response.result)
{
Success = true;
}
});
/*
If you return false in a .click() it stops the link being visited. The browser won't follow the href.
So here, if the password was wrong, Success will be false and thus the link won't be visited
*/
return Success;
}
});
});
</script>
PHP方面:
<?php
session_start();
$out = array('result' => false);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$password = 'Ivan';
$input = $_POST['Check'];
if(strcmp($input, $password) === 0) // case sensitive string comparison, 0 = strings are same
{
$_SESSION['isLogged'] = true;
$out['result'] = true;
}
}
echo json_encode($out);
?>
免责声明:我感谢这是一个学习练习而不是实际系统,这显然不是保护内容的安全方式,因为我们无法阻止用户浏览链接,或者禁用javascript