php中CutyCapt实现网页截图保存代码

 更新时间:2016年11月25日 16:21  点击:1831
网页截图这个功能大家可能用到最多的就是QQ截图,或利用asp.net来实现截图,其实我们也可以直接使用php来网页截图哦,下面我来给大家介绍php利用CutyCapt实现网页截图,有需要的朋友可参考。

CutyCapt下载地址:http://sourceforge.net/projects/cutycapt/files/cutycapt/

windows CutyCapt不需要安装,直接保存到你的电脑中即可。

然后你php代码如下写

 代码如下 复制代码

<?php
/*
网页截图功能,必须安装IE+CutyCapt
url:要截图的网页
out:图片保存路径
path:CutyCapt路径
cmd:CutyCapt执行命令
比如:http://你php路径.php?url=http://www.111cn.net
*/
$url=$_GET["url"];
$imgname=str_replace('http://','',$url);
$imgname=str_replace('https://','',$imgname);
$imgname=str_replace('.','-',$imgname);
$out = 'D:/webroot/test/'.$imgname.'.png';
$path = 'D:/webserver/CutyCapt.exe';
$cmd = "$path --url=$url --out=$out";
echo $cmd;
system($cmd);
?>

如果你是linux系统就需要简单的配置一下CutyCapt


安装网站截图软件CutyCapt
 
 
一,先安装Qt47
增加qt47的下载源

 代码如下 复制代码
vi /etc/yum.repos.d/atrpms.repo
[atrpms]
name=CentOS $releasever – $basearch – ATrpms
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
gpgcheck=1
enabled=1
     
[atrpms-testing]
name=CentOS $releasever – $basearch – ATrpms testing
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/testing
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
gpgcheck=1
enabled=1
     
yum update
yum installqt47
yum installqt47-devel
yum installqt47-webkit
yum installqt47-webkit-devel

也许这里还会有报错提示
warning: qt44-x11-4.4.3-10_4.el5.x86_64.rpm: Header V4 DSA signature: NOKEY, key ID 66534c2b
error: Failed dependencies:
        libGLU.so.1()(64bit) is needed by qt44-x11-4.4.3-10_4.el5.x86_64
        libmng.so.1()(64bit) is needed by qt44-x11-4.4.3-10_4.el5.x86_64
解决:
yum -y installqt-devel*
 
二,安装 CutyCapt

 代码如下 复制代码
cd /data0/software
svn co https://cutycapt.svn.sourceforge.net/svnroot/cutycapt
mv cutycapt/CutyCapt /usr/local/cutycapt
cd /usr/local/cutycapt
qmake
make

此处可能会报错
make: *** [CutyCapt] Error 1
解决:
yum update sqlite
再次执行 make
 
如果还不成功 qmake-qt47 再次执行make
 
三,下载x-server

 代码如下 复制代码
 
wget http://www.flexthinker.com/wp-content/uploads/2009/11/xvfb-run.sh.txt
mv ./xvfb-run.sh.txt/usr/local/cutycapt/xvfb-run.sh
chmodu+x /usr/local/CutyCapt/xvfb-run.sh

 
 
四,安装中文包
yum installfonts-chinese
 
 
五,安装ImageMagick
yum installImageMagick
 
六,测试:
 

 代码如下 复制代码
/usr/local/cutycapt/xvfb-run.sh --server-args="-screen 0, 1024x768x24"/usr/local/cutycapt/CutyCapt --url=http://www.111cn.net--out=/tmp/163.jpg

 
163.jpg没有加载出flash
 
七,下载64位flash插件:

 代码如下 复制代码
cd /data0/software
#wget http://119.188.72.26/1/ishare.down.sina.com.cn/14036482.so?ssig=YB70Xk7Ph9&Expires=1340899200&KID=sina,ishare&ip=1340777795,114.255.44.&fn=libflashplayer.so
<a href="http://ishare.iask.sina.com.cn/f/13659493.html" target="_blank">http://ishare.iask.sina.com.cn/f/13659493.html</a>
ll /usr/lib64/mozilla/plugins/
lrwxrwxrwx 1 root root 41 06-27 14:00 libflashplayer.so ->/usr/lib64/flash-plugin/libflashplayer.so
cp /data0/software/libflashplayer.so /usr/lib64/flash-plugin/

 
测试加载成功

