php画拼图滑动验证,JS实现滑动拼图验证功能完整示例
时间: 2023-08-14 09:07:21 浏览: 124
以下是一个简单的 PHP 和 JS 实现滑动拼图验证的示例:
1. 创建拼图图片和背景图片
首先,我们需要创建两张图片:一张是包含不规则拼图形状的 PNG 图片(可以使用 Photoshop 或其他图像编辑软件创建),另一张是包含背景图案的 JPG 或 PNG 图片。这两张图片需要放在服务器上的某个目录下。
2. 编写 PHP 代码
在 PHP 文件中,我们需要生成一个随机的拼图位置,并将其保存在 session 中,以便在提交表单时进行验证。以下是一个示例代码:
```php
<?php
session_start();
// 随机生成拼图位置
$pos_x = rand(10, 90);
$pos_y = rand(10, 90);
// 保存拼图位置到 session
$_SESSION['pos_x'] = $pos_x;
$_SESSION['pos_y'] = $pos_y;
// 输出 HTML,包含拼图图片和背景图片
echo '<div id="captcha">';
echo '<img src="captcha.png" alt="captcha" id="captcha-img">';
echo '<div id="captcha-block" style="background-image:url(background.jpg);background-position:'.$pos_x.'% '.$pos_y.'%;"></div>';
echo '</div>';
?>
```
此代码将在页面上显示一个包含拼图图片和背景图片的 div 元素,其中包含一个 id 为 “captcha-img” 的 img 元素和一个 id 为 “captcha-block” 的 div 元素。拼图图片的位置是随机生成的,背景图片的位置则根据拼图位置设置。
3. 编写 JS 代码
在 JS 文件中,我们需要添加拖动事件,使用户可以移动拼图,并在提交表单时进行验证。以下是一个示例代码:
```javascript
// 获取拼图图片和拼图块元素
var captchaImg = document.getElementById('captcha-img');
var captchaBlock = document.getElementById('captcha-block');
// 设置拼图块的初始位置
captchaBlock.style.left = '0px';
// 添加拖动事件
var dragging = false;
var dragStartX, dragStartY;
var dragCurrentX, dragCurrentY;
captchaBlock.addEventListener('mousedown', function(e) {
dragging = true;
dragStartX = e.clientX;
dragStartY = e.clientY;
}, false);
document.body.addEventListener('mousemove', function(e) {
if (dragging) {
captchaBlock.style.left = (dragCurrentX + e.clientX - dragStartX) + 'px';
}
}, false);
document.body.addEventListener('mouseup', function(e) {
if (dragging) {
dragging = false;
dragCurrentX += e.clientX - dragStartX;
dragCurrentY += e.clientY - dragStartY;
// 验证拼图位置
var pos_x = <?php echo $_SESSION['pos_x']; ?>;
var pos_y = <?php echo $_SESSION['pos_y']; ?>;
if (Math.abs(dragCurrentX - pos_x * captchaImg.width / 100) < 5 && Math.abs(dragCurrentY - pos_y * captchaImg.height / 100) < 5) {
alert('验证通过!');
} else {
alert('验证失败,请重试!');
captchaBlock.style.left = '0px';
}
}
}, false);
```
此代码将添加一个 mousedown 事件监听器,用于开始拖动拼图块。当用户移动鼠标时,mousemove 事件将触发,拼图块将跟随鼠标移动。当用户释放鼠标时,mouseup 事件将触发,我们将验证拼图块的位置是否正确,并显示相应的提示消息。
4. 创建 HTML 表单
最后,我们需要创建一个包含上述 PHP 和 JS 代码的 HTML 页面,并在其中添加一个表单元素,以便用户可以提交验证结果。以下是一个示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>滑动拼图验证</title>
<style>
#captcha {
position: relative;
width: 300px;
height: 200px;
margin: 50px auto;
border: 1px solid #ccc;
}
#captcha-img {
width: 100%;
height: 100%;
}
#captcha-block {
position: absolute;
width: 100px;
height: 100px;
background-color: rgba(255, 255, 255, 0.7);
border: 1px solid #ccc;
cursor: pointer;
}
</style>
</head>
<body>
<form action="verify.php" method="post">
<?php include('captcha.php'); ?>
<input type="submit" value="提交">
</form>
<script src="captcha.js"></script>
</body>
</html>
```
此代码将在页面上显示一个包含拼图和提交按钮的表单元素。当用户提交表单时,verify.php 文件将验证拼图块的位置是否正确,并返回相应的结果。
注意:以上代码仅作为示例,实际应用中需要进行更多的安全验证和优化。
阅读全文