php CURL伪造IP和来源实现程序

 更新时间:2016年11月25日 16:22  点击:2107
伪造IP来源对于php来说是很简单的一件事情,我们只要利用了php curl即可实现伪造IP来源哦,IP地址你可以随便写哦。

实例

 代码如下 复制代码

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/2.php");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:8.8.8.8', 'CLIENT-IP:8.8.8.8'));//IP
curl_setopt($ch, CURLOPT_REFERER, "http://www.111cn.net/ ");   //来路
curl_setopt($ch, CURLOPT_HEADER, 1);
$out = curl_exec($ch);
curl_close($ch);

2.php代码:

 代码如下 复制代码

function getClientIp() {
    if (!empty($_SERVER["HTTP_CLIENT_IP"]))
        $ip = $_SERVER["HTTP_CLIENT_IP"];
    else if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
        $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    else if (!empty($_SERVER["REMOTE_ADDR"]))
        $ip = $_SERVER["REMOTE_ADDR"];
    else
        $ip = "err";
    return $ip;
}
echo "IP: " . getClientIp() . "";
echo "referer: " . $_SERVER["HTTP_REFERER"];

用1.php 请求 2.php,输出结果:

IP:8.8.8.8  referer:http://www.111cn.net

伪造成功,这是不是给采集的朋友提供了很好的换IP的方案!!当然防被刷的朋友也要注意了

PHP中的CURL函数库(Client URL Library Function)

curl_close — 关闭一个curl会话
curl_copy_handle — 拷贝一个curl连接资源的所有内容和参数
curl_errno — 返回一个包含当前会话错误信息的数字编号
curl_error — 返回一个包含当前会话错误信息的字符串
curl_exec — 执行一个curl会话
curl_getinfo — 获取一个curl连接资源句柄的信息
curl_init — 初始化一个curl会话
curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄资源
curl_multi_close — 关闭一个批处理句柄资源
curl_multi_exec — 解析一个curl批处理句柄
curl_multi_getcontent — 返回获取的输出的文本流
curl_multi_info_read — 获取当前解析的curl的相关传输信息
curl_multi_init — 初始化一个curl批处理句柄资源
curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源
curl_multi_select — Get all the sockets associated with the cURL extension, which can then be "selected"
curl_setopt_array — 以数组的形式为一个curl设置会话参数
curl_setopt — 为一个curl设置会话参数
curl_version — 获取curl相关的版本信息

curl_init()函数的作用初始化一个curl会话,curl_init()函数唯一的一个参数是可选的,表示一个url地址。
curl_exec()函数的作用是执行一个curl会话,唯一的参数是curl_init()函数返回的句柄。
curl_close()函数的作用是关闭一个curl会话,唯一的参数是curl_init()函数返回的句柄。

一个不错的PHP mysql操作类 ,分享给大家学习使用。
 代码如下 复制代码

<?php
//数据库处理类
class db
{
    //SQL执行后的数据保存变量;
    var $db;
    //读取或设置当前数据的位置
    var $position=0;
    //执行SQL语句并把结果保存为db变量中;