本文章来给大家介绍淘宝客API组件升级调整方法介绍,最近淘宝客API接口升级为淘宝组件调用的接口, 略微看一下开发手,发现淘宝给淘宝组件的定义很简单,下面我来给大家介绍。

通俗的讲就是JSSDK的整合和使用。
JSSDK的官方解释:
淘宝JSSDK是基于javascript的SDK,网站通过引入一个JS文件就可以实现:
通过JSSDK提供的方法,安全、便捷的利用javascript访问Taobao API。
通过JSSDK提供的组件方法,快速、简单的集成淘宝电商组件。
对安全性较高的服务开放的唯一入口,例如:关联推荐中用户行为的关联推荐,收藏夹接口等。
合作网站无需强大的后端服务系统,通过前端获取数据并直接展示,可获取到“小投入支撑大量用户”的效果。
为合作网站提供多维度的用户数据分析服务。
php页面的JSSDK的整合
使用诸如 WordPress 这种PHP程序的网站主这次还是很有福利的,
因为官方的文档中便是用php文档整合JSSDK来举例的。
1.在页面中加载jssdk文件
其中appkey=xxxxxxx后面的xxxxx就是你的appkey

 代码如下 复制代码

<script src="http://l.tbcdn.cn/apps/top/x/sdk.js?appkey=xxxxxxx"></script>

2.生成签名,存入cookie中

 代码如下 复制代码

<?php
$app_key = 'xxxxxxx';/*填写appkey */
$secret='';/*填入Appsecret'*/
$timestamp=time()."000";
//签名所需的字符串拼接
$message = $secret.'app_key'.$app_key.'timestamp'.$timestamp.$secret;
//获得签名
$mysign=strtoupper(hash_hmac("md5",$message,$secret));
//存入时间戳
setcookie("timestamp",$timestamp);
//存入签名
setcookie("sign",$mysign);
?>

淘宝客接口调用

这里给一个最简单的,官方调用接口的示例

 代码如下 复制代码

TOP.api('rest', 'get',{
   method:'taobao.taobaoke.widget.items.convert',
    track_iids:'19237740785_track_11116',
   fields:'num_iid,click_url,commission_rate'
 },function(resp){
   if(resp.error_response){
     alert('taobao.taobaoke.widget.items.convert接口获取商信息品失败!'+resp.error_response.msg);
      return false;
     }
     var respItem=resp.taobaoke_items.taobaoke_item;
     for(var i=0;i<respItem.length;i++){
      //$("#r"+respItem[i].num_iid).html("佣金:"+Number(respItem[i].commission_rate)/100+"%");
      //$("#a"+respItem[i].num_iid).attr("href",respItem[i].click_url);
      }
 })

本文章来给大家总结了一些常用的关于在php定时执行任务实现方法详解,包括直接利用php来操作,还有使用操作系统的计划任务来操作,有需要了解的同学可参考。

每个PHP脚本都限制了执行时间,所以我们需要通过 set_time_limit 来设置一个脚本的执行时间为无限长;然后使用 flush() 和 ob_flush() 来清除服务器缓冲区,随时输出脚本的返回值。 当我们执行后,每隔5秒钟,我们会得到一行 Hello World

 代码如下 复制代码

header("Content-Type: text/plain");
set_time_limit(0);

$infoString = "Hello World" . "n";
while( isset($infoString) )
{
echo $infoString;
flush();
ob_flush();
sleep(5);
}

 代码如下 复制代码

<?php
ignore_user_abort();           // 即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.
set_time_limit(0);             // 执行时间为无限制,php默认的执行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去
$interval=20;               // 时间间隔 单位 秒
$key_file="key.txt";          // 配置文件
if (isset($_GET['s']))
{
  if ($_GET['s']=="0"){        // 停止工作,但不退出
    $s="false";
    echo "Function is off";
  }
  elseif ($_GET['s']=="1"){      // 工作
    $s="true";
    echo "Function is on";
  }
  elseif ($_GET['s']=="2"){      // 退出
    $s="die";
    echo "Function exited";
  }
  else
    die("Err 0:stop working 1:working 2:exit");
  $string = "<?phpn return "".$s."";n?>";
  write_inc($key_file,$string,true);
  exit();
}
if(file_exists($key_file)){
  do{
    $mkey = include $key_file;
    if ($mkey=="true"){          // 如果工作
    /////////////////////  工作区间  //////////////////////////////////
      $showtime=date("Y-m-d H:i:s");
      $fp = fopen('func.txt','a');
      fwrite($fp,$showtime."n");
      fclose($fp);
    ///////////////////////////////////////////////////////////////////
    }
    elseif ($mkey=="die"){        // 如果退出
      die("I am dying!");
    }
    sleep($interval);           // 等待$interval分钟
  }while(true);
}
else
  die($key_file." doesn't exist !");
