项目说明:通过web端点击按钮,采集端相机拍照采集照片。显现在网页上。 有用户限制。必须是我的网站成员才可以打开。代码有体现 (然而现在我已经把他宕掉了) 具体的使用方法请访问我的博客:http://sumenpuyuan.com/2015/11/11/%E5%AE%9E%E9%AA%8C%E5%AE%A4%E7%89%A9%E8%81%94%E7%BD%91%E4%B8%8A%E5%B1%82%E5%BC%80%E5%8F%91%E6%97%A5%E5%BF%97/
github地址:https://github.com/sumenpuyuan/lab
一:配置
查看php.ini中配置是否打开安全模式,主要是以下三个地方safe_mode = (这个如果为off下面两个就不用管了)
disable_functions =
safe_mode_exec_dir=
ps1:博主按照上面的步骤配置,后来执行时还有问题。
我们再次查看php.ini文件,到disable_functions = scandir,passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_r
estore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen
这些都是被禁用的函数,我们接下来会用到passthru函数,所以把passthru删掉,然后保存,重启服务
ps2:后来又出问题了,因为一开始在centos上web端执行shell是没有问题的,可是到了ubuntu却执行不了,但是fswebcam软件在ubuntu上才有,于是最后通过一个灵活的途径执行了一条采集图像命令,而没有通过shell。
二:代码
到了愉快的代码环节,
首先我们把shell脚本写了,我简单写了个脚本。各位自己随便写一个吧。
然后及时php代码了。
这是centos
|
passthru('/usr/local/bin/ftp.sh',$returnvalue); if ($returnvalue != 0){ //we have a problem! echo "wrong"; //add error code here }else{ //we are okay echo "ok"; //redirect to some other page } ?> </font>
ubuntu上的
|
|
$a='sudo fswebcam -d/dev/video0 -r 320x240 /home/wwwroot/default/lot/1.jpg '; system($a); //是这么执行的</font>
http://v.youku.com/v_show/id_XMTM4MjQ0MzU2MA==.html
就是必须登录之后才能访问到labpuyuan.nat123.net这个页面,登录和nat123不在一个服务器上无法通过session来判断,所以使用了http报头$_SERVER['HTTP_REFERER'])全局变量,通过判断是通过哪个页面跳到的nat123页面来进行限制。 代码如下。
<font size="4"><html> <head> <meta charset="utf-8"> </head> <body> <?php if(isset($_SERVER['HTTP_REFERER'])) { if(strpos($_SERVER['HTTP_REFERER'],"http://lab.52nongda.com/DynamicModules/RegisterAndLogin/")==0) { echo "欢迎实验室同学访问"; } else { header("location:error.html"); exit(); } } else { header("location:error.html"); } ?> <img src="lot/1.jpg"> <a href="screen.php">refresh catch img</a> <?php session_start(); if(isset($_SESSION['key'])){ // session_start(); $key=$_SESSION['key']; if($key==1) { echo "hhha"; echo "<script language=javascript>location.reload(true);</script>"; unset($_SESSION['key']); } } ?> </body> </htm
更新2015/11/12:出现重大失误,上面的权限问题有很大的漏洞,他只能限制refrerer不存在的时候,根本不能限制refrerer变量的内容,原因我们把限制语句拿出来
if(strpos($_SERVER['HTTP_REFERER'],"http://lab.52nongda.com/DynamicModules/RegisterAndLogin/")==0)
我想实现的是必须从"http://lab.52nongda.com/DynamicModules/RegisterAndLogin那里跳转才能打开,用的strops函数,那样结果为0,才能跳转,可是如果在referer变量里如果根本没有"http://lab.52nongda.com/DynamicModules/RegisterAndLogin这个字符串,那么函数返回一个bool类型的false,在php中布尔值 FALSE 自身 与整型值 0 (零)是相等的, 悲催了,所以稍微把限制语句改了一下。
|
|
if(strpos($_SERVER['HTTP_REFERER'],'lab.52nongda.com/DynamicModules/RegisterAndLogin')==7)
正好最近实现了lab.52nongda.com的普通用户登录功能,(昨天把所有用户都删了,恒创主机今天有点问题,所以等恒创好了再说)。