PHP Tips and Tricks

PHP Tips and Tricks

PHP Tips and Tricks LCA 2004 Jan.14, 2004. Adelaide Rasmus Lerdorf <[email protected]> http://lerdorf.com/lca04.pdf Slide 1/62 Many Things January 13 2004 PHP is Many Things to Many People o The BASIC of the Web o Web Template System o General-purpose Scripting Language o Advanced Application Framework o Application Server? - 2 - Slide 2/62 Template System January 13 2004 o A mechanism to separate logic from layout. o The defining characteristic is where and how the intersection between logic and layout is done. o PHP is a general-purpose templating system. o Any general-purpose templating system will eventually become PHP. - 3 - Slide 3/62 PHP is Big! January 13 2004 January 2004 Netcraft Report o 46,067,743 Domains queried o 14,699,098 Domains. 1,330,821 IP addresses o PHP installed on 32% of all domains Source: Netcraft January 2004 Apache Module Report o 9,286,904 Apache Servers surveyed o 5,010,035 (53.95%) PHP o 2,608,258 (28.09%) OpenSSL o 2,527,385 (27.21%) mod_ssl o 1,845,621 (19.87%) Frontpage o 1,597,830 (17.21%) mod_perl o 411,443 (4.43%) DAV o 380,012 (4.09%) mod_throttle o 360,440 (3.88%) mod_log_bytes o 355,235 (3.83%) mod_bwlimited o 327,263 (3.52%) mod_jk o 233,404 (2.51%) mod_fastcgi o 222,410 (2.39%) AuthMySQL Source: SecuritySpace.com - 4 - Slide 4/62 Killer Apps! January 13 2004 Thousands of cool PHP apps out there. Some better than others. Here are some I use: o Gallery - http://gallery.menalto.com/ o SquirrelMail - http://squirrelmail.org o FudForum - http://fud.prohost.org/ o Serendipity - http://s9y.org/ o Cacti - http://www.raxnet.net/products/cacti/ - 5 - Slide 5/62 Server-Side January 13 2004 PHP is a Server-side language Even though it is embedded in HTML files much like the client-side Javascript language, PHP is server-side and all PHP tags will be replaced by the server before anything is sent to the web browser. So if the HTML file contains: <html> <?php echo "Hello World"?> </html> What the end user would see with a "view source" in the browser would be: <html> Hello World </html> - 6 - Slide 6/62 Embedding PHP January 13 2004 The 4 available tag styles <html> <body> <? echo 'Short Tags - Most common' ?> <br /> <?php echo 'Long Tags - Portable' ?> <br /> <= 'ASP Tags' > <br /> <script language="php"> echo 'Really Long Tags - rarely used'; </script> <br /> </body> </html> Output: Short Tags - Most common Long Tags - Portable ASP Tags Really Long Tags - rarely used - 7 - Slide 7/62 gdchart January 13 2004 gdchart is a fast graphing extension written entirely in C. It can handle most common types of graphs with the only major missing feature being that it currently doesn't handle legends. Either create your own legend beside your graph, or maybe even layer it into the background image of your gdchart graph if you have a static legend. Line Chart <?php Header("Content-type: image/png"); $chart = new gdchart(LINE); $chart->add(array(2.5, 5.1, 8.6, 12.0, 15, 9, 8, 7)); $chart->add(array(5.0, 8.0, 9.2, 10.2, 7, 8, 10, 9)); $chart->add(array(8.0, 10.0, 14.0, 18.2, 16, 14, 12, 10)); $chart->labels = array("Jan","Feb","Mar","Apr","May","Jun","Jul", "Aug"); $chart->colors = array(0x1133aa, 0xaa3311, 0x33aa11); $chart->out(640,480,IMG_PNG); ?> Output: Line Chart with custom axes <?php Header("Content-type: image/png"); $chart = new gdchart(LINE); $chart->add(array(2.5, 5.1, 8.6, 12.0, 15, 9, 8, 7)); $chart->add(array(5.0, 8.0, 9.2, 10.2, 7, 8, 10, 9)); $chart->add(array(8.0, 10.0, 14.0, 18.2, 16, 14, 12, 10)); $chart->labels = array("Jan","Feb","Mar","Apr","May","Jun","Jul", "Aug"); $chart->requested_ymin = 0; $chart->ylabel_density = 25; $chart->ylabel_fmt = "%.0f"; $chart->colors = array(0x001133aa, 0x00aa3311, 0x33aa11); $chart->out(640,480,IMG_PNG); ?> Output: - 8 - 3D Area Chart <?php Header("Content-type: image/png"); $chart = new gdchart(AREA_3D); $chart->depth = 5; $chart->xtitle = "Fruits"; $chart->xtitle_color = 0xffff00; $chart->bg_color = 0x112233; $chart->xlabel_color = 0xffffff; $chart->ylabel_color = 0xffffff; $chart->colors = array(0x30ffff00, 0x30ff00ff, 0x3000ffff); $chart->add(array(2.5, 5.1, 8.6, 12.0)); $chart->add(array(5.0, 8.0, 9.2, 10.2)); $chart->add(array(8.0, 10.0, 14.0, 18.2)); $chart->labels = array("Apples","Oranges","Melons","Pears"); $chart->out(640,480,IMG_PNG); ?> Output: - 9 - Pie Chart <?php Header("Content-type: image/png"); $chart = new gdchart(PIE_3D); $chart->title = "This is a Sample Pie Chart"; $chart->title_font = "/usr/share/fonts/truetype/CANDY.ttf "; $chart->title_ptsize = 24; $chart->label_font = "/usr/share/fonts/truetype/Jester.ttf"; $chart->label_ptsize = 16; $chart->edge_color = 0x000000; $chart->labels = array("red","green\r\n(exploded)", "lt blue","purple","missing","cyan","blue"); $chart->add(array(12.5, 20.1, 2.0, 22.0, 5.0, 18.0, 13.0)); $chart->missing = array(FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE); $chart->explode = array(0,40,0,0,0,0,0); $chart->pie_depth = 30; $chart->perspective = 0; $chart->pie_angle = 90; $chart->label_line = false; $chart->percent_labels = LABEL_ABOVE; $chart->out(640,480,IMG_PNG); ?> Output: - 10 - Combo High-Low-Close Chart <?php Header("Content-type: image/png"); $chart = new gdchart(COMBO_HLC_AREA_3D); $chart->title = "High-Low-Close On top of an Area(volume) Graph"; $chart->depth = 5.0; $chart->angle = 50; $chart->annotation_font_size = FONT_TINY; $chart->anno_note = "Earnings\nReport"; $chart->anno_point = 8; $chart->vol_color = 0x40806040; $chart->grid = TICK_LABELS; $chart->ylabel_density = 40; $chart->hlc_style = HLC_CONNECTING | HLC_I_CAP | HLC_DIAMOND; $chart->add_scatter(17.0, 3, SCATTER_TRIANGLE_UP, 0x50808060, 30); $chart->add(array(17.8,17.1,17.3,17.2,17.1,17.3,17.3,17.3,17.1,17.5,17.4)); $chart->add(array(16.4,16.0,15.7,15.25,16.0,16.1,16.8,16.5,16.8,16.2,16.0)); $chart->add(array(17.0,16.8,16.9,15.9,16.8,17.2,16.8,17.0,16.9,16.4,16.1)); $chart->add_combo( array(150.0,100.0,340.0,999.0,390.0,420.0,150.0,100.0,340.0,1590.0,700.0)); $chart->labels = array("May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","Jan","Feb","Mar","Apr"); $chart->out(640,480,IMG_PNG); ?> Output: - 11 - - 12 - Slide 8/62 PDFs on-the-fly January 13 2004 A PDF Invoice <?php $pdf = pdf_new(); pdf_open_file($pdf); pdf_set_info($pdf, "Author","Rasmus Lerdorf"); pdf_set_info($pdf, "Title","Sample Invoice"); pdf_set_info($pdf, "Creator", "See Author"); pdf_set_info($pdf, "Subject", "Sample Invoice"); $sizes = array('a4'=>'595x842', 'letter'=>'612x792', 'legal'=>'612x1008'); if(!isset($type)) $type='letter'; list($x,$y) = explode('x',$sizes[$type]); $items = array(array('Our special low-cost widget that does everything','299.99'), array('Our special high-cost widget that does more','1899'), array('A blue widget','29.95'), array('And a red widget','49.95'), array('A yellow widget that makes noise','49.9'), array('And one that doesn\'t','999.95'), ); pdf_begin_page($pdf, $x, $y); $im = pdf_open_jpeg($pdf, "php-big.jpg"); pdf_place_image($pdf, $im, 5, $y-72, 0.5); pdf_close_image ($pdf,$im); pdf_set_value($pdf, 'textrendering', 0); // fill pdf_set_font($pdf, "Helvetica" , 12, winansi); pdf_show_xy($pdf, 'Generic Evil Company Inc.',145,$y-20); pdf_continue_text($pdf, '123 Main Street'); pdf_continue_text($pdf, 'Dark City, CA 98765'); pdf_set_font($pdf, "Helvetica" , 10, winansi); pdf_show_xy($pdf, 'Helpless Customer Ltd.',20,$y-100); pdf_continue_text($pdf, '2 Small Street'); pdf_continue_text($pdf, 'Little Town, ID 56789'); pdf_set_font($pdf, "Helvetica" , 10, winansi); pdf_show_xy($pdf, 'Terms: Net 30',150,$y-100); pdf_continue_text($pdf, 'PO #: 12345'); pdf_set_font($pdf, "Helvetica-Bold" , 30, winansi); pdf_show_xy($pdf, " I N V O I C E ",$x-250,$y-112); pdf_setcolor($pdf,'fill','gray',0.9,0,0,0); pdf_rect($pdf,20,80,$x-40,$y-212); pdf_fill_stroke($pdf); $offset = 184; $i=0; while($y-$offset > 80) { pdf_setcolor($pdf,'fill','gray',($i%2)?0.8:1,0,0,0); pdf_setcolor($pdf,'stroke','gray',($i%2)?0.8:1,0,0,0); pdf_rect($pdf,21,$y-$offset,$x-42,24); pdf_fill_stroke($pdf); $i++; $offset+=24; } pdf_setcolor($pdf,'fill','gray',0,0,0,0); pdf_setcolor($pdf,'stroke','gray',0,0,0,0); pdf_moveto($pdf, 20,$y-160); pdf_lineto($pdf, $x-20,$y-160); pdf_stroke($pdf); pdf_moveto($pdf, $x-140,$y-160); pdf_lineto($pdf, $x-140,80); - 13 - pdf_stroke($pdf); pdf_set_font($pdf, "Times-Bold" , 18, winansi); pdf_show_xy($pdf, "Item",30,$y-150); pdf_show_xy($pdf, "Price",$x-100,$y-150); pdf_set_font($pdf, "Times-Italic" , 15, winansi); $offset = 177; foreach($items as $item) { pdf_show_xy($pdf, $item[0],30,$y-$offset); pdf_show_boxed($pdf, '$'.number_format($item[1],2), $x-55, $y-$offset, 0, 0, 'right'); $offset+=24; $total += $item[1]; } pdf_set_font($pdf, "Times-Bold" , 17, winansi); $offset+=24; pdf_show_xy($pdf, 'Total',30,$y-$offset); pdf_show_boxed($pdf, '$'.number_format($total,2), $x-55, $y-$offset, 0, 0, 'right'); pdf_end_page($pdf); pdf_close($pdf); $data = pdf_get_buffer($pdf); header('Content-type: application/pdf'); header("Content-disposition: inline; filename=invoice.pdf"); header("Content-length: " . strlen($data)); echo $data; ?> - 14 - Slide 9/62 Ming-Flash January 13 2004 See http://www.opaque.net/ming/ <?php $s = new SWFShape(); $fp = fopen('php-big.jpg','r'); $jpg = new SWFBitmap($fp); $w = $jpg->getWidth(); $h = $jpg->getHeight(); $f = $s->addFill($jpg); $f->moveTo(-$w/2, -$h/2); $s->setRightFill($f); $s->movePenTo(-$w/2, -$h/2); $s->drawLine($w, 0); $s->drawLine(0, $h); $s->drawLine(-$w, 0); $s->drawLine(0, -$h); $p = new SWFSprite(); $i = $p->add($s); for($step=0; $step<360; $step+=2) { $p->nextFrame(); $i->rotate(-2);

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    79 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us