    function sub_sql($str)
    {
        global $prefix;//全局函数,表前缀
        return str_replace("#@__",$prefix,$str);
    }
    function Sql($str)
    {
        $str=$this->sub_sql($str);
        $result = mysql_query($str);
        $i=0;
        while($row = mysql_fetch_array($result))
        {
            $str_array[$i]=$row;
            $i++;
        }
        if(empty($str_array))
        {
            $str_array=array();
        }
        $this->db=$str_array;
    }
    //读取一条数据并把数据往后移一位,如果数据为空则返回为null;
    function Get_One()
    {
        $re=empty($this->db[$this->position])?null:$this->db[$this->position];
        $this->position=$re?$this->position+1:$this->position;
        return $re;
    }
    //判断是否数据读取到结尾了
    function Judge()
    {
        $re=empty($this->db[$this->position])?true:false;
        return $re;
    }
    //取得db里面的个数
    function Get_Num()
    {
        return count($this->db);
    }
    //更新数据库里面的数据,$t为表名,$v格式为数组格式,上标为字段名,下标为数据;$w为条件上标为字段名下标为数据,$p为条件0为等号,1为大于,-1为小于;
    function Set_Updata($t,$v,$w,$p=0)
    {
        $this->Sql($t);
        $v_str="";
        $w_str="";
        $f="";
        foreach($v as $key=>$vaule)
        {
            if(!is_numeric($key))
            {
                if(empty($v_str))
                {
                    $v_str=htmlspecialchars($key)."='".htmlspecialchars($vaule)."'";
                }else
                {
                    $v_str=$v_str.",".htmlspecialchars($key)."='".htmlspecialchars($vaule)."'";
                }
            }
        }
        switch($p)
        {
            case 0:
                $f="=";
                break;
            case 1:
                $f=">";
                break;
            case -1:
                $f="<";
                break;
        }
        if(!empty($f))
        {
            foreach($w as $key=>$vaule)
            {
                if(!is_numeric($key))
                {
                    if(empty($v_str))
                    {
                        $w_str=htmlspecialchars($key).$f.htmlspecialchars($vaule)."'";
                    }else
                    {
                        $w_str=$w_str.",".htmlspecialchars($key).$f.htmlspecialchars($vaule)."'";
                    }
                }
            }
        }
        $sql="UPDATE ".$t." SET ".$v_str." where ".$w_str;
        return $result = mysql_query($sql);
    }
    //删除一数据$w为条件上标为字段名下标为数据,$p为条件0为等号,1为大于,-1为小于;
    function Set_Del($t,$w,$p=0)
    {
        $this->sub_sql($t);
        $w_str="";
        $f="";
        switch($p)
        {
            case 0:
                $f="=";
                break;
            case 1:
                $f=">";
                break;
            case -1:
                $f="<";
                break;
        }
        if(!empty($f))
        {
            foreach($w as $key=>$vaule)
            {
                if(!is_numeric($key))
                {
                    if(empty($v_str))
                    {
                        $w_str=htmlspecialchars($key).$f.htmlspecialchars($vaule)."'";
                    }else
                    {
                        $w_str=$w_str.",".htmlspecialchars($key).$f.htmlspecialchars($vaule)."'";
                    }
                }
            }
        }
        $str="DELETE FROM ".$t." WHERE ".$w_str;
        return $result = mysql_query($str);
    }
    function Add($t,$v)
    {
        $this->sub_sql($t);
        $k_str="";
        $v_str="";
        foreach($v as $key=>$vaule)
        {
            if(!is_numeric($key)){
                if(empty($k_str))
                {
                    $k_str=htmlspecialchars($key);
                    $v_str="'".htmlspecialchars($vaule)."'";
                }else
                {
                    $k_str=$k_str.",".htmlspecialchars($key);
                    $v_str=$v_str.","."'".htmlspecialchars($vaule)."'";
                }
            }
        }
        $str="INSERT INTO ".$t."(".$k_str.")"."value(".$v_str.")";
        return $result = mysql_query($str);
    }
}
?>

PHP 实现多服务器共享 SESSION 数据有需要学习的朋友可参考参考。

代码实现

首先创建数据表,MySQL 的 SQL 语句如下:

 代码如下 复制代码

CREATE TABLE `sess` (

`sesskey` varchar(32) NOT NULL default ”,

`expiry` bigint(20) NOT NULL default ‘0′,

`data` longtext NOT NULL,

PRIMARY KEY (`sesskey`),

KEY `expiry` (`expiry`)

) TYPE=MyISAM

sesskey 为 SESSION ID,expiry 为 SESSION 过期时间,data 用于保存 SESSION 数据。

默认情况下 SESSION 数据是以文件方式保存,想要使用数据库方式保存,就必须重新定义 SESSION 各个操作的处理函数。PHP 提供了session_set_save_handle() 函数,可以用此函数自定义 SESSION 的处理过程,当然首先要先将 session.save_handler 改成 user,可在 PHP 中进行设置:

 代码如下 复制代码
<?php
session_module_name(‘user‘);
?>

接下来着重讲一下 session_set_save_handle() 函数,此函数有六个参数:

session_set_save_handler ( string open, string close, string read, string write, string destroy, string gc )

各个参数为各项操作的函数名,这些操作依次是:打开、关闭、读取、写入、销毁、垃圾回收。PHP 手册中有详细的例子,在这里我们使用 OO 的方式来实现这些操作,详细代码如下:

 代码如下 复制代码