function write_inc($path,$strings,$type=false)
{  
  $path=dirname(__FILE__)."/".$path;
  if ($type==false)
    file_put_contents($path,$strings,FILE_APPEND);
  else
    file_put_contents($path,$strings);
}
?>

个人觉得在php定时执行任务还是有点复杂并且不好使用,下面我来介绍在操作系统中计划任务来实现。

在网上找了些WINDOWS执行PHP的计划任务的方法,有一个写得很全,可惜在我这竟然没通过。最后不得不综合各门派的方法,才能在我这运行成功。

1、写一个PHP程序,命名为test.php,内容如下所示:

 代码如下 复制代码

 <?

 $fp = fopen("test.txt", "a+");

 fwrite($fp, date("Y-m-d H:i:s") . " 成功成功了!n");

fclose($fp);

 ?>

程序大胆地写,什么includerequire尽管用,都没问题
2、新建Bat文件,命名为test.bat,内容如下所示:

 代码如下 复制代码

 D:phpphp.exe -q D:websitetest.php

//相应目录自己改上

3、建立WINDOWS计划任务:
开始–>控制面板–>任务计划–>添加任务计划
浏览文件夹选择上面的bat文件
设置时间和密码(登陆WINDOWS的)
保存即可了。
4、over! 可以右键计划任务点“运行”试试


linux系统中


我们可以借助Linux的Crontab工具来稳定可靠地触发PHP执行任务。
下面介绍Crontab的两种方法。

一、在Crontab中使用PHP执行脚本
就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本。
每一小时执行myscript.php如下:

1.

 代码如下 复制代码
# crontab -e
2.00 * * * * /usr/local/bin/php /home/john/myscript.php
/usr/local/bin/php

为PHP程序的路径。

二、在Crontab中使用URL执行脚本
如果你的PHP脚本可以通过URL触发,你可以使用lynx或curl或wget来配置你的Crontab。
下面的例子是使用Lynx文本浏览器访问URL来每小时执行PHP脚本。Lynx文本浏览器默认使用对话方式打开URL。但是,像下面的,我们在lynx命令行中使用-dump选项来把URL的输出转换来标准输出。

 代码如下 复制代码
1.00 * * * * lynx -dump /myscript.php

下面的例子是使用CURL访问URL来每5分执行PHP脚本。Curl默认在标准输出显示输出。使用"curl -o"选项,你也可以把脚本的输出转储到临时文件。

 代码如下 复制代码
1.*/5 * * * * /usr/bin/curl -o temp.txt /myscript.php

下面的例子是使用WGET访问URL来每10分执行PHP脚本。-q选项表示安静模式。"-O temp.txt"表示输出会发送到临时文件。

 代码如下 复制代码

1.*/10 * * * * /usr/bin/wget -q -O temp.txt /myscript.php

swfupload是一个flash插件它可以结合php来快速实现图片文件无刷新上传,同时还可以批量上传图片,下面我来给大家介绍PHP swfupload图片文件上传实例代码有需要了解的中参考。

效果图

index.php文件

 代码如下 复制代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>SWFUpload Demos - SWFObject Demo</title>
<link href="../css/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../swfupload/swfupload.js"></script>
<script type="text/javascript" src="js/swfupload.swfobject.js"></script>
<script type="text/javascript" src="js/swfupload.queue.js"></script>
<script type="text/javascript" src="js/fileprogress.js"></script>
<script type="text/javascript" src="js/handlers.js"></script>
<script type="text/javascript">
var swfu;

