新程php培训–就业率100%的php培训中心 全国免费咨询热线 400-668-8834 了解更多,请访问 http://www.phppx.com
2010/01/26学员就业

评论关闭

李震毕业感言


学员姓名:李震就业情况:

就业于水晶石数字科技有限公司 (http://www.crystalcg.com/cn/

李震毕业感言

    转眼之间,我的三个月的培训已经结束了.时间虽然短暂,也许与高中或者大学无法相比,可这三个月朋友之间的喜怒哀乐与缴老师不厌其烦的讲解.这些回忆才是 最宝贵和美好的. 记得我们刚刚来到新程培训的时候是那样的稚嫩,关于培训的项目我们可以说是”零”基础,虽然是大学刚刚毕业,可四年的大学生活中,又能真正学到些什 么………
     在来到新程PHP培训之前,已经大学毕业半年多了,我在大学学的专业是计算机网络技术,在大学毕业后自然而然也就围着关于网络的工作找,面对着一次次的招 聘会,面对着一次次的尴尬与摇头,自己才发现,大学所学的东西怎么那么没有用呢,怎么就找不到一个工作呢,一个关于网络的工作这么难找吗???
     之后,跟父母研究以后,决定找个培训班,在充充电,就这样找到了新程PHP培训,与缴老师结识了.
     我选择的是LAMP全能就业班,在这三个月的学习中,真的就一个感觉,每天都在飞快的成长,每天都在飞快的进步.
     在缴老师的教学中,我感觉到了什么叫做责任心,由于我们来的时候对于PHP都是零基础,所以感觉比较笨,但是无论我们怎么笨,怎么不会,怎么听不懂,缴老 师都是始终如一的去讲解每一个问题,每一个知识点一直讲到我们点头说会为止,在签订合同的时候,上课时间只有一上午,可是实际上课的时间基本都是一整天, 一整天的上,缴老师从来没有在收取别的费用了.
      三个月的时间过去了,缴老师也按照合同给我们找到了工作,可没想到的是给我们找到了一家这么有实力,这么大的公司—水晶石数字科技有限公司.这是一家跨国公司,在中国 北京,天津上海等都有公司,在英国伦敦也有分公司,还是2012年奥运会合作伙伴…
     缴老师的培训班没得说,一个字”棒”,两个字”责任”,
     最后祝愿新程PHP培训班越办越好,哈哈其实不用祝愿也会办的越来越好的,因为有着一个这么负责任的老师在指导着我们前进,临了给新程写了一首小诗…..

      新程诗
新山青,程山青
两岸青山相对迎
总关同窗离别情
祝愿新程往前行

一个操作xml的PHP类(附使用方法)

<?php
/**
* @copyright 互联网
* 整理:[url]www.phppx.com[/url]
* @desc 一个操作xml的PHP类
*/

/*
   (c) 2000 Hans Anderson Corporation.  All Rights Reserved.
   You are free to use and modify this class under the same
   guidelines found in the PHP License.

   ———–

   bugs/me:
   [url]http://www.hansanderson.com/php/[/url]
   [email]me@hansanderson.com[/email]
   [email]showstv@163.com[/email]

   ———–

   Version 1.0

      – 1.0 is the first actual release of the class.  It”s 
       finally what I was hoping it would be, though there
       are likely to still be some bugs in it.  This is
       a much changed version, and if you have downloaded
       a previous version, this WON”T work with your existing
       scripts!  You”ll need to make some SIMPLE changes.

      – .92 fixed bug that didn”t include tag attributes

       (to use attributes, add _attributes[array_index]
        to the end of the tag in question:
        $xml_html_head_body_img would become
        $xml_html_head_body_img_attributes[0], 
        for example)

        — Thanks to Nick Winfield <[email]nick@wirestation.co.uk[/email]>
          for reporting this bug.

      – .91 No Longer requires PHP4!

      – .91 now all elements are array.  Using objects has
       been discontinued.
*/

class xml_container{

   function store($k,$v) {
      $this->{$k}[] = $v;
   }
}
/* parses the information */
/*********************************
*   类定义开始
*
*********************************/
class xml{
  
   // initialize some variables
   var $current_tag=array();
   var $xml_parser;
   var $Version = 1.0;
   var $tagtracker = array();

   /* Here are the XML functions needed by expat */
   /* when expat hits an opening tag, it fires up this function */
   function startElement($parser, $name, $attrs){

      array_push($this->current_tag, $name); // add tag to the cur. tag array
      $curtag = implode(“_”,$this->current_tag); // piece together tag

      /* this tracks what array index we are on for this tag */

      if(isset($this->tagtracker["$curtag"])) {
        $this->tagtracker["$curtag"]++;
      }
      else{
        $this->tagtracker["$curtag"]=0;
      }

      /* if there are attributes for this tag, we set them here. */

      if(count($attrs)>0) {
        $j = $this->tagtracker["$curtag"];
        if(!$j) $j = 0;

        if(!is_object($GLOBALS[$this->identifier]["$curtag"][$j])) {
           $GLOBALS[$this->identifier]["$curtag"][$j] = new xml_container;
        }

        $GLOBALS[$this->identifier]["$curtag"][$j]->store(“attributes”,$attrs);
      }
  
   }// end function startElement

   /* when expat hits a closing tag, it fires up this function */
   function endElement($parser, $name) {
      $curtag = implode(“_”,$this->current_tag); // piece together tag
     
      // before we pop it off,
      // so we can get the correct
      // cdata

      if(!$this->tagdata["$curtag"]) {
        $popped = array_pop($this->current_tag); // or else we screw up where we are
        return; // if we have no data for the tag
      }
      else{
        $TD = $this->tagdata["$curtag"];
        unset($this->tagdata["$curtag"]);
      }

      $popped = array_pop($this->current_tag);
      // we want the tag name for
      // the tag above this, it 
      // allows us to group the
      // tags together in a more
      // intuitive way.

      if(sizeof($this->current_tag) == 0) return; // if we aren”t in a tag

      $curtag = implode(“_”,$this->current_tag); // piece together tag
      // this time for the arrays

      $j = $this->tagtracker["$curtag"];
     
      if(!$j) $j = 0;

      if(!is_object($GLOBALS[$this->identifier]["$curtag"][$j])) {
        $GLOBALS[$this->identifier]["$curtag"][$j] = new xml_container;
      }

      $GLOBALS[$this->identifier]["$curtag"][$j]->store($name,$TD);
      #$this->tagdata["$curtag"]);
      unset($TD);
      return TRUE;
   } // end function endElement
   /* when expat finds some internal tag character data,
     it fires up this function */

   function characterData($parser, $cdata) {
      $curtag = implode(“_”,$this->current_tag); // piece together tag
      $this->tagdata["$curtag"] .= $cdata;
   }
   function xml($data,$identifier=”xml”) { 

      $this->identifier = $identifier;

      // create parser object
      $this->xml_parser = xml_parser_create();

      // set up some options and handlers
      xml_set_object($this->xml_parser,$this);
      xml_parser_set_option($this->xml_parser,XML_OPTION_CASE_FOLDING,0);
      xml_set_element_handler($this->xml_parser, “startElement”, “endElement”);
      xml_set_character_data_handler($this->xml_parser, “characterData”);

      if (!xml_parse($this->xml_parser, $data, TRUE)) {
        sprintf(“XML error: %s at line %d”,
        xml_error_string(xml_get_error_code($this->xml_parser)),
        xml_get_current_line_number($this->xml_parser));
      }

      // we are done with the parser, so let”s free it
      xml_parser_free($this->xml_parser);

   }//end constructor: function xml()
}//thus, we end our class xml

?>

使用方法:

<?php
require(“class.xml.php”);
$file = “data.xml”;
$data = implode(“”,file($file)) or die(“could not open XML input file”);
$obj = new xml($data,”xml”);
print $xml["hans"][0]->num_results[0];
for($i=0;$i<sizeof($xml["hans"]);$i++) {
        print $xml["hans"][$i]->tag[0] . ” “;
}

//To print url attributes (if they exist):

print $xml["hans"][0]->attributes[0]["size"];

?>

PHP邮件发送类(附使用方法)

email.class.php  代码:

<?
/**
* 来源:互联网
* 整理:www.phppx.com
*/
class smtp
{
        /* Public Variables */
        var $smtp_port;
        var $time_out;
        var $host_name;
        var $log_file;
        var $relay_host;
        var $debug;
        var $auth;
        var $user;
        var $pass;

        /* Private Variables */
        var $sock;

        /* Constractor */
        function smtp($relay_host = “”, $smtp_port = 25,$auth = false,$user,$pass)
        {
                $this->debug = FALSE;
                $this->smtp_port = $smtp_port;
                $this->relay_host = $relay_host;
                $this->time_out = 30; //is used in fsockopen()
                #
                $this->auth = $auth;//auth
                $this->user = $user;
                $this->pass = $pass;
                #
                $this->host_name = “localhost”; //is used in HELO command
                $this->log_file =”";

                $this->sock = FALSE;
        }

        /* Main Function */
        function sendmail($to, $from, $subject = “”, $body = “”, $mailtype, $cc = “”, $bcc = “”, $additional_headers = “”)
        {
                $mail_from = $this->get_address($this->strip_comment($from));
                $body = ereg_replace(“(^|(\r\n))(\\.)”, “\\1.\\3“, $body);
                $header .= “MIME-Version:1.0\r\n”;
                if($mailtype==”HTML”){
                        $header .= “Content-Type:text/html\r\n”;
                }
                $header .= “To: “.$to.”\r\n”;
                if ($cc != “”) {
                        $header .= “Cc: “.$cc.”\r\n”;
                }
                $header .= “From: $from<”.$from.”>\r\n”;
                $header .= “Subject: “.$subject.”\r\n”;
                $header .= $additional_headers;
                $header .= “Date: “.date(“r”).”\r\n”;
                $header .= “X-Mailer:By Redhat (PHP/”.phpversion().”)\r\n”;
                list($msec, $sec) = explode(” “, microtime());
                $header .= “Message-ID: <”.date(“YmdHis”, $sec).”.”.($msec*1000000).”.”.$mail_from.”>\r\n”;
                $TO = explode(“,”, $this->strip_comment($to));

                if ($cc != “”) {
                        $TO = array_merge($TO, explode(“,”, $this->strip_comment($cc)));
                }

                if ($bcc != “”) {
                        $TO = array_merge($TO, explode(“,”, $this->strip_comment($bcc)));
                }

                $sent = TRUE;
                foreach ($TO as $rcpt_to) {
                        $rcpt_to = $this->get_address($rcpt_to);
                        if (!$this->smtp_sockopen($rcpt_to)) {
                                $this->log_write(“Error: Cannot send email to “.$rcpt_to.”\n”);
                                $sent = FALSE;
                                continue;
                        }
                        if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) {
                                $this->log_write(“E-mail has been sent to <”.$rcpt_to.”>\n”);
                        } else {
                                $this->log_write(“Error: Cannot send email to <”.$rcpt_to.”>\n”);
                                $sent = FALSE;
                        }
                        fclose($this->sock);
                        $this->log_write(“Disconnected from remote host\n”);
                }
                echo “<br>”;
                echo $header;
                return $sent;
        }

        /* Private Functions */

        function smtp_send($helo, $from, $to, $header, $body = “”)
        {
                if (!$this->smtp_putcmd(“HELO”, $helo)) {
                        return $this->smtp_error(“sending HELO command”);
                }
                #auth
                if($this->auth){
                        if (!$this->smtp_putcmd(“AUTH LOGIN”, base64_encode($this->user))) {
                                return $this->smtp_error(“sending HELO command”);
                        }

                        if (!$this->smtp_putcmd(“”, base64_encode($this->pass))) {
                                return $this->smtp_error(“sending HELO command”);
                        }
                }
                #
                if (!$this->smtp_putcmd(“MAIL”, “FROM:<”.$from.”>”)) {
                        return $this->smtp_error(“sending MAIL FROM command”);
                }

                if (!$this->smtp_putcmd(“RCPT”, “TO:<”.$to.”>”)) {
                        return $this->smtp_error(“sending RCPT TO command”);
                }

                if (!$this->smtp_putcmd(“DATA”)) {
                        return $this->smtp_error(“sending DATA command”);
                }

                if (!$this->smtp_message($header, $body)) {
                        return $this->smtp_error(“sending message”);
                }

                if (!$this->smtp_eom()) {
                        return $this->smtp_error(“sending <CR><LF>.<CR><LF> [EOM]“);
                }

                if (!$this->smtp_putcmd(“QUIT”)) {
                        return $this->smtp_error(“sending QUIT command”);
                }

                return TRUE;
        }

        function smtp_sockopen($address)
        {
                if ($this->relay_host == “”) {
                        return $this->smtp_sockopen_mx($address);
                } else {
                        return $this->smtp_sockopen_relay();
                }
        }

        function smtp_sockopen_relay()
        {
                $this->log_write(“Trying to “.$this->relay_host.”:”.$this->smtp_port.”\n”);
                $this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out);
                if (!($this->sock && $this->smtp_ok())) {
                        $this->log_write(“Error: Cannot connenct to relay host “.$this->relay_host.”\n”);
                        $this->log_write(“Error: “.$errstr.” (“.$errno.”)\n”);
                        return FALSE;
                }
                $this->log_write(“Connected to relay host “.$this->relay_host.”\n”);
                return TRUE;;
        }

        function smtp_sockopen_mx($address)
        {
                $domain = ereg_replace(“^.+@([^@]+)$“, “\\1“, $address);
                if (!@getmxrr($domain, $MXHOSTS)) {
                        $this->log_write(“Error: Cannot resolve MX \”".$domain.”\”\n”);
                        return FALSE;
                }
                foreach ($MXHOSTS as $host) {
                        $this->log_write(“Trying to “.$host.”:”.$this->smtp_port.”\n”);
                        $this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out);
                        if (!($this->sock && $this->smtp_ok())) {
                                $this->log_write(“Warning: Cannot connect to mx host “.$host.”\n”);
                                $this->log_write(“Error: “.$errstr.” (“.$errno.”)\n”);
                                continue;
                        }
                        $this->log_write(“Connected to mx host “.$host.”\n”);
                        return TRUE;
                }
                $this->log_write(“Error: Cannot connect to any mx hosts (“.implode(“, “, $MXHOSTS).”)\n”);
                return FALSE;
        }

        function smtp_message($header, $body)
        {
                fputs($this->sock, $header.”\r\n”.$body);
                $this->smtp_debug(“> “.str_replace(“\r\n”, “\n”.”> “, $header.”\n> “.$body.”\n> “));

                return TRUE;
        }

        function smtp_eom()
        {
                fputs($this->sock, “\r\n.\r\n”);
                $this->smtp_debug(“. [EOM]\n”);

                return $this->smtp_ok();
        }

        function smtp_ok()
        {
                $response = str_replace(“\r\n”, “”, fgets($this->sock, 512));
                $this->smtp_debug($response.”\n”);

                if (!ereg(“^[23]“, $response)) {
                        fputs($this->sock, “QUIT\r\n”);
                        fgets($this->sock, 512);
                        $this->log_write(“Error: Remote host returned \”".$response.”\”\n”);
                        return FALSE;
                }
                return TRUE;
        }

        function smtp_putcmd($cmd, $arg = “”)
        {
                if ($arg != “”) {
                        if($cmd==”") $cmd = $arg;
                        else $cmd = $cmd.” “.$arg;
                }

                fputs($this->sock, $cmd.”\r\n”);
                $this->smtp_debug(“> “.$cmd.”\n”);

                return $this->smtp_ok();
        }

        function smtp_error($string)
        {
                $this->log_write(“Error: Error occurred while “.$string.”.\n”);
                return FALSE;
        }

        function log_write($message)
        {
                $this->smtp_debug($message);

                if ($this->log_file == “”) {
                        return TRUE;
                }

                $message = date(“M d H:i:s “).get_current_user().”[".getmypid()."]: “.$message;
                if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, “a”))) {
                        $this->smtp_debug(“Warning: Cannot open log file \”".$this->log_file.”\”\n”);
                        return FALSE;
                }
                flock($fp, LOCK_EX);
                fputs($fp, $message);
                fclose($fp);

                return TRUE;
        }

        function strip_comment($address)
        {
                $comment = “\\([^()]*\\)”;
                while (ereg($comment, $address)) {
                        $address = ereg_replace($comment, “”, $address);
                }

                return $address;
        }

        function get_address($address)
        {
                $address = ereg_replace(“([ \t\r\n])+”, “”, $address);
                $address = ereg_replace(“^.*<(.+)>.*$”, “\\1“, $address);

                return $address;
        }

        function smtp_debug($message)
        {
                if ($this->debug) {
                        echo $message.”<br>”;
                }
        }

        function get_attach_type($image_tag) { //

                $filedata = array();

                $img_file_con=fopen($image_tag,”r”);
                unset($image_data);
                while ($tem_buffer=AddSlashes(fread($img_file_con,filesize($image_tag))))
                $image_data.=$tem_buffer;
                fclose($img_file_con);

                $filedata['context'] = $image_data;
                $filedata['filename']= basename($image_tag);
                $extension=substr($image_tag,strrpos($image_tag,”.”),strlen($image_tag)-strrpos($image_tag,”.”));
                switch($extension){
                        case “.gif”:
                                $filedata['type'] = “image/gif”;
                                break;
                        case “.gz”:
                                $filedata['type'] = “application/x-gzip”;
                                break;
                        case “.htm”:
                                $filedata['type'] = “text/html”;
                                break;
                        case “.html”:
                                $filedata['type'] = “text/html”;
                                break;
                        case “.jpg”:
                                $filedata['type'] = “image/jpeg”;
                                break;
                        case “.tar”:
                                $filedata['type'] = “application/x-tar”;
                                break;
                        case “.txt”:
                                $filedata['type'] = “text/plain”;
                                break;
                        case “.zip”:
                                $filedata['type'] = “application/zip”;
                                break;
                        default:
                                $filedata['type'] = “application/octet-stream”;
                                break;
                }
                return $filedata;
        }

}
?>