<?php
define(‘MY_SESS_TIME‘, 3600); //SESSION 生存时长
//类定义
class My_Sess
{
function init()
{
$domain = ‘.infor96.com‘;
//不使用 GET/POST 变量方式
ini_set(‘session.use_trans_sid‘, 0);
//设置垃圾回收最大生存时间
ini_set(‘session.gc_maxlifetime‘, MY_SESS_TIME);

//使用 COOKIE 保存 SESSION ID 的方式
ini_set(‘session.use_cookies‘, 1);
ini_set(‘session.cookie_path‘, ‘/‘);
//多主机共享保存 SESSION ID 的 COOKIE
ini_set(‘session.cookie_domain‘, $domain);

//将 session.save_handler 设置为 user,而不是默认的 files
session_module_name(‘user‘);
//定义 SESSION 各项操作所对应的方法名:
session_set_save_handler(
array(‘My_Sess‘, ‘open‘), //对应于静态方法 My_Sess::open(),下同。
array(‘My_Sess‘, ‘close‘),
array(‘My_Sess‘, ‘read‘),
array(‘My_Sess‘, ‘write‘),
array(‘My_Sess‘, ‘destroy‘),
array(‘My_Sess‘, ‘gc‘)
);
} //end function
function open($save_path, $session_name) {
return true;
} //end function
function close() {
global $MY_SESS_CONN;

if ($MY_SESS_CONN) { //关闭数据库连接
$MY_SESS_CONN->Close();
}
return true;
} //end function
function read($sesskey) {
global $MY_SESS_CONN;

$sql = ‘SELECT data FROM sess WHERE sesskey=‘ . $MY_SESS_CONN->qstr($sesskey) . ‘ AND expiry>=‘ . time();
$rs =& $MY_SESS_CONN->Execute($sql);
if ($rs) {
if ($rs->EOF) {
return ”;
} else { //读取到对应于 SESSION ID 的 SESSION 数据
$v = $rs->fields[0];
$rs->Close();
return $v;
} //end if
} //end if
return ”;
} //end function
function write($sesskey, $data) {
global $MY_SESS_CONN;

$qkey = $MY_SESS_CONN->qstr($sesskey);
$expiry = time() + My_SESS_TIME; //设置过期时间
//写入 SESSION
$arr = array(
‘sesskey‘ => $qkey,
‘expiry‘ => $expiry,
‘data‘ => $data);
$MY_SESS_CONN->Replace(‘sess‘, $arr, ‘sesskey‘, $autoQuote = true);
return true;
} //end function
function destroy($sesskey) {
global $MY_SESS_CONN;

$sql = ‘DELETE FROM sess WHERE sesskey=‘ . $MY_SESS_CONN->qstr($sesskey);
$rs =& $MY_SESS_CONN->Execute($sql);
return true;
} //end function
function gc($maxlifetime = null) {
global $MY_SESS_CONN;

$sql = ‘DELETE FROM sess WHERE expiry< ‘ . time();
$MY_SESS_CONN->Execute($sql);
//由于经常性的对表 sess 做删除操作,容易产生碎片,
//所以在垃圾回收中对该表进行优化操作。
$sql = ‘OPTIMIZE TABLE sess‘;
$MY_SESS_CONN->Execute($sql);
return true;
} //end function
} ///:~
//使用 ADOdb 作为数据库抽象层。
require_once(‘adodb/adodb.inc.php‘);
//数据库配置项,可放入配置文件中(如:config.inc.php)。
$db_type = ‘mysql‘;
$db_host = ‘192.168.212.1‘;
$db_user = ‘sess_user‘;
$db_pass = ‘sess_pass‘;
$db_name = ‘sess_db‘;
//创建数据库连接,这是一个全局变量。
$GLOBALS['MY_SESS_CONN'] =& ADONewConnection($db_type);
$GLOBALS['MY_SESS_CONN']->Connect( $db_host, $db_user, $db_pass, $db_name);
//初始化 SESSION 设置,必须在 session_start() 之前运行!!
My_Sess::init();
?>

1.REMOTE_ADDR:浏览当前页面的用户计算机的ip地址 2.HTTP_X_FORWARDED_FOR: 浏览当前页面的用户计算机的网关 3.HTTP_CLIENT_IP:客户端的ip

在PHP 中使用 $_SERVER["REMOTE_ADDR"] 来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取。

不过要注意的事,并不是每个代理服务器都能用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的 IP。

 

还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用$_SERVER["HTTP_X_FORWARDED_FOR"] 取到的值将是空的。因此,如果要在程序中使用此方法,可以这样处理:

 代码如下 复制代码

<?php

if ($_SERVER["HTTP_X_FORWARDED_FOR"]==”")

{

$user_ip=$_SERVER["REMOTE_ADDR"];

}

else

$user_ip=$_SERVER["HTTP_X_FORWARDED_FOR"];

?>

即:如果客户端通过代理服务器,则取 HTTP_X_FORWARDED_FOR 的值,如果没通过代理服务器,就取 REMOTE_ADDR 的值。

获得客户端真实的IP地址

 代码如下 复制代码

function GetIP(){

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);

}