SWFUpload.onload = function () {
 var settings = {
  flash_url : "../swfupload/swfupload.swf",
  upload_url: "upload.php",
  post_params: {
   "PHPSESSID" : "NONE",
   "HELLO-WORLD" : "Here I Am",
   ".what" : "OKAY"
  },
  file_size_limit : "100 MB",
  file_types : "*.jpg;*.gif;*.png;*.jpeg;",
  file_types_description : "All Files",
  file_upload_limit : 100,
  file_queue_limit : 0,
  custom_settings : {
   progressTarget : "fsUploadProgress",
   cancelButtonId : "btnCancel"
  },
  debug: false,

  // Button Settings
  button_image_url : "XPButtonUploadText_61x22.png",
  button_placeholder_id : "spanButtonPlaceholder",
  button_width: 61,
  button_height: 22,

  // The event handler functions are defined in handlers.js
  swfupload_loaded_handler : swfUploadLoaded,
  file_queued_handler : fileQueued,
  file_queue_error_handler : fileQueueError,
  file_dialog_complete_handler : fileDialogComplete,
  upload_start_handler : uploadStart,
  upload_progress_handler : uploadProgress,
  upload_error_handler : uploadError,
  upload_success_handler : uploadSuccess,
  upload_complete_handler : uploadComplete,
  queue_complete_handler : queueComplete, // Queue plugin event
  
  // SWFObject settings
  minimum_flash_version : "9.0.28",
  swfupload_pre_load_handler : swfUploadPreLoad,
  swfupload_load_failed_handler : swfUploadLoadFailed
 };

 swfu = new SWFUpload(settings);
}

</script>
</head>
<body>
<div id="header">
 <h1 id="logo"><a href="../">SWFUpload</a></h1>
 <div id="version">v2.2.0</div>
</div>

<div id="content">

 <h2>SWFObject Demo</h2>
 <form id="form1" action="index.php" method="post" enctype="multipart/form-data">
  <p> This page demonstrates the SWFObject plugin.  Do each of the following (one at a time) to see the plugin work: </p>
   <ul>
    <li>Uninstall your Flash Player or install a version less than 9.0.28</li>
    <li>Cause the SWF file to fail to load by deleting or renaming swfupload.swf (simulating a very slow or failed download)</li>
    <li>Disable JavaScript</li>
   </ul>
  <p>
   Each of these tests demontrate how these issues can be handled by SWFUpload and the SWFObject libraries.
  </p>
  <div id="divSWFUploadUI">
   <div class="fieldset  flash" id="fsUploadProgress">
   <span class="legend">Upload Queue</span>
   </div>
   <p id="divStatus">0 Files Uploaded</p>
   <p>
    <span id="spanButtonPlaceholder"></span>
    <input id="btnCancel" type="button" value="Cancel All Uploads" disabled="disabled" style="margin-left: 2px; height: 22px; font-size: 8pt;" />
    <br />
   </p>
  </div>
  <noscript>
   <div style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px;">
    We're sorry.  SWFUpload could not load.  You must have JavaScript enabled to enjoy SWFUpload.
   </div>
  </noscript>
  <div id="divLoadingContent" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">
   SWFUpload is loading. Please wait a moment...
  </div>
  <div id="divLongLoading" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">
   SWFUpload is taking a long time to load or the load has failed.  Please make sure that the Flash Plugin is enabled and that a working version of the Adobe Flash Player is installed.
  </div>
  <div id="divAlternateContent" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">
   
  </div>
 </form>
</div>
</body>
</html>


核心处理程序php代码

 代码如下 复制代码

if (isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) {
    $upload_file = $_FILES['Filedata'];
    $file_info   = pathinfo($upload_file['name']);
    $file_type   = $file_info['extension'];
    $save        = 'image/' . md5(uniqid($_FILES["Filedata"]['name'])) . '.' . $file_info['extension'];
    $name        = $_FILES['Filedata']['tmp_name'];
 
    if (!move_uploaded_file($name, $save)) {
        exit;
    }
 
    //将数组的输出存起来以供查看
    $fileName = 'test.txt';
    $postData = var_export($file_info, true);
    $file     = fopen('' . $fileName, "w");
    fwrite($file,$postData);
    fclose($file);
}


swfUpload注意事项


swfuplaod在上传时,会新开一个进程,和原来的进程不一致,要解决这个问题,需要指定session_id,然后在登录页面判断,如果有post过来的session_id,那么就用函数session_id( $_POST['PHP_SESSIONID'])指定一下。

上传页的JS里面,可以获取当前的SESSION_ID的。

例如上传页的JS中:

 代码如下 复制代码

post_params: {"PHPSESSID": "<?php echo session_id(); ?>"},

在验证的判断页中:

 代码如下 复制代码

        if (isset($_POST["PHPSESSID"])) {
            session_id($_POST["PHPSESSID"]);
        }

