邢栋博客

邢栋博客,Action博客,记录工作和生活中的点点滴滴

curl模拟登录并获取数据

$cookie_file = tempnam('./temp','cookie');
$login_url = "http://xingdong365.com/action/index.php?action=login";
$post_fields = "cktime=3600&user=*****&pw=******&action=login";

$ch = curl_init($login_url);//设置你需要抓取的URL
curl_setopt($ch, CURLOPT_HEAD,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
$data = curl_exec($ch);//运行cURL,请求网页
curl_close($ch);

$url ="http://xingdong365.com/action/sort.php";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEAD,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

$contents = curl_exec($ch);

preg_match('/<option value="1">(.*)<\/option>/',$contents,$arr);
echo $arr[1];

curl_close($ch);

 

php常用的一些预定义变量

<?php

echo $_SERVER["SERVER_ADDR"]; //当前运行脚本所在的服务器的IP地址
echo "<br>";
echo $_SERVER["SERVER_NAME"];//当前运行脚本所在的服务器主机的名称
echo "<br>";
echo $_SERVER["REMOTE_ADDR"];//当前浏览此页面用户的ip地址
echo "<br>";
echo $_SERVER["REQUEST_URI"];//访问此页面所需要的URL
echo "<br>";
echo $_SERVER["PHP_SELF"];//当前正在执行脚本的文件名
echo "<br>";
echo $_SERVER['SCRIPT_FILENAME'];//当前执行脚本的绝对路径名。
echo "<br>";
echo __FILE__;//输出本文件的路径和文件名
echo "<br>";
echo $_SERVER["DOCUMENT_ROOT"];//当前运行脚本所在的文档根目录
echo "<br>";
?>

cookie和session的介绍和区别

关于cookie

<?php

 //setcookie("name","",time()-1);  //删除cookie/name
 if(!isset($_COOKIE['name'])){
   setcookie("name",date("y-m-d H:i:s"));
   echo "欢迎第一次访问网站";
   echo "<br>";
  }else{
   setcookie("name",date("y-m-d H:i:s"),time()+3); 
   echo "你上次访问网站的时间为:".$_COOKIE["name"];
   echo "<br>";
  }
 echo "你本次访问网站的时间为:".date("y-m-d H:i:s");;
?>

关于session
<?php
 session_start();
 $_SESSION["name"]="邢栋"; 
 //unset($_SESSION["name"]); //删除session/name
 if(!empty($_SESSION["name"])){
  echo "输出session值为:".$_SESSION["name"];
 }else{
  echo "session值为空";
 }
 //$_SESSION=array(); 删除多个会话
 //session_destory(); 清除结束当前会话,销毁session
?> 

session和cookie的区别:
最大区别就是session是将session的信息保存在服务器上,并通过一个sessionID来传递客户端的信息。

服务器在接受sessionId后根据这个id来提供相关的session信息资源。cookie是将所有的信息以文本文

件的形式保存在客户端,并以浏览器进行管理和维护。
由于session为服务器存储,远程用户没办法修改session文件的内容。而cookie为客户端存储。所以

session要比cookie安全的多。

 

php从xml文件中读取新闻列表
1.php从xml文件中读取新闻列表  
<?php 
$xml = simplexml_load_file("http://xingdong365.com/rss.php?sort=1","SimpleXMLElement",LIBXML_NOCDATA);
foreach($xml->channel->item as $item ){
echo "标题:".$item->title."<br>";
echo "<hr>";
}
?>
2.实用DOM库读取新闻列表

<?php
$doc = new DOMDocument();
$doc->load("http://xingdong365.com/rss.php?sort=1");
$nodes = $doc->getElementsByTagName("item");
foreach($nodes as $node){
echo $node->getElementsByTagName("title")->item(0)->nodeValue;
echo "<hr>";

?>

php使用smtp发送邮件
<?php
	include("class.phpmailer.php"); //包含phpmailer类

	$mail = new PHPMailer(); //建立邮件发送类
	$mail->IsSMTP(); //设定使用SMTP方式寄信
	
	$mail->CharSet = "gb2312"; //邮件的编码格式
	$mail->Host = "smtp.126.com"; //SMTP服务器地址
	$mail->SMTPAuth = true; //设定SMTP需要验证
	//$mail->SMTPSecure = "ssl"; // Gmail的SMTP主机需要使用SSL连接
	$mail->Port = 25; //端口号
	$mail->Username = "xingdong1117@126.com"; //邮箱账号
	$mail->Password = "XXXXXXXX"; //邮箱密码
	 
	$mail->From = "xingdong1117@126.com"; //寄件者信箱
	$mail->FromName = "邢栋"; //寄件者姓名
	 
	$mail->Subject = "smtp邮件发送测试";  //邮件标题
	$mail->Body = "smtp发送测试的邮件内容"; //邮件内容
	
	$mail->IsHTML(true); //邮件内容
	//$mail->AddAttachment("a.php"); // 添加附件 
	$mail->AddAddress("xingdong1117@qq.com"); //收件者
	 
	 
	if(!$mail->Send()) {
		echo "发送错误: " . $mail->ErrorInfo;
	} else {
		echo "<div align=center>邮件发送成功,请注意查收!</div>";
	}
	

?>


ps:如果使用gmail或qql邮箱,需要在php.ini中开启extension=php_openssl.dll

部分公用邮箱服务器及端口号

gmail邮箱  服务器 smtp.gmail.com  端口号 587 或465

Hotmail / Live邮箱 服务器 smtp.live.com  端口号  25或587

QQ邮箱  服务器  smtp.qq.com 端口号  25或587

163邮箱  服务器 smtp.163.com 端口号 25 或587 或465

Yahoo邮箱 服务器 smtp.mail.yahoo.com 端口号 587或465

 

php创建图像和缩略图以及给图片加水印和文字

php创建图像

<?php
    // 创建图像
    $height = 300; //图像高度
    $width  = 300; //图像宽度
    $im = imagecreatetruecolor($width,$height); //创建一个真彩色的图像
    $white = imagecolorallocate($im,255,255,255);//白色
    $blue = imagecolorallocate($im,0,0,64);//蓝色
    imagefill($im,0,0,$blue); //将背景设置为蓝色
    imageline($im,0,0,$width,$height,$white);//在图上画一条白色的直线
    imagestring($im,4,80,150,"php",$white);//在图上显示白色的“php”文字
    header("cotent-type:image/png"); //输出图像的MIME类型
    imagepng($im); //输出一个png图像数据
    imagedestroy($im);//清空内存

?>    

php创建缩略图

 

<?php
    //创建缩略图
    $image = imagecreatefromjpeg("images/action.jpg");//从jpeg文件或url新建一图像
    $width = imagesx($image);//得到图像的宽度
    $height = imagesy($image);//得到图像的高度
    $th_width = $width*0.5;//设置缩略图宽度为原图的一半
    $th_height = $height*0.5;//设置缩略图高度为原图的一半
    $th = imagecreatetruecolor($th_width,$th_height);//创建一个原图一半大小的画布
    //将原图按照指定大小复制到画布上,得到缩略图
    imagecopyresampled($th,$image,0,0,0,0,$th_width,$th_height,$width,$height);
    imagejpeg($th,"images/action_th.jpg",100);//将缩略图保存到文件夹里
    imagedestroy($th);

?>

<img src="images/action.jpg" /><br />
<img src="images/action_th.jpg" />

php给图片加水印

<?php
    //给图片加水印	
    $image = imagecreatefromjpeg("images/action.jpg");//从jpeg文件新建一个图像
    $water = imagecreatefrompng("images/xing.png");//从png文件新建一个图像
    $width = imagesx($water);//得到水印的宽度
    $height = imagesy($water);//得到水印的高度
    imagecopyresampled($image,$water,0,0,0,0,$width,$height,$width,$height);
    //将水印加载到图像上
    imagejpeg($image,"images/action_water.jpg",100);//将带有水印的图像保存到文件
    imagedestroy($image);
?>

<img src="images/action.jpg" /><br />
<img src="images/action_water.jpg" />

php给图片加文字

<?php
    //给图片加文字
    $image = imagecreatefromjpeg("images/action.jpg");
    $pink = imagecolorallocate($image,255,255,255);
    $font_file = "C:\WINDOWS\Fonts\SimHei.ttf";//字体的路径,视操作系统而定
    $str = "邢栋博客!";
    $str = mb_convert_encoding($str,"utf-8","gbk");//字符转码	
    imagettftext($image,25,10,40,240,$pink,$font_file,$str);//向图像写入文本
    imagejpeg($image,"images/action_ttf.jpg",100);//将带有水印的图像保存到文件
    imagedestroy($image);
	
?>
<img src="images/action.jpg" /><br />
<img src="images/action_ttf.jpg" />


php删除目录和文件
<?php
    function full_rmdir($dirname){
	if(!is_dir($dirname)){
	    echo "指定的文件名不存在或者不是目录文件";
	    exit;
	}
	if($dirHandle = opendir($dirname)){ //打开指定的目录
	    $old_cwd = getcwd();   //取得当前工作的目录
	    chdir($dirname);	//将php的当前目录改为 $dirname
	    while($file = readdir($dirHandle)){ //循环目录下的文件
	    if($file=='.' || $file=='..')continue;//如果是当前目录或者父目录则跳过
		if(is_dir($file)){     //如果是目录
		if(!full_rmdir($file)){return false;}//递归调用自身函数删除目录 
		}else{
		    if(!unlink($file)){return false;}//如果是文件,删除文件
		}
	    }
	closedir($dirHandle);   //关闭目录
	chdir($old_cwd);        //将php的当前目录改为$old_cwd
	if(!rmdir($dirname)){return false;}	 //删除$dirname目录
	return true;  //删除成功,返回true
	}else{
			return false; //未能打开指定的目录,返回false
	}
	}
	$remove_dir = "测试目录";
	if(full_rmdir($remove_dir)){
		echo "删除成功!";
	}else{
		echo "删除失败!";
	}

?>
php实现字符串翻转(包含中文汉字)
<?php  
    //php实现字符串翻转,包含中文汉字
    //substr() 函数返回字符串的一部分。substr(string,start,length)
    //ord() 函数返回字符串第一个字符的 ASCII 值。
    //join() 函数把数组元素组合为一个字符串。
    //array_reverse() 函数将原数组中的元素顺序翻转,创建新的数组并返回。
	
function turnstr($str) { 
	$len = strlen($str);  // 计算字符串的长度 
	for($i=0;$i<$len;$i++) {  
		$char = $str[0];
		if(ord($char)>127){ 
           	$i++;  
			if($i<$len){ 			   
				$arr[] = substr($str, 0, 2); 			   
				$str = substr($str, 2); 				
			} 	   
		}else{         
			$arr[] = $char; 	   
			$str = substr($str, 1); 
       }
	} 
   return join(array_reverse($arr));  
}
$str = 'xingdong 前后端';
echo turnstr($str);
?>

以上只适用于gbk编码,如果是utf-8编码,把 
$i++; 
if($i<$len){ 
    $arr[] = substr($str, 0, 2);
    $str = substr($str, 2); 
}
替换成 
$c_len = (is_utf8)?2:1; 
$i += $c_len;
if($i < $len){ 
    $arr[] = substr($str, 0, $c_len+1); 
    $str = substr($str, $c_len+1);
}

 


优惠券
广告位-淘宝
最新微语