获取用户IP地址的三个属性的区别 (HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
一、没有使用代理服务器的情况:

REMOTE_ADDR = 您的 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示

二、使用透明代理服务器的情况:Transparent Proxies

REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。

三、使用普通匿名代理服务器的情况:Anonymous Proxies

REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。

四、使用欺骗性代理服务器的情况:Distorting Proxies

REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 随机的 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。

五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)

REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。

 代码如下 复制代码

<?php
if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])
{
$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])
{
$ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"])
{
$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
elseif (getenv("HTTP_X_FORWARDED_FOR"))
{
$ip = getenv("HTTP_X_FORWARDED_FOR");
}
elseif (getenv("HTTP_CLIENT_IP"))
{
$ip = getenv("HTTP_CLIENT_IP");
}
elseif (getenv("REMOTE_ADDR"))
{
$ip = getenv("REMOTE_ADDR");
}
else
{
$ip = "Unknown";
}
echo "你的IP:".$ip ;
?>

PHP提供了date()函数,该函数提供了丰富的日期处理功能。现在需要获得的数据有两个,第一个是当月的总天数;第二个是该月的第一天所在星期中的第几天,数字表示0(表示星期天)到6(表示星期六)。

通过date()函数可以很容易获得上面的数据

 代码如下 复制代码

<?php

$month = $_GET['m']?$_GET['m']:date(‘n’);
$year = $_GET['y']?$_GET['y']:date(‘Y’);

$start_week = date(‘w’,mktime(0,0,0,$month,1,$year));
$day_num = date(‘t’,mktime(0,0,0,$month,1,$year));
$end = false;
?>
<table>
<tr>
<td>星期日</td><td>星期一</td><td>星期二</td><td>星期三</td><td>星期四</td><td>星期五</td><td>星期六</td>
</tr>
<tr>
<?php
for($i = 0; $i<$start_week; $i++)
{
echo “<td></td>”;
}

$j=1;

while($j<=$day_num)
{
echo “<td>$j</td>”;
$week = ($start_week+$j-1)%7;

if($week ==6){
echo “nt</tr>n”;
if($j != $day_num)
echo “t<tr>ntt”;
else $end = true;
}
$j++;
}
while($week%7 != 6)
{
echo “<td></td>”;
$week++;
}
if(!$end)
echo “n</tr>”;
?>

</table>

高级一点类

 代码如下 复制代码

<?php
class Calendar
{
    private $year;
    private $month;
    private $weeks  = array('日','一','二','三','四','五','六');
   
    function __construct($options = array()) {
        $this->year = date('Y');
        $this->month = date('m');
       
        $vars = get_class_vars(get_class($this));
        foreach ($options as $key=>$value) {
            if (array_key_exists($key, $vars)) {
                $this->$key = $value;
            }
        }
    }
   
    function display()
    {
        echo '<table class="calendar">';
        $this->showChangeDate();
        $this->showWeeks();
        $this->showDays($this->year,$this->month);
        echo '</table>';
    }
   
    private function showWeeks()
    {
        echo '<tr>';
        foreach($this->weeks as $title)
        {
            echo '<th>'.$title.'</th>';
        }
        echo '</tr>';
    }
   
    private function showDays($year, $month)
    {
        $firstDay = mktime(0, 0, 0, $month, 1, $year);
        $starDay = date('w', $firstDay);
        $days = date('t', $firstDay);

        echo '<tr>';
        for ($i=0; $i<$starDay; $i++) {
            echo '<td>&nbsp;</td>';
        }
       
        for ($j=1; $j<=$days; $j++) {
            $i++;
            if ($j == date('d')) {
                echo '<td class="today">'.$j.'</td>';
            } else {
                echo '<td>'.$j.'</td>';
            }
            if ($i % 7 == 0) {
                echo '</tr><tr>';
            }
        }
       
        echo '</tr>';
    }
   
    private function showChangeDate()
    {
       
        $url = basename($_SERVER['PHP_SELF']);
       
        echo '<tr>';
 echo '<td><a href="?'.$this->preYearUrl($this->year,$this->month).'">'.'<<'.'</a></td>';
 echo '<td><a href="?'.$this->preMonthUrl($this->year,$this->month).'">'.'<'.'</a></td>';
        echo '<td colspan="3"><form>';
       
        echo '<select name="year" onchange="window.location=''.$url.'?year='+this.options[selectedIndex].value+'&month='.$this->month.''">';
        for($ye=1970; $ye<=2038; $ye++) {
            $selected = ($ye == $this->year) ? 'selected' : '';
            echo '<option '.$selected.' value="'.$ye.'">'.$ye.'</option>';
        }
        echo '</select>';
        echo '<select name="month" onchange="window.location=''.$url.'?year='.$this->year.'&month='+this.options[selectedIndex].value+''">';
       

       
        for($mo=1; $mo<=12; $mo++) {
            $selected = ($mo == $this->month) ? 'selected' : '';
            echo '<option '.$selected.' value="'.$mo.'">'.$mo.'</option>';
        }
        echo '</select>';       
        echo '</form></td>';       
 echo '<td><a href="?'.$this->nextMonthUrl($this->year,$this->month).'">'.'>'.'</a></td>';
 echo '<td><a href="?'.$this->nextYearUrl($this->year,$this->month).'">'.'>>'.'</a></td>';       
        echo '</tr>';
    }
   
    private function preYearUrl($year,$month)
    {
        $year = ($this->year <= 1970) ? 1970 : $year - 1 ;
       
        return 'year='.$year.'&month='.$month;
    }
   
    private function nextYearUrl($year,$month)
    {
        $year = ($year >= 2038)? 2038 : $year + 1;
       
        return 'year='.$year.'&month='.$month;
    }
   
    private function preMonthUrl($year,$month)
    {
        if ($month == 1) {
            $month = 12;
            $year = ($year <= 1970) ? 1970 : $year - 1 ;
        } else {
            $month--;
        }       
       
        return 'year='.$year.'&month='.$month;
    }
   
    private function nextMonthUrl($year,$month)
    {
        if ($month == 12) {
            $month = 1;
            $year = ($year >= 2038) ? 2038 : $year + 1;
        }else{
            $month++;
        }
        return 'year='.$year.'&month='.$month;
    }
   
}

调用方法

 代码如下 复制代码

<?php
$params = array();
if (isset($_GET['year']) && isset($_GET['month'])) {
    $params = array(
        'year' => $_GET['year'],
        'month' => $_GET['month'],
    );
}
$params['url']  = 'demo.php';
require_once 'calendar.class.php';
?>

<html>
    <head>
        <title>日历demo</title>
        <meta http-equiv="Content-Type" content="text/html" charset="UTF-8" />
        <style type="text/css">
            table.calendar {
                border: 1px solid #050;
            }
            .calendar th, .calendar td {
                width:30px;
                text-align:center;
            }           
            .calendar th {
                background-color:#050;
                color:#fff;
            }
            .today{
  color:#fff;
  background-color:#050;               
            }
        </style>
    </head>
    <body>
        <div style="align:center">
            <?php
                $cal = new Calendar($params);
                $cal->display();
            ?>   
        </div>
    </body>
</html>

[!--infotagslink--]

相关文章

  • C#开发Windows窗体应用程序的简单操作步骤

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • php语言实现redis的客户端

    php语言实现redis的客户端与服务端有一些区别了因为前面介绍过服务端了这里我们来介绍客户端吧,希望文章对各位有帮助。 为了更好的了解redis协议,我们用php来实现...2016-11-25
  • C++调用C#的DLL程序实现方法

    本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
  • jQuery+jRange实现滑动选取数值范围特效

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

    本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
  • 微信小程序 页面传值详解

    这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
  • JS实现的简洁纵向滑动菜单(滑动门)效果

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

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • jQuery+slidereveal实现的面板滑动侧边展出效果

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

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

    这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
  • 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
  • 将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文

    时常会写用c#一些程序,但如何将他们和photoshop一样的大型软件打成一个压缩包,以便于发布....2020-06-25
  • 微信小程序 网络请求(GET请求)详解

    这篇文章主要介绍了微信小程序 网络请求(GET请求)详解的相关资料,需要的朋友可以参考下...2016-11-22
  • PHP实现今天是星期几的几种写法

    复制代码 代码如下: // 第一种写法 $da = date("w"); if( $da == "1" ){ echo "今天是星期一"; }else if( $da == "2" ){ echo "今天是星期二"; }else if( $da == "3" ){ echo "今天是星期三"; }else if( $da == "4"...2013-10-04
  • 微信小程序如何获取图片宽度与高度

    这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
  • 微信小程序二维码生成工具 weapp-qrcode详解

    这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
  • 微信小程序自定义tabbar组件

    这篇文章主要为大家详细介绍了微信小程序自定义tabbar组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-14
  • Python爬取微信小程序通用方法代码实例详解

    这篇文章主要介绍了Python爬取微信小程序通用方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-29