(这一段是网上的注释:在带有Session验证的网站后台中SWFUpload无法正常工作,这是因为SWFUpload在上传时相当于重新开辟了一个新的Session 进程,因此无法与原有程序的Session保持一致,这就需要在上传时传递原有程序的SessionID,根据它来“找回”其应有的Session。)

完整实例下载地址:http://file.111cn.net/download/2013/05/14/swfupload.zip

本文章来给大家介绍一个jQuery+Ajax+PHP实现“喜欢”评级功能代码,用户点击页面中自己喜欢的图片上的红心按钮时,前端页面向后台发送一个ajax请求,后台PHP程序接收请求后,查询IP库中是否已经有该用户的点击记录,如果没有,则将对应的数值+1,同时将该用户IP信息写入IP库,反之则告诉用户已经“喜欢过了”。


数据库设计

先准备两张表,pic表保存的是图片信息,包括图片对应的名称、路径以及图片“喜欢”总数,pic_ip则记录用户点击喜欢后的IP数据。

CREATE TABLE IF NOT EXISTS `pic` ( 
  `id` int(11) NOT NULL AUTO_INCREMENT, 
  `pic_name` varchar(60) NOT NULL, 
  `pic_url` varchar(60) NOT NULL, 
  `love` int(11) NOT NULL DEFAULT '0', 
  PRIMARY KEY (`id`) 
) ENGINE=MyISAM  DEFAULT CHARSET=utf8; 
 
