这个是php,搞错了,不好意思

解决方案 »

  1.   

    老话题了。
    用php实现的话,事先预备一个模板图片,
    每次访问php的时候,php都读取模板图片,把IP地址等输入到上面。
    返回的时候php设定恰当的返回头信息。
      

  2.   

    这个很简单的,点击时,客户端发送了HTTP头标,正好POST数据就是在头标中发送的,所以就可以获取得到了
      

  3.   

    可我post的数据是发给http://tieba.baidu.com/f 这个URL的,为什么图片的URL也能收到呢
      

  4.   

    lz看看官方手册吧
    http://jp.php.net/manual/en/function.imagegif.php
      

  5.   

    这个有什么奇怪的吗?图片都是可以在服务器端生成的呀。那个图片的地址已经告诉了你:www.flashswf.com.cn/ws/tp.aspx。图片上加字是很简单的功能。根据你输入的东西进行图片替换也不麻烦啊。
      

  6.   

    晕啊,你们看清楚啊,我不是不明白图片怎么加字,是我回复给百度贴吧的数据这个图片 URL 为什么能得到 ??
      

  7.   

    http://tieba.baidu.com/f?kz=509664804你们来这里回复看看就明白楼主的意思了   我测试了 回复 超人和蜘蛛侠 都会显示相关的图片  
      

  8.   

    http://topic.csdn.net/u/20081204/12/e85a7172-acbe-453a-8f8e-b3f56d8f86ba.html?seed=97641226
    找到原因了,有兴趣的来这看看吧
      

  9.   

    这个问题的确没楼上几位说的那么简单,问题的关键不在于怎样将文字制作成图片,而是那个aspx的图片文件是如何获取用户post的数据的,按理说post的地址应该是baidu的一个文件。那个图片的文件是怎样得到用户post数据的?我用sniffer嗅探了一下,发现http的header中并没有用户post的内容
      

  10.   

    至于用户的ip,这个很好获得,只要你访问了那个图片,他就能得到你的ip。但是用户post的数据,他是如何得到的,我没想明白
      

  11.   

    代码我写出来了,不过很奇怪,baidu不让我贴后缀为php的图片...不知那哥们怎么贴的。如果想在本地看效果,将//获取相关帖子源代码
    $codes = file_get_contents($referer);的$referer替换成百度贴吧一个帖子的url地址就可以了。<?php
    /**
     * @author shadowsniper([email protected])
     * @package ImageContext.class.php
     * @var object mImages 图片相关的数据 
     * @descript 支持中文文字,但必须保证你的php环境支持iconv函数
     */ 
    class drawImg{
     var $mImages; /**
      * 设定本页面类型为图片类型
      */
     function __construct(){
      header("content-type:image/gif");
     }
     
     /**
      * 设置图片源
      *
      * @param string $filename
      * @example 'c://mypic/mypic.gif' or 'mypic.gif'
      */
     function setImage( $filename ){
      $this->mImages->filename = imagecreatefromgif( $filename );
     } /**
      * 设置写入文字的字体
      *
      * @param string $font
      * @example simhei.ttf
      */
     function setFont( $font ){
      $this->mImages->font = $font;
     } 
     /**
      * 设置写入的文字
      *
      * @param string $context
      * @example test
      */
     function setContext( $context ){
      $this->mImages->context = $context;
     }
     
     /**
      * 设置文字编码
      *
      * @param string $from_charset
      * @param string $to_charset
      */
     function setCharset( $from_charset,$to_charset ){
      $this->mImages->context = iconv( $from_charset, $to_charset , $this->mImages->context );
     } /**
      * 设置写入黑白的具体数值
      *
      * @param string $white
      * @example 255,255,255
      * @param string $black
      * @example 0,0,0
      */
     function setColor( $white,$black ){
      $this->mImages->white = imagecolorallocate( $this->mImages->filename,$white );
      $this->mImages->black = imagecolorallocate( $this->mImages->filename,$black );
     }
     
     /**
      * 根据参数类型获取mImages对象属性或对象的信息
      *
      * @param enum 参数列表:filename,font,context,all 
      * @return 一个mImages的一个属性或mImages这个对象
      */
     function getImageInfo( $type="all" ){
      if( $type != "all")
       return $this->mImages->$type;
      else
       return $this->mImages;
     } 
     /**
      * 将文字写入图片
      * 
      * @param int $size 字体大小
      * @param int $angle 起始角度
      * @param int $x 第一个字符的基本点(大概是字符的左下角)
      * @param int $y Y坐标。它设定了字体基线的位置,不是字符的最底端
      * @param enum $  值为white或black
      */
     function draw( $size,$angle,$x,$y,$color ){
      imagettftext( $this->mImages->filename,$size,$angle,$x,$y,$this->mImages->$color,$this->mImages->font,$this->mImages->context );
      imagegif( $this->mImages->filename );
     } /**
      * 释放图片源
      */
     function unsetImage(){
      imagedestroy( $this->mImages->filename );
     } /**
      * 释放本对象
      */
     function __destruct(){
      unset( $this );
     }
    }//获取用户referer
    $referer = $_SERVER['HTTP_RERERER'];//获取相关帖子源代码
    $codes = file_get_contents($referer);//获取帖子最页最大值
    preg_match_all('/<a href=\/f\?z=(\d+)&ct=(\d+)&lm=(\d)&sc=(\d)&rn=(\d+)&tn=baiduPostBrowser&word=(.+?)&pn=\d+>\[(\d+)\]/is',$codes,$matchs);$z=$matchs[1][0];
    $ct=$matchs[2][0];
    $lm=$matchs[3][0];
    $sc=$matchs[4][0];
    //获取一页显示多少帖子数
    $rn = $matchs[5][0];
    $tn='baiduPostBrowser';
    $word=urlencode($matchs[6][0]);//获取最大页数组key
    $num = count($matchs[7])/2-1;
    $maxThreadsPages = $matchs[7][$num]*$rn-$rn;unset($codes,$matchs);//组合最大页url
    $url = 'http://tieba.baidu.com/f?z='.$z.'&ct='.$ct.'&lm='.$lm.'&sc='.$sc.'&rn='.$rn.'&tn='.$tn.'&word='.$word.'&pn='.$maxThreadsPages;//获取最后一个页面的源代码
    $codes = file_get_contents($url);//获取最后一个回帖的内容
    preg_match_all('/<cc>([^<]+)/is',$codes,$matchs);
    $maxkey = count($matchs[1])-1;
    $str = $matchs[1][$maxkey];/* 将最后一楼的内容画到图片上 */
    $image = new drawImg();
    $image->setImage( './Bluehills.gif' );
    $image->setFont( 'simhei.ttf' );
    $image->setContext( $str );
    $image->setCharset('gb2312','UTF-8');
    @$image->setColor('255,255,255','0,0,0,');
    $image->draw( 20,0,0,20,'black' );
    ?>
      

  12.   

    关于
    $image->setImage( './Bluehills.gif' );
    $image->setFont( 'simhei.ttf' );在你的程序同目录放一个图片,并且放一个字体文件,去c:/windows目录下搜一个ttf文件放在程序同目录就可以。百度不让我贴后缀为php的图片,看来要url欺骗下了
      

  13.   

    只要你的php用 .jpg结尾就行了,
      

  14.   

    好了,知道怎么弄了,后面加入一个伪参数就可以骗过baidu的验证了。测试贴吧地址:http://tieba.baidu.com/f?kz=509742606重新修改了下源代码:
    <?php
    /**
     * @author shadowsniper([email protected])
     * @package ImageContext.class.php
     * @var object mImages 图片相关的数据 
     * @descript 支持中文文字,但必须保证你的php环境支持iconv函数
     */ 
    class drawImg{
     var $mImages; /**
      * 设定本页面类型为图片类型
      */
     function __construct(){
      header("content-type:image/gif");
     }
     
     /**
      * 设置图片源
      *
      * @param string $filename
      * @example 'c://mypic/mypic.gif' or 'mypic.gif'
      */
     function setImage( $filename ){
      $this->mImages->filename = imagecreatefromgif( $filename );
     } /**
      * 设置写入文字的字体
      *
      * @param string $font
      * @example simhei.ttf
      */
     function setFont( $font ){
      $this->mImages->font = $font;
     } 
     /**
      * 设置写入的文字
      *
      * @param string $context
      * @example test
      */
     function setContext( $context ){
      $this->mImages->context = $context;
     }
     
     /**
      * 设置文字编码
      *
      * @param string $from_charset
      * @param string $to_charset
      */
     function setCharset( $from_charset,$to_charset ){
      $this->mImages->context = iconv( $from_charset, $to_charset , $this->mImages->context );
     } /**
      * 设置写入黑白的具体数值
      *
      * @param string $white
      * @example 255,255,255
      * @param string $black
      * @example 0,0,0
      */
     function setColor( $white,$black ){
      $this->mImages->white = imagecolorallocate( $this->mImages->filename,$white );
      $this->mImages->black = imagecolorallocate( $this->mImages->filename,$black );
     }
     
     /**
      * 根据参数类型获取mImages对象属性或对象的信息
      *
      * @param enum 参数列表:filename,font,context,all 
      * @return 一个mImages的一个属性或mImages这个对象
      */
     function getImageInfo( $type="all" ){
      if( $type != "all")
       return $this->mImages->$type;
      else
       return $this->mImages;
     } 
     /**
      * 将文字写入图片
      * 
      * @param int $size 字体大小
      * @param int $angle 起始角度
      * @param int $x 第一个字符的基本点(大概是字符的左下角)
      * @param int $y Y坐标。它设定了字体基线的位置,不是字符的最底端
      * @param enum $  值为white或black
      */
     function draw( $size,$angle,$x,$y,$color ){
      imagettftext( $this->mImages->filename,$size,$angle,$x,$y,$this->mImages->$color,$this->mImages->font,$this->mImages->context );
      imagegif( $this->mImages->filename );
     } /**
      * 释放图片源
      */
     function unsetImage(){
      imagedestroy( $this->mImages->filename );
     } /**
      * 释放本对象
      */
     function __destruct(){
      unset( $this );
     }
    }//获取用户referer
    $referer = $_SERVER['HTTP_REFERER'];//获取相关帖子源代码
    $codes = file_get_contents($referer);//获取帖子最页最大值
    $result = preg_match_all('/<a href=\/f\?z=(\d+)&ct=(\d+)&lm=(\d)&sc=(\d)&rn=(\d+)&tn=baiduPostBrowser&word=(.+?)&pn=\d+>\[(\d+)\]/is',$codes,$matchs);//如果只有第一页
    if(!$result){
    //获取最后一个页面的源代码
    $codes = file_get_contents($referer);
    }
    //否则获取最大页
    else{
    $z=$matchs[1][0];
    $ct=$matchs[2][0];
    $lm=$matchs[3][0];
    $sc=$matchs[4][0];
    //获取一页显示多少帖子数
    $rn = $matchs[5][0];
    $tn='baiduPostBrowser';
    $word=urlencode($matchs[6][0]); //获取最大页数组key
    $num = count($matchs[7])/2-1;
    $maxThreadsPages = $matchs[7][$num]*$rn-$rn; unset($codes,$matchs); //组合最大页url
    $url = 'http://tieba.baidu.com/f?z='.$z.'&ct='.$ct.'&lm='.$lm.'&sc='.$sc.'&rn='.$rn.'&tn='.$tn.'&word='.$word.'&pn='.$maxThreadsPages; //获取最后一个页面的源代码
    $codes = file_get_contents($url);
    }//获取最后一个回帖的内容
    preg_match_all('/<cc>([^<]+)/is',$codes,$matchs);
    $maxkey = count($matchs[1])-1;
    $str = $matchs[1][$maxkey];/* 将最后一楼的内容画到图片上 */
    $image = new drawImg();
    $image->setImage( './Bluehills.gif' );
    $image->setFont( 'simhei.ttf' );
    $image->setContext( $str );
    $image->setCharset('gb2312','UTF-8');
    @$image->setColor('255,255,255','0,0,0,');
    $image->draw( 20,0,0,20,'black' );
    ?>
      

  15.   

    ShadowSniper  好强大啊,这个帖子的分给你了
      

  16.   

    ShadowSniper 思路很清晰,赞一个。http://www.chenfangyi.com/image-hack.html 这里还有其他讨论