Skip to content

sumenpuyuan/lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

项目说明:通过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

(1)首先要实现php调用shell脚本

一:配置

查看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>

  由于没有路由器,所以就用了花生壳,但是老是不稳定,所以又换了nat123,比花生壳稳定多了。 视屏演示之后补上。只看红色部分就好。 到现在,我们可以在本非访问了。
三:公网映射到内网ip    

 http://v.youku.com/v_show/id_XMTM4MjQ0MzU2MA==.html

(2)用户权限访问问题

就是必须登录之后才能访问到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的普通用户登录功能,(昨天把所有用户都删了,恒创主机今天有点问题,所以等恒创好了再说)。


About

实验室上层小试

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published