继续阅读 »

图像处理类(图像信息,缩略图,加水印),有详细的注释

<?php
/**
* 来源:互联网
* 整理:www.phppx.com
*/
class image
{
 var $w_pct = 50; //透明度
 var $w_quality = 80; //质量
 var $w_minwidth = 300; //最小宽
 var $w_minheight = 300; //最小高
 var $thumb_enable; //是否生成缩略图
 var $watermark_enable; //是否生水印
 var $interlace = 0;  //图像是否为隔行扫描的
 var $fontfile;  //字体文件
 var $w_img ; //默认水印图

    function __construct()
    {
  global $SITE_CONFING;
  $this->thumb_enable = $SITE_CONFING['thumb_enable'];
  $this->watermark_enable = $SITE_CONFING['watermark_enable'];
  $this->set($SITE_CONFING['watermark_minwidth'], $SITE_CONFING['watermark_minheight'], $SITE_CONFING['watermark_quality'], $SITE_CONFING['watermark_pct'], $SITE_CONFING['watermark_fontfile'],$SITE_CONFING['watermark_img']);
    }

 function image()
 {
  $this->__construct();
 }

 function set($w_minwidth = 300, $w_minheight = 300, $w_quality = 80, $w_pct = 100,$fontfile,$w_img)
 {
  $this->w_minwidth = $w_minwidth;
  $this->w_minheight = $w_minheight;
  $this->w_quality = $w_quality;
  $this->w_pct = $w_pct;
  $this->fontfile = $fontfile;
  $this->w_img = $w_img;
 }