CREATE TABLE IF NOT EXISTS `pic_ip` ( 
  `id` int(11) NOT NULL AUTO_INCREMENT, 
  `pic_id` int(11) NOT NULL, 
  `ip` varchar(40) NOT NULL, 
  PRIMARY KEY (`id`) 
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 

 

index.php

在index.php中,我们通过PHP读取pic表中的图片信息并展示出来,结合CSS,提升页面展示效果。

 代码如下 复制代码

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="keywords" content="jquery">
<meta name="description" content="">
<title>jQuery+Ajax+PHP实现"喜欢"评级</title>
<link rel="stylesheet" type="text/css" href="../css/main.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$("p a").click(function(){
var love = $(this);
var id = love.attr("rel");
love.fadeOut(300);
$.ajax({
type:"POST",
url:"love.php",
data:"id="+id,
cache:false,
success:function(data){
love.html(data);
love.fadeIn(300);
}
});
return false;
});
});
</script>
<style type="text/css">
.clear{clear:both}
.list{width:760px; margin:20px auto}
.list li{float:left; width:360px; height:280px; margin:10px; position:relative}
.list li p{position:absolute; top:0; left:0; width:360px; height:24px; line-height:24px; background:#000; opacity:.8;filter:alpha(opacity=80);}
.list li p a{padding-left:30px; height:24px; background:url(images/heart.png) no-repeat 4px -1px;color:#fff; font-weight:bold; font-size:14px}
.list li p a:hover{background-position:4px -25px;text-decoration:none}
</style>
</head>

<body>

<div id="main">

<ul class="list">
<?php
include_once("connect.php");
$sql = mysql_query("select * from pic");
while($row=mysql_fetch_array($sql)){
$pic_id = $row['id'];
$pic_name = $row['pic_name'];
$pic_url = $row['pic_url'];
$love = $row['love'];
?>
<li><img src="images/<?php echo $pic_url;?>" alt="<?php echo $pic_name;?>"><p><a href="#" title="我喜欢" class="img_on" rel="<?php echo $pic_id;?>"><?php echo $love;?></a></p></li>
<?php }?>
</ul>

</div>

</body>
</html>

CSS中,我们将定义鼠标滑向和离开红心按钮的动态效果,并定位按钮的位置。

 代码如下 复制代码

.list{width:760px; margin:20px auto} 
.list li{float:left; width:360px; height:280px; margin:10px; position:relative} 
.list li p{position:absolute; top:0; left:0; width:360px; height:24px; line-height:24px;  
background:#000; opacity:.8;filter:alpha(opacity=80);} 
.list li p a{padding-left:30px; height:24px; background:url(images/heart.png) no-repeat  
4px -1px;color:#fff; font-weight:bold; font-size:14px} 
.list li p a:hover{background-position:4px -25px;text-decoration:none} 

jQuery代码

当用户点击自己喜欢的图片上的红心按钮时,向后台love.php发送ajax请求,请求响应成功后,更新原有的数值。

 代码如下 复制代码

$(function(){ 
    $("p a").click(function(){ 
        var love = $(this); 
        var id = love.attr("rel"); //对应id 
        love.fadeOut(300); //渐隐效果 
        $.ajax({ 
            type:"POST", 
            url:"love.php", 
            data:"id="+id, 
            cache:false, //不缓存此页面 
            success:function(data){ 
                love.html(data); 
                love.fadeIn(300); //渐显效果 
            } 
        }); 
        return false; 
    }); 
}); 

love.php

后台love.php接收前端的ajax请求,根据提交的图片id值,查找IP表中是否已有该用户ip的点击记录,如果有则告诉用户已“喜欢过了”,反之,则进行一下操作:

1、更新图片表中对应的图片love字段值,将数值加1。

2、将该用户IP信息写入到pic_ip表中,用以防止用户重复点击。

3、获取更新后的love值,即喜欢该图片的用户总数,并将该总数输出给前端页面。

 代码如下 复制代码

<?php
$host="localhost";
$db_user="root";
$db_pass="";
$db_name="demo";
$timezone="Asia/Shanghai";

$link=mysql_connect($host,$db_user,$db_pass);
mysql_select_db($db_name,$link);
mysql_query("SET names UTF8");
?>

 

 

<?php
include_once("connect.php");

$ip = get_client_ip();
$id = $_POST['id'];
if(!isset($id) || empty($id)) exit;

$ip_sql=mysql_query("select ip from pic_ip where pic_id='$id' and ip='$ip'");
$count=mysql_num_rows($ip_sql);
if($count==0){
$sql = "update pic set love=love+1 where id='$id'";
mysql_query( $sql);
$sql_in = "insert into pic_ip (pic_id,ip) values ('$id','$ip')";
mysql_query( $sql_in);
$result = mysql_query("select love from pic where id='$id'");
$row = mysql_fetch_array($result);
$love = $row['love'];
echo $love;
}else{
echo "喜欢过了..";
}

//获取用户真实IP
function get_client_ip() {
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else
if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else
if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else
if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return ($ip);
}
?>


代码中get_client_ip()函数是用来获取用户的真实IP

[!--infotagslink--]

相关文章

  • php语言实现redis的客户端

    php语言实现redis的客户端与服务端有一些区别了因为前面介绍过服务端了这里我们来介绍客户端吧,希望文章对各位有帮助。 为了更好的了解redis协议,我们用php来实现...2016-11-25
  • jQuery+jRange实现滑动选取数值范围特效

    有时我们在页面上需要选择数值范围,如购物时选取价格区间,购买主机时自主选取CPU,内存大小配置等,使用直观的滑块条直接选取想要的数值大小即可,无需手动输入数值,操作简单又方便。HTML首先载入jQuery库文件以及jRange相关...2015-03-15
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现的简洁纵向滑动菜单(滑动门)效果

    本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • jQuery+slidereveal实现的面板滑动侧边展出效果

    我们借助一款jQuery插件:slidereveal.js,可以使用它控制面板左右侧滑出与隐藏等效果,项目地址:https://github.com/nnattawat/slideReveal。如何使用首先在页面中加载jquery库文件和slidereveal.js插件。复制代码 代码如...2015-03-15
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • PHP+jQuery翻板抽奖功能实现

    翻板抽奖的实现流程:前端页面提供6个方块,用数字1-6依次表示6个不同的方块,当抽奖者点击6个方块中的某一块时,方块翻转到背面,显示抽奖中奖信息。看似简单的一个操作过程,却包含着WEB技术的很多知识面,所以本文的读者应该熟...2015-10-21
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • SQLMAP结合Meterpreter实现注入渗透返回shell

    sqlmap 是一个自动SQL 射入工具。它是可胜任执行一个广泛的数据库管理系统后端指印, 检索遥远的DBMS 数据库等,下面我们来看一个学习例子。 自己搭建一个PHP+MYSQ...2016-11-25
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • php根据用户语言跳转相应网页

    当来访者浏览器语言是中文就进入中文版面,国外的用户默认浏览器不是中文的就跳转英文页面。 <&#63;php $lan = substr(&#8194;$HTTP_ACCEPT_LANGUAGE,0,5); if ($lan == "zh-cn") print("<meta http-equiv='refresh' c...2015-11-08