    function info($img)
 {
        $imageinfo = getimagesize($img); //返回图像信息数组 0=>宽的像素 1=>高的像素 2=>是图像类型的标记 3 =>是文本字符串,内容为“height=”yyy” width=”xxx””,
        if($imageinfo === false) return false;
  $imagetype = strtolower(substr(image_type_to_extension($imageinfo[2]),1)); //获取图像文件类型 $imageinfo[2]是图像类型的标记
  $imagesize = filesize($img); //图像大小
  $info = array(
    ’width’=>$imageinfo[0],
    ’height’=>$imageinfo[1],
    ’type’=>$imagetype,
    ’size’=>$imagesize,
    ’mime’=>$imageinfo['mime']
    );
  return $info;
    }

    function thumb($image, $filename = ”, $maxwidth = 200, $maxheight = 50, $suffix=’_thumb’, $autocut = 0)
    {
     if(!$this->thumb_enable || !$this->check($image)) return false;
        $info  = $this->info($image); //获取图片信息
        if($info === false) return false;
  $srcwidth  = $info['width']; //源图宽
  $srcheight = $info['height']; //源图高
  $pathinfo = pathinfo($image);
  $type =  $pathinfo['extension']; //取得扩展名
  if(!$type) $type = $info['type']; //如果没有取到,用$info['type']
  $type = strtolower($type);
  unset($info);
  $scale = min($maxwidth/$srcwidth, $maxheight/$srcheight); //获取缩略比例
  //获取按照源图的比列
  $createwidth = $width  = (int)($srcwidth*$scale); //取得缩略宽
  $createheight = $height = (int)($srcheight*$scale); //取得缩略高
  $psrc_x = $psrc_y = 0;
  if($autocut) //按照缩略图的比例来获取
  {
   if($maxwidth/$maxheight<$srcwidth/$srcheight && $maxheight>=$height) //如果缩略图按比列比源图窄的话
   {
    $width = $maxheight/$height*$width; //宽按照相应比例做处理
    $height = $maxheight; //高不变
   }
   elseif($maxwidth/$maxheight>$srcwidth/$srcheight && $maxwidth>=$width)//如果缩略图按比列比源图宽的话
   {
    $height = $maxwidth/$width*$height;
    $width = $maxwidth;
   }
   $createwidth = $maxwidth;
   $createheight = $maxheight;
  }
  $createfun = ‘imagecreatefrom’.($type==’jpg’ ? ‘jpeg’ : $type); //找到不同的图像处理函数
  $srcimg = $createfun($image); //新建图像
  if($type != ‘gif’ && function_exists(‘imagecreatetruecolor’))
   $thumbimg = imagecreatetruecolor($createwidth, $createheight); //新建一个真彩色图像
  else
   $thumbimg = imagecreate($width, $height); //新建一个基于调色板的图像

  if(function_exists(‘imagecopyresampled’)) //重采样拷贝部分图像并调整大小,真彩
   //imagecopyresampled(新图,源图,新图左上角x距离,新图左上角y距离,源图左上角x距离,源图左上角y距离,新图宽,新图高,源图宽,源图高)
   imagecopyresampled($thumbimg, $srcimg, 0, 0, $psrc_x, $psrc_y, $width, $height, $srcwidth, $srcheight);
  else //拷贝部分图像并调整大小,调色板
   imagecopyresized($thumbimg, $srcimg, 0, 0, $psrc_x, $psrc_y, $width, $height,  $srcwidth, $srcheight);
  if($type==’gif’ || $type==’png’)
  {
   //imagecolorallocate 为一幅图像分配颜色
   $background_color  =  imagecolorallocate($thumbimg,  0, 255, 0);  // 给基于调色板的图像填充背景色, 指派一个绿色
   // imagecolortransparent 将某个颜色定义为透明色
   imagecolortransparent($thumbimg, $background_color);  //  设置为透明色,若注释掉该行则输出绿色的图
  }
  // imageinterlace 激活或禁止隔行扫描
  if($type==’jpg’ || $type==’jpeg’) imageinterlace($thumbimg, $this->interlace);
  $imagefun = ‘image’.($type==’jpg’ ? ‘jpeg’ : $type);
  //imagejpeg imagegif imagepng
  if(empty($filename)) $filename  = substr($image, 0, strrpos($image, ‘.’)).$suffix.’.’.$type; //获取文件名
  //aaa.gif aaa_thumb.gif
  $imagefun($thumbimg, $filename); //新建图像
  imagedestroy($thumbimg); //销毁缩略图
  imagedestroy($srcimg); //销毁源图
  return $filename;
    }
 //watermark(源图,生成文件,生成位置,水印文件,水印文本,背景色)
 function watermark($source, $target = ”, $w_pos = 9, $w_img = ”, $w_text = ”, $w_font = 12, $w_color = ‘#cccccc’)
 {
  if(!$this->watermark_enable || !$this->check($source)) return false;
  if(!$target) $target = $source;
  if ($w_img == ” && $w_text == ”)
  $w_img = $this->w_img;
  $source_info = getimagesize($source);
  $source_w    = $source_info[0]; //获取宽
  $source_h    = $source_info[1]; //获取高
  if($source_w < $this->w_minwidth || $source_h < $this->w_minheight) return false; //宽和高达不到要求直接返回
  switch($source_info[2]) //新建图片
  {
   case 1 :
    $source_img = imagecreatefromgif($source);
    break;
   case 2 :
    $source_img = imagecreatefromjpeg($source);
    break;
   case 3 :
    $source_img = imagecreatefrompng($source);
    break;
   default :
    return false;
  }
  if(!empty($w_img) && file_exists($w_img)) //水印文件
  {
   $ifwaterimage = 1; //是否水印图
   $water_info   = getimagesize($w_img); //水印信息
   $width        = $water_info[0];
   $height       = $water_info[1];
   switch($water_info[2])
   {
    case 1 :
     $water_img = imagecreatefromgif($w_img);
     break;
    case 2 :
     $water_img = imagecreatefromjpeg($w_img);
     break;
    case 3 :
     $water_img = imagecreatefrompng($w_img);
     break;
    default :
     return;
   }
  }
  else
  {
   $ifwaterimage = 0;
   //imagettfbbox 本函数计算并返回一个包围着 TrueType 文本范围的虚拟方框的像素大小。
   //imagettfbbox ( 字体大小, 字体角度, 字体文件,文件 )
   $temp = imagettfbbox(ceil($w_font*1.2), 0, $this->fontfile, $w_text);//取得使用 truetype 字体的文本的范围
   $width = $temp[4] – $temp[6]; //右上角 X 位置 – 左上角 X 位置
   $height = $temp[3] – $temp[5]; //右下角 Y 位置- 右上角 Y 位置
   unset($temp);
  }
  switch($w_pos)
  {
   case 0: //随机位置
    $wx = rand(0,($source_w – $width));
    $wy = rand(0,($source_h – $height));
    break;
   case 1: //左上角
    $wx = 5;
    $wy = 5;
    break;
   case 2: //上面中间位置
    $wx = ($source_w – $width) / 2;
    $wy = 0;
    break;
   case 3: //右上角
    $wx = $source_w – $width;
    $wy = 0;
    break;
   case 4: //左面中间位置
    $wx = 0;
    $wy = ($source_h – $height) / 2;
    break;
   case 5: //中间位置
    $wx = ($source_w – $width) / 2;
    $wy = ($source_h – $height) / 2;
    break;
   case 6: //底部中间位置
    $wx = ($source_w – $width) / 2;
    $wy = $source_h – $height;
    break;
   case 7: //左下角
    $wx = 0;
    $wy = $source_h – $height;
    break;
   case 8: //右面中间位置
    $wx = $source_w – $width;
    $wy = ($source_h – $height) /2;
    break;
   case 9: //右下角
    $wx = $source_w – $width;
    $wy = $source_h – $height ;
    break;
   default: //随机
    $wx = rand(0,($source_w – $width));
    $wy = rand(0,($source_h – $height));
    break;
  }
  if($ifwaterimage) //如果有水印图
  {
   //imagecopymerge 拷贝并合并图像的一部分
   //参数(源图,水印图,拷贝到源图x位置,拷贝到源图y位置,从水印图x位置,从水印图y位置,高,宽,透明度)
   imagecopymerge($source_img, $water_img, $wx, $wy, 0, 0, $width, $height, $this->w_pct);
  }
  else
  {
   if(!empty($w_color) && (strlen($w_color)==7))
   {
    $r = hexdec(substr($w_color,1,2)); //获取红色
    $g = hexdec(substr($w_color,3,2)); //获取绿色
    $b = hexdec(substr($w_color,5)); //获取蓝色
   }
   else
   {
    return;
   }
   //imagecolorallocate 基于调色板的图像填充背景色
   //imagestring 水平地画一行字符串
   //imagestring(源图,字体大小,位置X,位置Y,文字,颜色)
   //参数($image, float $size, float $angle, int $x, int $y, int $color, string $fontfile, string $text)
   imagettftext($source_img,$w_font,0,$wx,$wy,imagecolorallocate($source_img,$r,$g,$b),$this->fontfile,$w_text);
   //imagestring($source_img,$w_font,$wx,$wy,$w_text,imagecolorallocate($source_img,$r,$g,$b));
  }
  //输出到文件或者浏览器
  switch($source_info[2])
  {
   case 1 :
    imagegif($source_img, $target); //以 GIF 格式将图像输出到浏览器或文件
    break;
   case 2 :
    imagejpeg($source_img, $target, $this->w_quality); //以 JPEG 格式将图像输出到浏览器或文件
    break;
   case 3 :
    imagepng($source_img, $target); //以 PNG 格式将图像输出到浏览器或文件
    break;
   default :
    return;
  }
  if(isset($water_info))
  {
   unset($water_info); //销毁
  }
  if(isset($water_img))
  {
   imagedestroy($water_img); //销毁
  }
  unset($source_info);
  imagedestroy($source_img);
  return true;
 }
 //gd库必须存在,后缀为jpg|jpeg|gif|png,文件存在,imagecreatefromjpeg或者imagecreatefromgif存在
 function check($image)
 {
  return extension_loaded(‘gd’) &&
  preg_match(“/\.(jpg|jpeg|gif|png)/i”, $image, $m) &&
  file_exists($image) &&
  function_exists(‘imagecreatefrom’.($m[1] == ‘jpg’ ? ‘jpeg’ : $m[1]));
  //imagecreatefromjpeg
  //imagecreatefromgif
  //imagecreatefrompng
 }
}?>

php文件下载程序

<?php

$fileurl = ‘E:/demo/phper.rar’;

if(strpos($fileurl, ‘http://’) !== false || strpos($fileurl, ‘ftp://’) !== false) {
 header(“Location: $fileurl”);
}else {
 $filename = basename($fileurl); //取文件名
 $pathinfo = pathinfo($filename);
 $filetype =  $pathinfo['extension']; //取得扩展名
 $filesize = filesize($fileurl);
 if(ob_get_length() !== false) @ob_end_clean(); //清除以前的缓冲
 header(‘Pragma: public’);
 header(‘Last-Modified: ‘.gmdate(‘D, d M Y H:i:s’) . ‘ GMT’);
 header(‘Cache-Control: no-store, no-cache, must-revalidate’);
 header(‘Cache-Control: pre-check=0, post-check=0, max-age=0′);
 header(‘Content-Transfer-Encoding: binary’);
 header(‘Content-Encoding: none’);
 header(‘Content-type: ‘.$filetype);
 header(‘Content-Disposition: attachment; filename=”‘.$filename.’”‘);
 header(‘Content-length: ‘.$filesize);
 //readfile($fileurl);
 $fp = @fopen($fileurl,”rb”);
 while(!feof($fp)) {
  $buffer= fread($fp,8192);
  echo $buffer;
 }
 @flush();
 @ob_flush();
}

?>

PHP中文转换拼音函数

<?php
/**
* 来源:互联网
* 整理:www.phppx.com
*/
$d=array(
array(“a”,-20319),
array(“ai”,-20317),
array(“an”,-20304),
array(“ang”,-20295),
array(“ao”,-20292),
array(“ba”,-20283),
array(“bai”,-20265),
array(“ban”,-20257),
array(“bang”,-20242),
array(“bao”,-20230),
array(“bei”,-20051),
array(“ben”,-20036),
array(“beng”,-20032),
array(“bi”,-20026),
array(“bian”,-20002),
array(“biao”,-19990),
array(“bie”,-19986),
array(“bin”,-19982),
array(“bing”,-19976),
array(“bo”,-19805),
array(“bu”,-19784),
array(“ca”,-19775),
array(“cai”,-19774),
array(“can”,-19763),
array(“cang”,-19756),
array(“cao”,-19751),
array(“ce”,-19746),
array(“ceng”,-19741),
array(“cha”,-19739),
array(“chai”,-19728),
array(“chan”,-19725),
array(“chang”,-19715),
array(“chao”,-19540),
array(“che”,-19531),
array(“chen”,-19525),
array(“cheng”,-19515),
array(“chi”,-19500),
array(“chong”,-19484),
array(“chou”,-19479),
array(“chu”,-19467),
array(“chuai”,-19289),
array(“chuan”,-19288),
array(“chuang”,-19281),
array(“chui”,-19275),
array(“chun”,-19270),
array(“chuo”,-19263),
array(“ci”,-19261),
array(“cong”,-19249),
array(“cou”,-19243),
array(“cu”,-19242),
array(“cuan”,-19238),
array(“cui”,-19235),
array(“cun”,-19227),
array(“cuo”,-19224),
array(“da”,-19218),
array(“dai”,-19212),
array(“dan”,-19038),
array(“dang”,-19023),
array(“dao”,-19018),
array(“de”,-19006),
array(“deng”,-19003),
array(“di”,-18996),
array(“dian”,-18977),
array(“diao”,-18961),
array(“die”,-18952),
array(“ding”,-18783),
array(“diu”,-18774),
array(“dong”,-18773),
array(“dou”,-18763),
array(“du”,-18756),
array(“duan”,-18741),
array(“dui”,-18735),
array(“dun”,-18731),
array(“duo”,-18722),
array(“e”,-18710),
array(“en”,-18697),
array(“er”,-18696),
array(“fa”,-18526),
array(“fan”,-18518),
array(“fang”,-18501),
array(“fei”,-18490),
array(“fen”,-18478),
array(“feng”,-18463),
array(“fo”,-18448),
array(“fou”,-18447),
array(“fu”,-18446),
array(“ga”,-18239),
array(“gai”,-18237),
array(“gan”,-18231),
array(“gang”,-18220),
array(“gao”,-18211),
array(“ge”,-18201),
array(“gei”,-18184),
array(“gen”,-18183),
array(“geng”,-18181),
array(“gong”,-18012),
array(“gou”,-17997),
array(“gu”,-17988),
array(“gua”,-17970),
array(“guai”,-17964),
array(“guan”,-17961),
array(“guang”,-17950),
array(“gui”,-17947),
array(“gun”,-17931),
array(“guo”,-17928),
array(“ha”,-17922),
array(“hai”,-17759),
array(“han”,-17752),
array(“hang”,-17733),
array(“hao”,-17730),
array(“he”,-17721),
array(“hei”,-17703),
array(“hen”,-17701),
array(“heng”,-17697),
array(“hong”,-17692),
array(“hou”,-17683),
array(“hu”,-17676),
array(“hua”,-17496),
array(“huai”,-17487),
array(“huan”,-17482),
array(“huang”,-17468),
array(“hui”,-17454),
array(“hun”,-17433),
array(“huo”,-17427),
array(“ji”,-17417),
array(“jia”,-17202),
array(“jian”,-17185),
array(“jiang”,-16983),
array(“jiao”,-16970),
array(“jie”,-16942),
array(“jin”,-16915),
array(“jing”,-16733),
array(“jiong”,-16708),
array(“jiu”,-16706),
array(“ju”,-16689),
array(“juan”,-16664),
array(“jue”,-16657),
array(“jun”,-16647),
array(“ka”,-16474),
array(“kai”,-16470),
array(“kan”,-16465),
array(“kang”,-16459),
array(“kao”,-16452),
array(“ke”,-16448),
array(“ken”,-16433),
array(“keng”,-16429),
array(“kong”,-16427),
array(“kou”,-16423),
array(“ku”,-16419),
array(“kua”,-16412),
array(“kuai”,-16407),
array(“kuan”,-16403),
array(“kuang”,-16401),
array(“kui”,-16393),
array(“kun”,-16220),
array(“kuo”,-16216),
array(“la”,-16212),
array(“lai”,-16205),
array(“lan”,-16202),
array(“lang”,-16187),
array(“lao”,-16180),
array(“le”,-16171),
array(“lei”,-16169),
array(“leng”,-16158),
array(“li”,-16155),
array(“lia”,-15959),
array(“lian”,-15958),
array(“liang”,-15944),
array(“liao”,-15933),
array(“lie”,-15920),
array(“lin”,-15915),
array(“ling”,-15903),
array(“liu”,-15889),
array(“long”,-15878),
array(“lou”,-15707),
array(“lu”,-15701),
array(“lv”,-15681),
array(“luan”,-15667),
array(“lue”,-15661),
array(“lun”,-15659),
array(“luo”,-15652),
array(“ma”,-15640),
array(“mai”,-15631),
array(“man”,-15625),
array(“mang”,-15454),
array(“mao”,-15448),
array(“me”,-15436),
array(“mei”,-15435),
array(“men”,-15419),
array(“meng”,-15416),
array(“mi”,-15408),
array(“mian”,-15394),
array(“miao”,-15385),
array(“mie”,-15377),
array(“min”,-15375),
array(“ming”,-15369),
array(“miu”,-15363),
array(“mo”,-15362),
array(“mou”,-15183),
array(“mu”,-15180),
array(“na”,-15165),
array(“nai”,-15158),
array(“nan”,-15153),
array(“nang”,-15150),
array(“nao”,-15149),
array(“ne”,-15144),
array(“nei”,-15143),
array(“nen”,-15141),
array(“neng”,-15140),
array(“ni”,-15139),
array(“nian”,-15128),
array(“niang”,-15121),
array(“niao”,-15119),
array(“nie”,-15117),
array(“nin”,-15110),
array(“ning”,-15109),
array(“niu”,-14941),
array(“nong”,-14937),
array(“nu”,-14933),
array(“nv”,-14930),
array(“nuan”,-14929),
array(“nue”,-14928),
array(“nuo”,-14926),
array(“o”,-14922),
array(“ou”,-14921),
array(“pa”,-14914),
array(“pai”,-14908),
array(“pan”,-14902),
array(“pang”,-14894),
array(“pao”,-14889),
array(“pei”,-14882),
array(“pen”,-14873),
array(“peng”,-14871),
array(“pi”,-14857),
array(“pian”,-14678),
array(“piao”,-14674),
array(“pie”,-14670),
array(“pin”,-14668),
array(“ping”,-14663),
array(“po”,-14654),
array(“pu”,-14645),
array(“qi”,-14630),
array(“qia”,-14594),
array(“qian”,-14429),
array(“qiang”,-14407),
array(“qiao”,-14399),
array(“qie”,-14384),
array(“qin”,-14379),
array(“qing”,-14368),
array(“qiong”,-14355),
array(“qiu”,-14353),
array(“qu”,-14345),
array(“quan”,-14170),
array(“que”,-14159),
array(“qun”,-14151),
array(“ran”,-14149),
array(“rang”,-14145),
array(“rao”,-14140),
array(“re”,-14137),
array(“ren”,-14135),
array(“reng”,-14125),
array(“ri”,-14123),
array(“rong”,-14122),
array(“rou”,-14112),
array(“ru”,-14109),
array(“ruan”,-14099),
array(“rui”,-14097),
array(“run”,-14094),
array(“ruo”,-14092),
array(“sa”,-14090),
array(“sai”,-14087),
array(“san”,-14083),
array(“sang”,-13917),
array(“sao”,-13914),
array(“se”,-13910),
array(“sen”,-13907),
array(“seng”,-13906),
array(“sha”,-13905),
array(“shai”,-13896),
array(“shan”,-13894),
array(“shang”,-13878),
array(“shao”,-13870),
array(“she”,-13859),
array(“shen”,-13847),
array(“sheng”,-13831),
array(“shi”,-13658),
array(“shou”,-13611),
array(“shu”,-13601),
array(“shua”,-13406),
array(“shuai”,-13404),
array(“shuan”,-13400),
array(“shuang”,-13398),
array(“shui”,-13395),
array(“shun”,-13391),
array(“shuo”,-13387),
array(“si”,-13383),
array(“song”,-13367),
array(“sou”,-13359),
array(“su”,-13356),
array(“suan”,-13343),
array(“sui”,-13340),
array(“sun”,-13329),
array(“suo”,-13326),
array(“ta”,-13318),
array(“tai”,-13147),
array(“tan”,-13138),
array(“tang”,-13120),
array(“tao”,-13107),
array(“te”,-13096),
array(“teng”,-13095),
array(“ti”,-13091),
array(“tian”,-13076),
array(“tiao”,-13068),
array(“tie”,-13063),
array(“ting”,-13060),
array(“tong”,-12888),
array(“tou”,-12875),
array(“tu”,-12871),
array(“tuan”,-12860),
array(“tui”,-12858),
array(“tun”,-12852),
array(“tuo”,-12849),
array(“wa”,-12838),
array(“wai”,-12831),
array(“wan”,-12829),
array(“wang”,-12812),
array(“wei”,-12802),
array(“wen”,-12607),
array(“weng”,-12597),
array(“wo”,-12594),
array(“wu”,-12585),
array(“xi”,-12556),
array(“xia”,-12359),
array(“xian”,-12346),
array(“xiang”,-12320),
array(“xiao”,-12300),
array(“xie”,-12120),
array(“xin”,-12099),
array(“xing”,-12089),
array(“xiong”,-12074),
array(“xiu”,-12067),
array(“xu”,-12058),
array(“xuan”,-12039),
array(“xue”,-11867),
array(“xun”,-11861),
array(“ya”,-11847),
array(“yan”,-11831),
array(“yang”,-11798),
array(“yao”,-11781),
array(“ye”,-11604),
array(“yi”,-11589),
array(“yin”,-11536),
array(“ying”,-11358),
array(“yo”,-11340),
array(“yong”,-11339),
array(“you”,-11324),
array(“yu”,-11303),
array(“yuan”,-11097),
array(“yue”,-11077),
array(“yun”,-11067),
array(“za”,-11055),
array(“zai”,-11052),
array(“zan”,-11045),
array(“zang”,-11041),
array(“zao”,-11038),
array(“ze”,-11024),
array(“zei”,-11020),
array(“zen”,-11019),
array(“zeng”,-11018),
array(“zha”,-11014),
array(“zhai”,-10838),
array(“zhan”,-10832),
array(“zhang”,-10815),
array(“zhao”,-10800),
array(“zhe”,-10790),
array(“zhen”,-10780),
array(“zheng”,-10764),
array(“zhi”,-10587),
array(“zhong”,-10544),
array(“zhou”,-10533),
array(“zhu”,-10519),
array(“zhua”,-10331),
array(“zhuai”,-10329),
array(“zhuan”,-10328),
array(“zhuang”,-10322),
array(“zhui”,-10315),
array(“zhun”,-10309),
array(“zhuo”,-10307),
array(“zi”,-10296),
array(“zong”,-10281),
array(“zou”,-10274),
array(“zu”,-10270),
array(“zuan”,-10262),
array(“zui”,-10260),
array(“zun”,-10256),
array(“zuo”,-10254)
);
function g($num){
        global $d;
        if($num>0&&$num<160){
                return chr($num);
        }
        elseif($num<-20319||$num>-10247){
                return “”;
        }else{
                for($i=count($d)-1;$i>=0;$i–)
                {if($d[$i][1]<=$num)break;}
                return $d[$i][0];
        }
}

function c($str){
        $ret=”";
        for($i=0;$i<strlen($str);$i++){
                $p=ord(substr($str,$i,1));
                if($p>160){
                        $q=ord(substr($str,++$i,1));
                        $p=$p*256+$q-65536;
                }
                $ret.=g($p);
        }
        return $ret;
}

//这里接收表单参数
if (isset($_POST['ok']) and $_POST['chinese'] != ”) {
        $str = $_POST['chinese'];
} else {
        $str = “新程php培训”;
}
echo $str;
?>
<form action=”" method=”POST”>
请输入要转换的中文:
<input type=”text” name=”chinese”>
<input type=”submit” name=”ok” value=”中文转拼音” >
</form>

如何修改Apache最大连接数

  • 在apache中 可以采用 MaxClients 指令改变 apache最大链接数。

    apache手册原文: 

    对于非线程型的MPM(也就是prefork),MaxClients表示可以用于伺服客户端请求的最大子进程数量,默认值是256。要增大这个值,你必须同时增大ServerLimit

    对于线程型或者混合型的MPM(也就是beosworker),MaxClients表示可以用于伺服客户端请求的最大线程数量。线程型的beos的默认值是50。对于混合型的MPM默认值是16(ServerLimit)乘以25(ThreadsPerChild)的结果。因此要将MaxClients增加到超过16个进程才能提供的时候,你必须同时增加ServerLimit的值。

      在httpd.conf中配置:

    1、对于apache1.x

    增加apache最大连接数的方法:

             找到MaxClients n , n是整数,表示最大连接数,取值范围在1和256之间,如果要让apache支持更多的连接数,那么需要修改源码中的httpd.h文件,编辑/httpd-2.0.59/include/httpd.h中的HARD_SERVER_LIMIT值改大然后再编译。

    2、对于apache2.x

    系统默认150个连接数,有个数有点太少了,网站流量大一些时候就不够用了。现在服务器配置要比前几年好很多,我们可以修改更大一些。下面的例子修改为2500个。

    在httpd.conf文件中找到

     

    <IfModule prefork.c>
    StartServers       8
    MinSpareServers    5
    MaxSpareServers   20
    MaxClients       150
    MaxRequestsPerChild  1000
    </IfModule>
    修改
    MaxClients       150
    为
    ServerLimit        2500
    MaxClients         2500

     

    注意:要同时修改ServerLimit这个选项。

             然后保存退出重新启动apache 服务,ok !
     

  • 关键词:修改Apache最大连接数

    齐亮毕业感言

    学员姓名:齐亮

    基本资料:毕业于东北大学大连软件学院,有C语言基础,无php基础,日语二级。

    就业情况:现北京创世互动科技有限公司(http://www.mogenesis.com/),月薪2500 。

    齐亮毕业感言

      我毕业于大连软件学院,计算机专业。大学毕业以后我满怀憧憬来到北京寻找理想的工作。不过3,4个月时间过去了,一直没找到理想的工作。之前所带的生活费也所剩无几,心情很沮丧,准备离开北京。

    一次在QQ上跟同学聊天,听同学说现在学php很容易找工作,于是在网上找了一些php方面的资料,渐渐对php产生了浓厚的兴趣。我在百度上查找关于 php培训方面的机构,最后综合了就业,学费,课时各方面的因素,我选择了新程php培训,最后也证明了我的选择是正确的。

    新程php培训最大特色是保证就业写入合同,这在我的咨询的所有php培训班中,新程是唯一一家这样做的培训机构。新程的授课内容几乎覆盖了所有LAMP 体系所涉及的所有内容,邓老师讲课方式非常生动,深入浅出,并且有大量的练习时间,使得我们学习起来比较轻松。讲完基础知识,开始做毕业设计,因为毕业设计系统有些复杂,开始有很多地方不理解,后来经过缴老师反复讲解,终于独立完成了毕业设计。

    临近毕业的时候,因为我之前没有工作经验,再加上之前找工作遇到很多挫折,所以不太自信。缴老师一直鼓励我们,跟我们说了很多面试方面的技巧,让我增强了信心。在结课不久我就找到了一份工作,虽然工资不是很高,但是因为公司这个项目是日本方面的项目,很可能要去日本工作,对以后发展很有前途,我就答应去入职。

    以后的工作之路还很漫长,不管我做到什么程度,工作在哪,我都会感谢新程对我的培养,谢谢。

    从零开始学php类(1)– 类的基础知识(原创连载)

    什么是类?
    简单的说,类是属性和方法的集合。

    定义一个最简单的类
    <?php
    class person{}
    ?>
    这样我们就定义了一个叫person的类。

    关于php类的命名规则
    php类的命名,包括php变量,php方法的命名都比较混乱,完全不像java那样有严谨的命名规则。
    例如,对于上面的类,可以采用完全小写的写法,或者首个字母大写Person,甚至命名中有下划线写法,这些都是允许的。在不同大型的开源项目中,命名也是不同,完全凭个人习惯。

    注意事项:
    1.不能把类写在不同文件里,也不能把类写在不同的php块中。例如,
    <?php
    class person{
    ?>
    <?php }?>
    这样会产生一个”Parse error” 错误。
    2.我们也不能把类命名为stdClass ,这样会产生一个”Fatal error” 。stdClass是保留类名,具体作用以后再讲。

    如何初始化一个类?
    可以采用new这个关键字来实例化一个类。例如:
    $p = new person();

    类的数据类型
    我们可以用gettype这个函数来得到数据类型。echo gettype($p) ,得到的类型是 object ,说明类的类型是对象。

    张远山毕业感言

    zhangyuanshan_small

    学员姓名:张远山

    基本资料:毕业于北京某私立大学,无php基础。因想在北京就业,并且想往php方面发展而参加我校培训。

    就业情况:现就业中彩网(http://www.zhcw.com)月薪3200 。

    张远山毕业感言

      我从北京的一所私立大学毕业,我不说大家也知道是怎么回事,中国的正规大学也学不到多少知识,就别说私立大学了。

      很多同学毕业以后根本找不到工作,都陆续离开北京了。我个人是不想回去的,在大城市呆习惯了,就不想再回老家了。不过在北京也面临着很大问题,最直接的问题就是要找份工作才能生存下去。

      在上大学期间,我在学校图书馆看过几天的php方面的书籍,我也从社会上了解到php方面就业还是很容易的,于是产生了找个培训班学习php的念头。

      经过仔细的试听和对比,我最终选择了新程php培训。新程的课程非常的全面,从html,css,javascript到php,mysql,到mvc,jquery等等,使我们非常全面了解了php开发的相关知识。

      新程的2位主讲老师邓老师和缴老师也非常认真和负责,重点问题总是不厌其烦的讲解,一直到我们听懂为止。在这里,每个学员不光学到了php方面的相关知识,更重要的是,使我们掌握了自我学习的方法,我觉得这点是最重要的。这点对于我们结业以后,独立走向工作岗位非常有益处。

      由于在学校的学习比较扎实,再加上有成型的毕业作品,现在我已经找到了一份相对来说很满意的工作,在中彩网就职。我终于可以靠我自己的能力在北京生存下去了。真心感谢新程对我的培养。

    返回顶部