<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7967104085589652329</id><updated>2011-11-28T22:18:25.010-08:00</updated><category term='Random'/><category term='Easy design integration'/><category term='Real-time'/><category term='getting more variables'/><category term='extract'/><category term='PHP Calendar'/><category term='Customizable'/><category term='Captcha'/><category term='PHP  script'/><category term='free'/><category term='PayPal Pro'/><category term='HTML Email'/><category term='Php Database'/><category term='Php Shopping Carts'/><category term='Simple Text Email'/><category term='Security'/><category term='Progress Bar'/><category term='Google Checkout'/><category term='Single events'/><category term='easily integrated'/><category term='Php Codes'/><category term='reliable'/><category term='remove html tags'/><category term='Web Development'/><category term='Flat-file database support'/><category term='Php CMS'/><category term='Php MySql'/><category term='popup events'/><category term='ecommerce'/><category term='php shopping cart'/><category term='class'/><category term='Record'/><category term='script'/><category term='shopping carts'/><category term='Php Security'/><category term='Cost-effective'/><category term='Content Management Systems'/><category term='Drag and Drop'/><category term='ecommerce solution'/><category term='shopping cart software'/><category term='File Upload'/><category term='Mouseover events'/><category term='Search Engine friendly'/><category term='MySQL'/><category term='Images'/><category term='object'/><category term='customize'/><category term='Email Validator'/><category term='Php Functions'/><category term='recurring events'/><category term='oop'/><category term='mySQL database support'/><category term='skin templates'/><category term='floating events'/><category term='ecommerce software'/><category term='Php Email'/><category term='Open Source'/><category term='source'/><category term='PHP'/><category term='Php Validators'/><category term='Array from function'/><category term='HTML editor'/><category term='Email Address'/><category term='Joomla'/><category term='sql'/><category term='Email with Attachment'/><category term='Table'/><category term='software'/><category term='Database'/><category term='Returning Array'/><category term='more than one return'/><category term='source code'/><category term='credit card processing'/><category term='Selecting'/><category term='multiple categories'/><category term='Php Controls'/><category term='Anti Spamming'/><category term='Php Methods'/><category term='shopping cart'/><category term='calendar script'/><title type='text'>PHP Expert Programmer</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://phpexpertprogrammer.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://phpexpertprogrammer.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>ExpertsYard</name><uri>http://www.blogger.com/profile/13898690634078672108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='19' src='http://bp2.blogger.com/_Z7wbrC4BOnA/R6tV3KM9iuI/AAAAAAAAAAc/yFAWsqRPTQM/S220/experts_yard_logo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7967104085589652329.post-6754000961463573265</id><published>2009-03-01T09:23:00.000-08:00</published><updated>2009-03-16T05:35:09.931-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='extract'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Php Methods'/><category scheme='http://www.blogger.com/atom/ns#' term='Php Functions'/><title type='text'>Php extract method</title><content type='html'>&lt;h1&gt;"extract()" Method&lt;/h1&gt;&lt;br/&gt;&lt;span class="html"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;br/&gt;Experimentally I found that calling extract() also shows the number of keys if the key is set and is not numeric ! Maybe there was a better definition than mine  . Please have a look to this scripts :&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;span class="default"&gt;&amp;lt;?PHP&lt;br/&gt;$var&lt;/span&gt;&lt;span class="keyword"&gt;[&lt;/span&gt;&lt;span class="string"&gt;"i"&lt;/span&gt;&lt;span class="keyword"&gt;] = &lt;/span&gt;&lt;span class="string"&gt;"a"&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;span class="keyword"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span class="default"&gt;$var&lt;/span&gt;&lt;span class="keyword"&gt;[&lt;/span&gt;&lt;span class="string"&gt;"j"&lt;/span&gt;&lt;span class="keyword"&gt;] = &lt;/span&gt;&lt;span class="string"&gt;"b"&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;span class="keyword"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span class="default"&gt;$var&lt;/span&gt;&lt;span class="keyword"&gt;[&lt;/span&gt;&lt;span class="string"&gt;"k"&lt;/span&gt;&lt;span class="keyword"&gt;] = &lt;/span&gt;&lt;span class="default"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;span class="keyword"&gt;;&lt;br/&gt;echo &lt;/span&gt;&lt;span class="default"&gt;extract&lt;/span&gt;&lt;span class="keyword"&gt;(&lt;/span&gt;&lt;span class="default"&gt;$var&lt;/span&gt;&lt;span class="keyword"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;span class="comment"&gt;&lt;span style="color:#800000;"&gt;// returns 3&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;span class="default"&gt;?&amp;gt;&lt;br/&gt;&lt;/span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;span class="default"&gt;&amp;lt;?PHP&lt;br/&gt;$var2&lt;/span&gt;&lt;span class="keyword"&gt;[&lt;/span&gt;&lt;span class="string"&gt;"i"&lt;/span&gt;&lt;span class="keyword"&gt;] = &lt;/span&gt;&lt;span class="string"&gt;"a"&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;span class="keyword"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span class="default"&gt;$var2&lt;/span&gt;&lt;span class="keyword"&gt;[&lt;/span&gt;&lt;span class="default"&gt;2&lt;/span&gt;&lt;span class="keyword"&gt;] = &lt;/span&gt;&lt;span class="string"&gt;"b"&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;span class="keyword"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span class="default"&gt;$var2&lt;/span&gt;&lt;span class="keyword"&gt;[] = &lt;/span&gt;&lt;span class="default"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;span class="keyword"&gt;;&lt;br/&gt;echo &lt;/span&gt;&lt;span class="default"&gt;extract&lt;/span&gt;&lt;span class="keyword"&gt;(&lt;/span&gt;&lt;span class="default"&gt;$var2&lt;/span&gt;&lt;span class="keyword"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;span class="comment"&gt;// returns 1&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="default"&gt;&lt;span style="color:#800000;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt; &lt;/span&gt;&lt;br/&gt;&lt;br/&gt; &lt;br/&gt;&lt;br/&gt;(Arash Moslehi)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7967104085589652329-6754000961463573265?l=phpexpertprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexpertprogrammer.blogspot.com/feeds/6754000961463573265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7967104085589652329&amp;postID=6754000961463573265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/6754000961463573265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/6754000961463573265'/><link rel='alternate' type='text/html' href='http://phpexpertprogrammer.blogspot.com/2009/03/php-extract-method_01.html' title='Php extract method'/><author><name>ExpertsYard</name><uri>http://www.blogger.com/profile/13898690634078672108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='19' src='http://bp2.blogger.com/_Z7wbrC4BOnA/R6tV3KM9iuI/AAAAAAAAAAc/yFAWsqRPTQM/S220/experts_yard_logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7967104085589652329.post-9125781938089176610</id><published>2009-02-08T10:30:00.000-08:00</published><updated>2009-03-16T05:35:09.916-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Php Codes'/><category scheme='http://www.blogger.com/atom/ns#' term='Email with Attachment'/><category scheme='http://www.blogger.com/atom/ns#' term='Php Email'/><title type='text'>Sending Email with Attachment</title><content type='html'>The last variation that we will consider is email with attachments. To send an email with attachment we need to use the multipart/mixed MIME type that specifies that mixed types will be included in the email. Moreover, we want to use multipart/alternative MIME type to send both plain-text and HTML version of the email. Have a look at the example:&lt;br/&gt;&lt;div class="phpcode"&gt;&lt;span style="color:#993300;"&gt;&amp;lt;?php&lt;br/&gt;&lt;span class="comment"&gt;//define the receiver of the email&lt;/span&gt;&lt;br/&gt;$to = 'youraddress@example.com';&lt;br/&gt;&lt;span class="comment"&gt;//define the subject of the email&lt;/span&gt;&lt;br/&gt;$subject = 'Test email with attachment';&lt;br/&gt;&lt;/span&gt;&lt;span style="color:#993300;"&gt;&lt;span class="comment"&gt;//create a boundary string. It must be unique&lt;br/&gt;//so we use the MD5 algorithm to generate a random hash&lt;/span&gt;&lt;br/&gt;$random_hash = md5(date('r', time()));&lt;br/&gt;&lt;span class="comment"&gt;//define the headers we want passed. Note that they are separated with \r\n&lt;/span&gt;&lt;br/&gt;$headers = "From: webmaster@example.com\r\nReply-To: webmaster@example.com";&lt;br/&gt;&lt;span class="comment"&gt;//add boundary string and mime type specification&lt;/span&gt;&lt;br/&gt;$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";&lt;br/&gt;&lt;/span&gt;&lt;span style="color:#993300;"&gt;&lt;span class="comment"&gt;//read the atachment file contents into a string,&lt;br/&gt;//encode it with MIME base64,&lt;br/&gt;//and split it into smaller chunks&lt;/span&gt;&lt;br/&gt;$attachment = chunk_split(base64_encode(file_get_contents('attachment.zip')));&lt;br/&gt;&lt;span class="comment"&gt;//define the body of the message.&lt;/span&gt;&lt;br/&gt;ob_start(); &lt;span class="comment"&gt;//Turn on output buffering&lt;/span&gt;&lt;br/&gt;?&amp;gt;&lt;br/&gt;--PHP-mixed-&amp;lt;?php echo $random_hash; ?&amp;gt; &lt;br/&gt;Content-Type: multipart/alternative; boundary="PHP-alt-&amp;lt;?php echo $random_hash; ?&amp;gt;"&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;&lt;span style="color:#993300;"&gt;--PHP-alt-&amp;lt;?php echo $random_hash; ?&amp;gt; &lt;br/&gt;Content-Type: text/plain; charset="iso-8859-1"&lt;br/&gt;Content-Transfer-Encoding: 7bit&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color:#993300;"&gt;Hello World!!!&lt;br/&gt;This is simple text email message.&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color:#993300;"&gt;--PHP-alt-&amp;lt;?php echo $random_hash; ?&amp;gt; &lt;br/&gt;Content-Type: text/html; charset="iso-8859-1"&lt;br/&gt;Content-Transfer-Encoding: 7bit&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color:#993300;"&gt;&amp;lt;h2&amp;gt;Hello World!&amp;lt;/h2&amp;gt;&lt;br/&gt;&amp;lt;p&amp;gt;This is something with &amp;lt;b&amp;gt;HTML&amp;lt;/b&amp;gt; formatting.&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color:#993300;"&gt;--PHP-alt-&amp;lt;?php echo $random_hash; ?&amp;gt;--&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color:#993300;"&gt;--PHP-mixed-&amp;lt;?php echo $random_hash; ?&amp;gt; &lt;br/&gt;Content-Type: application/zip; name="attachment.zip" &lt;br/&gt;Content-Transfer-Encoding: base64 &lt;br/&gt;Content-Disposition: attachment &lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color:#993300;"&gt;&amp;lt;?php echo $attachment; ?&amp;gt;&lt;br/&gt;--PHP-mixed-&amp;lt;?php echo $random_hash; ?&amp;gt;--&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color:#993300;"&gt;&amp;lt;?php&lt;br/&gt;&lt;span class="comment"&gt;//copy current buffer contents into $message variable and delete current output buffer&lt;/span&gt;&lt;br/&gt;$message = ob_get_clean();&lt;br/&gt;&lt;span class="comment"&gt;//send the email&lt;/span&gt;&lt;br/&gt;$mail_sent = @mail( $to, $subject, $message, $headers );&lt;br/&gt;&lt;span class="comment"&gt;//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed" &lt;/span&gt;&lt;br/&gt;echo $mail_sent ? "Mail sent" : "Mail failed";&lt;br/&gt;?&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;As you can see, sending an email with attachment is easy to accomplish. In the preceding example we have multipart/mixed MIME type, and inside it we have multipart/alternative MIME type that specifies two versions of the email. To include an attachment to our message, we read the data from the specified file into a string, encode it with base64,  split it in smaller chunks to make sure that it matches the MIME specifications and then include it as an attachment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7967104085589652329-9125781938089176610?l=phpexpertprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexpertprogrammer.blogspot.com/feeds/9125781938089176610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7967104085589652329&amp;postID=9125781938089176610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/9125781938089176610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/9125781938089176610'/><link rel='alternate' type='text/html' href='http://phpexpertprogrammer.blogspot.com/2009/02/sending-email-with-attachment.html' title='Sending Email with Attachment'/><author><name>ExpertsYard</name><uri>http://www.blogger.com/profile/13898690634078672108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='19' src='http://bp2.blogger.com/_Z7wbrC4BOnA/R6tV3KM9iuI/AAAAAAAAAAc/yFAWsqRPTQM/S220/experts_yard_logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7967104085589652329.post-6418069491933982288</id><published>2009-02-08T10:24:00.000-08:00</published><updated>2009-03-16T05:35:09.904-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Php Codes'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML Email'/><category scheme='http://www.blogger.com/atom/ns#' term='Php Email'/><title type='text'>Sending HTML Email</title><content type='html'>The next step is to examine how to send HTML email. However, some mail clients cannot understand HTML emails. Therefore it is best to send any HTML email using a multipart construction, where one part contains a plain-text version of the email and the other part is HTML. If your customers have HTML email turned off, they will still get a nice email, even if they don't get all of the HTML markup. Have a look at the example:&lt;br/&gt;&lt;div class="phpcode"&gt;&lt;span style="color:#993300;"&gt;&amp;lt;?php&lt;br/&gt;&lt;span class="comment"&gt;//define the receiver of the email&lt;/span&gt;&lt;br/&gt;$to = 'youraddress@example.com';&lt;br/&gt;&lt;span class="comment"&gt;//define the subject of the email&lt;/span&gt;&lt;br/&gt;$subject = 'Test HTML email';&lt;br/&gt;&lt;/span&gt;&lt;span style="color:#993300;"&gt;&lt;span class="comment"&gt;//create a boundary string. It must be unique&lt;br/&gt;//so we use the MD5 algorithm to generate a random hash&lt;br/&gt;&lt;/span&gt;$random_hash = md5(date('r', time()));&lt;br/&gt;&lt;span class="comment"&gt;//define the headers we want passed. Note that they are separated with \r\n&lt;/span&gt;&lt;br/&gt;$headers = "From: webmaster@example.com\r\nReply-To: webmaster@example.com";&lt;br/&gt;&lt;span class="comment"&gt;//add boundary string and mime type specification&lt;/span&gt;&lt;br/&gt;$headers .= "\r\nContent-Type: multipart/alternative; boundary=\"PHP-alt-".$random_hash."\"";&lt;br/&gt;&lt;/span&gt;&lt;span style="color:#993300;"&gt;&lt;span class="comment"&gt;//define the body of the message.&lt;br/&gt;&lt;/span&gt;ob_start(); //Turn on output buffering&lt;br/&gt;?&amp;gt;&lt;br/&gt;--PHP-alt-&amp;lt;?php echo $random_hash; ?&amp;gt; &lt;br/&gt;Content-Type: text/plain; charset="iso-8859-1"&lt;br/&gt;Content-Transfer-Encoding: 7bit&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;&lt;span style="color:#993300;"&gt;Hello World!!! &lt;br/&gt;This is simple text email message. &lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color:#993300;"&gt;--PHP-alt-&amp;lt;?php echo $random_hash; ?&amp;gt; &lt;br/&gt;Content-Type: text/html; charset="iso-8859-1"&lt;br/&gt;Content-Transfer-Encoding: 7bit&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color:#993300;"&gt;&amp;lt;h2&amp;gt;Hello World!&amp;lt;/h2&amp;gt;&lt;br/&gt;&amp;lt;p&amp;gt;This is something with &amp;lt;b&amp;gt;HTML&amp;lt;/b&amp;gt; formatting.&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color:#993300;"&gt;--PHP-alt-&amp;lt;?php echo $random_hash; ?&amp;gt;--&lt;br/&gt;&amp;lt;?&lt;br/&gt;&lt;span class="comment"&gt;//copy current buffer contents into $message variable and delete current output buffer&lt;/span&gt;&lt;br/&gt;$message = ob_get_clean();&lt;br/&gt;&lt;/span&gt;&lt;span style="color:#993300;"&gt;&lt;span class="comment"&gt;//send the email&lt;br/&gt;&lt;/span&gt;$mail_sent = @mail( $to, $subject, $message, $headers );&lt;br/&gt;&lt;span class="comment"&gt;//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed" &lt;/span&gt;&lt;br/&gt;echo $mail_sent ? "Mail sent" : "Mail failed";&lt;br/&gt;?&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;In the preceding example we add one additional header of Content-type:multipart/alternative and boundary string that marks the different areas of the email. Note that the content type of the message itself is sent as a mail header, while the content types of the individual parts of the message are embedded in the message itself. This way, mail clients can decide which part of the message they want to display.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7967104085589652329-6418069491933982288?l=phpexpertprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexpertprogrammer.blogspot.com/feeds/6418069491933982288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7967104085589652329&amp;postID=6418069491933982288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/6418069491933982288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/6418069491933982288'/><link rel='alternate' type='text/html' href='http://phpexpertprogrammer.blogspot.com/2009/02/sending-html-email.html' title='Sending HTML Email'/><author><name>ExpertsYard</name><uri>http://www.blogger.com/profile/13898690634078672108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='19' src='http://bp2.blogger.com/_Z7wbrC4BOnA/R6tV3KM9iuI/AAAAAAAAAAc/yFAWsqRPTQM/S220/experts_yard_logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7967104085589652329.post-7600351838232062699</id><published>2009-02-08T10:23:00.000-08:00</published><updated>2009-03-16T05:35:09.890-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Simple Text Email'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Php Codes'/><category scheme='http://www.blogger.com/atom/ns#' term='Php Email'/><title type='text'>Sending a Simple Text Email</title><content type='html'>At first let's consider how to send a simple text email messages. PHP includes the &lt;em&gt;mail()&lt;/em&gt; function for sending email, which takes three basic and two optional parameters. These parameters are, in order, the email address to send to, the subject of the email, the message to be sent, additional headers you want to include and finally an additional parameter to the Sendmail program. The &lt;em&gt;mail()&lt;/em&gt; function returns True if the message is sent successfully and False otherwise. Have a look at the example:&lt;br/&gt;&lt;div class="phpcode"&gt;&lt;span style="color:#993300;"&gt;&amp;lt;?php&lt;br/&gt;&lt;span class="comment"&gt;//define the receiver of the email&lt;/span&gt;&lt;br/&gt;$to = 'youraddress@example.com';&lt;br/&gt;&lt;span class="comment"&gt;//define the subject of the email&lt;/span&gt;&lt;br/&gt;$subject = 'Test email';&lt;br/&gt;&lt;span class="comment"&gt;//define the message to be sent. Each line should be separated with \n&lt;/span&gt;&lt;br/&gt;$message = "Hello World!\n\nThis is my first mail.";&lt;br/&gt;&lt;span class="comment"&gt;//define the headers we want passed. Note that they are separated with \r\n&lt;/span&gt;&lt;br/&gt;$headers = "From: webmaster@example.com\r\nReply-To: webmaster@example.com";&lt;br/&gt;&lt;/span&gt;&lt;span style="color:#993300;"&gt;&lt;span class="comment"&gt;//send the email&lt;br/&gt;&lt;/span&gt;$mail_sent = @mail( $to, $subject, $message, $headers );&lt;br/&gt;&lt;span class="comment"&gt;//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed" &lt;/span&gt;&lt;br/&gt;echo $mail_sent ? "Mail sent" : "Mail failed";&lt;br/&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;As you can see, it very easy to send an email. You can add more receivers by either adding their addresses, comma separated, to the $to variable, or by adding cc: or bcc: headers. If you don't receive the test mail, you have probably installed PHP incorrectly, or may not have permission to send emails.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7967104085589652329-7600351838232062699?l=phpexpertprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexpertprogrammer.blogspot.com/feeds/7600351838232062699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7967104085589652329&amp;postID=7600351838232062699' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/7600351838232062699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/7600351838232062699'/><link rel='alternate' type='text/html' href='http://phpexpertprogrammer.blogspot.com/2009/02/sending-simple-text-email.html' title='Sending a Simple Text Email'/><author><name>ExpertsYard</name><uri>http://www.blogger.com/profile/13898690634078672108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='19' src='http://bp2.blogger.com/_Z7wbrC4BOnA/R6tV3KM9iuI/AAAAAAAAAAc/yFAWsqRPTQM/S220/experts_yard_logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7967104085589652329.post-1663268464936189135</id><published>2009-02-06T07:30:00.000-08:00</published><updated>2009-03-16T05:35:09.876-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Php Codes'/><category scheme='http://www.blogger.com/atom/ns#' term='remove html tags'/><title type='text'>how to remove html tags from text in php</title><content type='html'>if you are reading my post, its probably because you want to remove html tags from your posts or forums or whatever.&lt;br/&gt;&lt;br/&gt;when i first started to do this, i wanted to remove all the html tags from a strin i had in my posts. this is an example:&lt;br/&gt;&lt;div class="code"&gt;&amp;lt;?&lt;br/&gt;$string = "&amp;lt;h1&amp;gt;BIG HTML TAGS&amp;lt;/h1&amp;gt;";&lt;br/&gt;?&amp;gt;&lt;/div&gt;&lt;br/&gt;ok as you can see, this will output:&lt;br/&gt;&lt;h1&gt;BIG HTML TAGS&lt;/h1&gt;&lt;br/&gt;but i dont want that, i want to stop and prevent html from being posted on my forums. i tried using htmlspecialchars() and htmlentities() but none did what i wanted.&lt;br/&gt;&lt;br/&gt;but finally i found it, the function is called strip_tags()&lt;br/&gt;&lt;br/&gt;so if i wanted to remove the &amp;lt;h1&amp;gt; tags from my string i would just simply do this:&lt;br/&gt;&lt;div class="code"&gt;&amp;lt;?&lt;br/&gt;$string = "&amp;lt;h1&amp;gt;BIG HTML TAGS&amp;lt;/h1&amp;gt;";&lt;br/&gt;$string = strip_tags($string);&lt;br/&gt;?&amp;gt;&lt;/div&gt;&lt;br/&gt;and this would be the ouput:&lt;br/&gt;&lt;div class="code"&gt;BIG HTML TAGS&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7967104085589652329-1663268464936189135?l=phpexpertprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexpertprogrammer.blogspot.com/feeds/1663268464936189135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7967104085589652329&amp;postID=1663268464936189135' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/1663268464936189135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/1663268464936189135'/><link rel='alternate' type='text/html' href='http://phpexpertprogrammer.blogspot.com/2009/02/how-to-remove-html-tags-from-text-in.html' title='how to remove html tags from text in php'/><author><name>ExpertsYard</name><uri>http://www.blogger.com/profile/13898690634078672108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='19' src='http://bp2.blogger.com/_Z7wbrC4BOnA/R6tV3KM9iuI/AAAAAAAAAAc/yFAWsqRPTQM/S220/experts_yard_logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7967104085589652329.post-4875368739472906144</id><published>2008-08-17T17:59:00.000-07:00</published><updated>2009-03-16T05:35:09.792-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ecommerce software'/><category scheme='http://www.blogger.com/atom/ns#' term='shopping cart'/><category scheme='http://www.blogger.com/atom/ns#' term='Php CMS'/><category scheme='http://www.blogger.com/atom/ns#' term='php shopping cart'/><category scheme='http://www.blogger.com/atom/ns#' term='ecommerce solution'/><category scheme='http://www.blogger.com/atom/ns#' term='shopping cart software'/><category scheme='http://www.blogger.com/atom/ns#' term='Php Shopping Carts'/><category scheme='http://www.blogger.com/atom/ns#' term='shopping carts'/><title type='text'>X-Cart – ecommerce shopping cart software</title><content type='html'>&lt;h1&gt;X-Cart – ecommerce shopping cart software:&lt;/h1&gt;&lt;br/&gt;&lt;ul class="ProductFeatures"&gt;&lt;br/&gt;	&lt;li&gt;X-Cart shopping cart software is based on PHP Smarty templates, this makes it very flexible and easy to modify. The data is stored in MySQL database.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;W3C XHTML 1.0 compliance of X-Cart storefront out of the box.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;You receive a complete source code and SQL tables for MySQL database to make them extended or customized easily.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;X-Cart is a turnkey package. Installation is handled by web-based step-by-step wizard to make the system running immediately after receiving it.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;X-Cart is search engine friendly. It has integrated HTML catalog functionality to gain benefits of dynamic content and static HTML preferred by search engines.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;We bundle our software with &lt;a href="http://www.x-cart.com/support_resources.html"&gt;24x7 free technical support&lt;/a&gt; for beginners. Our experts are always ready to answer questions, even handle installation &amp;amp; configuration tasks.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;We also offer custom programming services. Every client can get a storefront with a unique look. We can customize the software to completely fit the structure of your business.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Additional software licenses come at &lt;a href="http://phpexpertprogrammer.wordpress.com/wp-admin/pricing.html"&gt;discounted rates&lt;/a&gt;.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;&lt;h1&gt;More advantages:&lt;/h1&gt;&lt;br/&gt;&lt;p style="margin:15px 0;"&gt;Robust feature rich ecommerce shopping cart software is a key in online business success. Its potential can be multiplied many times if accompanied by coherent resources &amp;amp; services to give a hand on the way to online success not leaving you alone when operating live ecommerce website:&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;ul class="ProductFeatures"&gt;&lt;br/&gt;	&lt;li&gt;&lt;br/&gt;&lt;h2 class="Item"&gt;Moneyback guarantee&lt;/h2&gt;&lt;br/&gt;We offer unconditional &lt;a href="http://phpexpertprogrammer.wordpress.com/wp-admin/moneyback_policy.html"&gt;30-day money back guarantee&lt;/a&gt; as a sign of our products quality to ensure best customers' experience in any case. Simply request a refund within 30 days since purchase to have all the money back.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;br/&gt;&lt;h2 class="Item"&gt;Community forums&lt;/h2&gt;&lt;br/&gt;The value of help provided by community forums should not be underestimated. Share experience with thousands of real business owners to find answers &amp;amp; hints to be successful. The &lt;a rel="nofollow" href="http://forum.x-cart.com/" target="_blank"&gt;forums&lt;/a&gt; are intentionally made available for clients only to ensure community forums are the meeting point of people who actually are in the business.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;br/&gt;&lt;h2 class="Item"&gt;Responsive support&lt;/h2&gt;&lt;br/&gt;&lt;a href="http://phpexpertprogrammer.wordpress.com/wp-admin/support_resources.html"&gt;Free technical support&lt;/a&gt; offered with each license guarantees successful project launching. We designed our software to minimize the need of this, so free technical support is a warranty card to keep you confident.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;br/&gt;&lt;h2 class="Item"&gt;Partnership&lt;/h2&gt;&lt;br/&gt;Regardless of whether you are a web hosting provider, developer, payment gateway or ISP, we can setup a partner relationship profitable for both parties. Read about our &lt;a href="http://phpexpertprogrammer.wordpress.com/wp-admin/become_affiliate.html"&gt;Affiliate program&lt;/a&gt; and see &lt;a href="http://phpexpertprogrammer.wordpress.com/wp-admin/pricing.html"&gt;Reseller prices&lt;/a&gt;.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;Website: &lt;a href="http://www.x-cart.com/"&gt;http://www.x-cart.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7967104085589652329-4875368739472906144?l=phpexpertprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexpertprogrammer.blogspot.com/feeds/4875368739472906144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7967104085589652329&amp;postID=4875368739472906144' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/4875368739472906144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/4875368739472906144'/><link rel='alternate' type='text/html' href='http://phpexpertprogrammer.blogspot.com/2008/08/x-cart-ecommerce-shopping-cart-software.html' title='X-Cart – ecommerce shopping cart software'/><author><name>ExpertsYard</name><uri>http://www.blogger.com/profile/13898690634078672108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='19' src='http://bp2.blogger.com/_Z7wbrC4BOnA/R6tV3KM9iuI/AAAAAAAAAAc/yFAWsqRPTQM/S220/experts_yard_logo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7967104085589652329.post-5529378477390438163</id><published>2008-07-29T15:17:00.000-07:00</published><updated>2009-03-16T05:35:09.730-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Php Codes'/><category scheme='http://www.blogger.com/atom/ns#' term='Email Validator'/><category scheme='http://www.blogger.com/atom/ns#' term='Php Validators'/><category scheme='http://www.blogger.com/atom/ns#' term='Email Address'/><category scheme='http://www.blogger.com/atom/ns#' term='Php Email'/><title type='text'>PHP Email Address Validation</title><content type='html'>&lt;span style="color:#800000;"&gt;&amp;lt;?Php&lt;br/&gt;function check_email_address($email) {&lt;br/&gt;    // First, we check that there's one @ symbol, and that the lengths are right&lt;br/&gt;    if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {&lt;br/&gt;        // Email invalid because wrong number of characters in one section, or wrong number of @ symbols.&lt;br/&gt;        return false;&lt;br/&gt;    }&lt;br/&gt;    // Split it into sections to make life easier&lt;br/&gt;    $email_array = explode("@", $email);&lt;br/&gt;    $local_array = explode(".", $email_array[0]);&lt;br/&gt;    for ($i = 0; $i &amp;lt; sizeof($local_array); $i++) {&lt;br/&gt;         if (!ereg("^(([A-Za-z0-9!#$%&amp;amp;'*+/=?^_`{|}~-][A-Za-z0-9!#$%&amp;amp;'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) {&lt;br/&gt;            return false;&lt;br/&gt;        }&lt;br/&gt;    }    &lt;br/&gt;    if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name&lt;br/&gt;        $domain_array = explode(".", $email_array[1]);&lt;br/&gt;        if (sizeof($domain_array) &amp;lt; 2) {&lt;br/&gt;                return false; // Not enough parts to domain&lt;br/&gt;        }&lt;br/&gt;        for ($i = 0; $i &amp;lt; sizeof($domain_array); $i++) {&lt;br/&gt;            if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {&lt;br/&gt;                return false;&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;    return true;&lt;br/&gt;}&lt;br/&gt;?&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;Using the function above is relatively simple, as you can see:&lt;br/&gt;&lt;br/&gt;&lt;span style="color:#800000;"&gt;&amp;lt;?Php&lt;br/&gt;if (check_email_address($email)) {&lt;br/&gt;    echo $email . ' is a valid email address.';&lt;br/&gt;} else {&lt;br/&gt;    echo $email . ' is not a valid email address.';&lt;br/&gt;}&lt;br/&gt;?&amp;gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7967104085589652329-5529378477390438163?l=phpexpertprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexpertprogrammer.blogspot.com/feeds/5529378477390438163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7967104085589652329&amp;postID=5529378477390438163' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/5529378477390438163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/5529378477390438163'/><link rel='alternate' type='text/html' href='http://phpexpertprogrammer.blogspot.com/2008/07/php-email-address-validation.html' title='PHP Email Address Validation'/><author><name>ExpertsYard</name><uri>http://www.blogger.com/profile/13898690634078672108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='19' src='http://bp2.blogger.com/_Z7wbrC4BOnA/R6tV3KM9iuI/AAAAAAAAAAc/yFAWsqRPTQM/S220/experts_yard_logo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7967104085589652329.post-6935796969240340985</id><published>2008-07-29T14:34:00.000-07:00</published><updated>2009-03-16T05:35:09.674-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='class'/><category scheme='http://www.blogger.com/atom/ns#' term='free'/><category scheme='http://www.blogger.com/atom/ns#' term='Php Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Development'/><category scheme='http://www.blogger.com/atom/ns#' term='object'/><category scheme='http://www.blogger.com/atom/ns#' term='Php MySql'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><category scheme='http://www.blogger.com/atom/ns#' term='source code'/><category scheme='http://www.blogger.com/atom/ns#' term='oop'/><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>PHP MySQL Database Class</title><content type='html'>A class for very basic MySQL database connectivity. Written to reduce redundant code in my own projects aswell as aid in debugging and error reporting during the developement phase. Currently connects to a database, execute external files containing SQL commands, insert and update from an array of key =&amp;gt; value pairs, insert and update with sql command, query (one result), query (multiple rows), and dump a select query to a table. The zip file contains the class aswell as a demonstration script.&lt;br/&gt;&lt;br/&gt;Download Version 1.0.4: &lt;a href="http://www.micahcarrick.com/files/db-1.0.4.zip" target="_blank"&gt;&lt;span style="color:#b85b5a;"&gt;db-1.0.4.zip&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7967104085589652329-6935796969240340985?l=phpexpertprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexpertprogrammer.blogspot.com/feeds/6935796969240340985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7967104085589652329&amp;postID=6935796969240340985' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/6935796969240340985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/6935796969240340985'/><link rel='alternate' type='text/html' href='http://phpexpertprogrammer.blogspot.com/2008/07/php-mysql-database-class.html' title='PHP MySQL Database Class'/><author><name>ExpertsYard</name><uri>http://www.blogger.com/profile/13898690634078672108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='19' src='http://bp2.blogger.com/_Z7wbrC4BOnA/R6tV3KM9iuI/AAAAAAAAAAc/yFAWsqRPTQM/S220/experts_yard_logo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7967104085589652329.post-5747750884548307949</id><published>2008-07-29T13:36:00.000-07:00</published><updated>2009-03-16T05:35:09.622-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Php Codes'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP  script'/><category scheme='http://www.blogger.com/atom/ns#' term='Returning Array'/><category scheme='http://www.blogger.com/atom/ns#' term='getting more variables'/><category scheme='http://www.blogger.com/atom/ns#' term='Array from function'/><category scheme='http://www.blogger.com/atom/ns#' term='more than one return'/><title type='text'>Returning an array of variables from PHP function</title><content type='html'>From a function we can get back a set of variables by using an array. A function returns any variable to the main script by using return statement. Here we will try to return a set of variables by using an array. Our main script will receive the array and we will use while each statement to display all elements of an array.&lt;br/&gt;&lt;br/&gt;We will change a script a bit and try to pass ( as input ) a string to the function. This string we will break by using split command and create an array. This array we will return to main script for displaying.&lt;br/&gt;&lt;br/&gt;&amp;lt;?Php&lt;br/&gt;&lt;br/&gt;function test($my_string){&lt;br/&gt;// creating an array by split command&lt;br/&gt;$my_array=split(" ",$my_string);&lt;br/&gt;return $my_array; // returning the array&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;// sending a string to function as input //&lt;br/&gt;$collect_array=test("Hello welcome to plus2net");&lt;br/&gt;&lt;br/&gt;// displaying the elements of the collected array&lt;br/&gt;while (list ($key, $val) = each ($collect_array)) {&lt;br/&gt;echo "$key -&amp;gt; $val &amp;lt;br&amp;gt;";&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;?&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7967104085589652329-5747750884548307949?l=phpexpertprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexpertprogrammer.blogspot.com/feeds/5747750884548307949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7967104085589652329&amp;postID=5747750884548307949' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/5747750884548307949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/5747750884548307949'/><link rel='alternate' type='text/html' href='http://phpexpertprogrammer.blogspot.com/2008/07/returning-array-of-variables-from-php.html' title='Returning an array of variables from PHP function'/><author><name>ExpertsYard</name><uri>http://www.blogger.com/profile/13898690634078672108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='19' src='http://bp2.blogger.com/_Z7wbrC4BOnA/R6tV3KM9iuI/AAAAAAAAAAc/yFAWsqRPTQM/S220/experts_yard_logo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7967104085589652329.post-5141045912769804232</id><published>2008-07-28T13:14:00.000-07:00</published><updated>2009-03-16T05:35:09.591-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Easy design integration'/><category scheme='http://www.blogger.com/atom/ns#' term='credit card processing'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML editor'/><category scheme='http://www.blogger.com/atom/ns#' term='PayPal Pro'/><category scheme='http://www.blogger.com/atom/ns#' term='Real-time'/><category scheme='http://www.blogger.com/atom/ns#' term='Search Engine friendly'/><category scheme='http://www.blogger.com/atom/ns#' term='skin templates'/><category scheme='http://www.blogger.com/atom/ns#' term='Cost-effective'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Checkout'/><category scheme='http://www.blogger.com/atom/ns#' term='shopping cart'/><category scheme='http://www.blogger.com/atom/ns#' term='ecommerce'/><category scheme='http://www.blogger.com/atom/ns#' term='Php Shopping Carts'/><title type='text'>Turnkey PHP shopping cart software</title><content type='html'>&lt;li class="benefits"&gt;Complete ready-to-run PHP shopping cart software&lt;/li&gt;&lt;br/&gt;	&lt;li class="benefits"&gt;No programming required&lt;/li&gt;&lt;br/&gt;	&lt;li class="benefits"&gt;Cost-effective&lt;/li&gt;&lt;br/&gt;	&lt;li class="benefits"&gt;All major ecommerce features&lt;/li&gt;&lt;br/&gt;	&lt;li class="benefits"&gt;Easy design integration in any HTML editor&lt;/li&gt;&lt;br/&gt;	&lt;li class="benefits"&gt;A set of ready-to-use skin templates included&lt;/li&gt;&lt;br/&gt;	&lt;li class="benefits"&gt;Search Engine friendly&lt;/li&gt;&lt;br/&gt;	&lt;li class="benefits"&gt;Online credit card processing&lt;/li&gt;&lt;br/&gt;	&lt;li class="benefits"&gt;Integrated with Google Checkout and PayPal Pro&lt;/li&gt;&lt;br/&gt;	&lt;li class="benefits"&gt;Real-time shipping quotes&lt;/li&gt;&lt;br/&gt;	&lt;li class="benefits"&gt;Order notifications by email and SMS&lt;/li&gt;&lt;br/&gt;	&lt;li class="benefits"&gt;Easy localization&lt;/li&gt;&lt;br/&gt;	&lt;li class="benefits"&gt;Free installation service&lt;/li&gt;&lt;br/&gt;	&lt;li class="benefits"&gt;Free 24/7 customer support&lt;/li&gt;&lt;br/&gt;&lt;p class="benefits"&gt;WEBSITE: &lt;a href="http://www.shop-script.com/"&gt;http://www.shop-script.com/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7967104085589652329-5141045912769804232?l=phpexpertprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexpertprogrammer.blogspot.com/feeds/5141045912769804232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7967104085589652329&amp;postID=5141045912769804232' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/5141045912769804232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/5141045912769804232'/><link rel='alternate' type='text/html' href='http://phpexpertprogrammer.blogspot.com/2008/07/turnkey-php-shopping-cart-software.html' title='Turnkey PHP shopping cart software'/><author><name>ExpertsYard</name><uri>http://www.blogger.com/profile/13898690634078672108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='19' src='http://bp2.blogger.com/_Z7wbrC4BOnA/R6tV3KM9iuI/AAAAAAAAAAc/yFAWsqRPTQM/S220/experts_yard_logo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7967104085589652329.post-1201228083510266047</id><published>2008-07-24T14:39:00.000-07:00</published><updated>2009-03-16T05:35:09.499-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reliable'/><category scheme='http://www.blogger.com/atom/ns#' term='Php CMS'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Content Management Systems'/><category scheme='http://www.blogger.com/atom/ns#' term='Joomla'/><title type='text'>Joomla - Cutting Edge Content Management</title><content type='html'>[caption id="attachment_11" align="alignleft" width="165" caption="Joomla"]&lt;a href="http://phpexpertprogrammer.files.wordpress.com/2008/07/powered_by1.png"&gt;&lt;img class="size-full wp-image-11" src="http://phpexpertprogrammer.files.wordpress.com/2008/07/powered_by1.png" alt="Joomla" width="165" height="68" /&gt;&lt;/a&gt;[/caption]&lt;br/&gt;&lt;br/&gt;Joomla! is one of the most powerful Open Source Content Management Systems on the planet. It is used all over the world for everything from simple websites to complex corporate applications. Joomla! is easy to install, simple to manage, and reliable.&lt;br/&gt;&lt;br/&gt;Joomla! is different from the normal models for content management software. For a start, it's not complicated. Joomla! has been developed for everybody, and anybody can develop it further. It is designed to work (primarily) with other Open Source, free, software such as PHP, MySQL, and Apache.&lt;br/&gt;&lt;br/&gt;It is easy to install and administer, and is reliable.&lt;br/&gt;&lt;br/&gt;Joomla! doesn't even require the user or administrator of the system to know HTML to operate it once it's up and running.&lt;br/&gt;&lt;br/&gt;To get the perfect Web site with all the functionality that you require for your particular application may take additional time and effort, but with the Joomla! Community support that is available and the many Third Party Developers actively creating and releasing new Extensions for the 1.5 platform on an almost daily basis, there is likely to be something out there to meet your needs. Or you could develop your own Extensions and make these available to the rest of the community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7967104085589652329-1201228083510266047?l=phpexpertprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexpertprogrammer.blogspot.com/feeds/1201228083510266047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7967104085589652329&amp;postID=1201228083510266047' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/1201228083510266047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/1201228083510266047'/><link rel='alternate' type='text/html' href='http://phpexpertprogrammer.blogspot.com/2008/07/joomla-cutting-edge-content-management.html' title='Joomla - Cutting Edge Content Management'/><author><name>ExpertsYard</name><uri>http://www.blogger.com/profile/13898690634078672108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='19' src='http://bp2.blogger.com/_Z7wbrC4BOnA/R6tV3KM9iuI/AAAAAAAAAAc/yFAWsqRPTQM/S220/experts_yard_logo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7967104085589652329.post-3468240670952012583</id><published>2008-07-23T13:26:00.000-07:00</published><updated>2009-03-16T05:35:09.410-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='multiple categories'/><category scheme='http://www.blogger.com/atom/ns#' term='floating events'/><category scheme='http://www.blogger.com/atom/ns#' term='mySQL database support'/><category scheme='http://www.blogger.com/atom/ns#' term='recurring events'/><category scheme='http://www.blogger.com/atom/ns#' term='Single events'/><category scheme='http://www.blogger.com/atom/ns#' term='Mouseover events'/><category scheme='http://www.blogger.com/atom/ns#' term='easily integrated'/><category scheme='http://www.blogger.com/atom/ns#' term='Customizable'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP Calendar'/><category scheme='http://www.blogger.com/atom/ns#' term='Flat-file database support'/><category scheme='http://www.blogger.com/atom/ns#' term='calendar script'/><category scheme='http://www.blogger.com/atom/ns#' term='popup events'/><category scheme='http://www.blogger.com/atom/ns#' term='customize'/><category scheme='http://www.blogger.com/atom/ns#' term='Php Controls'/><title type='text'>Easy PHP Calendar</title><content type='html'>The Easy PHP Calendar is a powerful PHP calendar script that is easily integrated into web sites and is simple to customize. This attractive, full-featured calendar is suitable for display on a calendar of events page, home page, or any other page that needs a calendar.&lt;br/&gt;&lt;pre&gt;* The Easy PHP Calendar was formerly known as the Easily Simple Calendar.&lt;/pre&gt;&lt;br/&gt;&lt;h2&gt;Key Features:&lt;/h2&gt;&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;mySQL database support&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Flat-file database support - No mySQL server required!&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Single events, recurring events and floating events plus multiple categories&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Complete and easy event and setup administration&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Mouse-over and pop-up event details&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Customizable categories and multiple event administrators&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Rich event descriptions including font sizes/colors and images&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;and much more...&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;With the Easy PHP Calendar, you can easily customize colors, font sizes, table sizes and more by adjusting a single CSS file. It's simple to take complete control over the PHP calendar's looks and how it interacts with users! With support for multiple date, time and language formats, the Easy PHP Calendar can be used for anywhere in the world!&lt;br/&gt;&lt;br/&gt;The Easy PHP Calendar is well-supported through the user forums. Take your time to view the online demonstration, download a free trial version, and you'll see that the Easy PHP Calendar is the PHP calendar script for you!&lt;br/&gt; &lt;br/&gt;&lt;a title="Download" href="http://www.easyphpcalendar.com/files/tester.zip" target="_blank"&gt;DOWNLOAD&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7967104085589652329-3468240670952012583?l=phpexpertprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexpertprogrammer.blogspot.com/feeds/3468240670952012583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7967104085589652329&amp;postID=3468240670952012583' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/3468240670952012583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/3468240670952012583'/><link rel='alternate' type='text/html' href='http://phpexpertprogrammer.blogspot.com/2008/07/easy-php-calendar.html' title='Easy PHP Calendar'/><author><name>ExpertsYard</name><uri>http://www.blogger.com/profile/13898690634078672108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='19' src='http://bp2.blogger.com/_Z7wbrC4BOnA/R6tV3KM9iuI/AAAAAAAAAAc/yFAWsqRPTQM/S220/experts_yard_logo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7967104085589652329.post-7175201050141038799</id><published>2008-07-07T13:15:00.000-07:00</published><updated>2009-03-16T05:35:09.324-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Php MySql'/><category scheme='http://www.blogger.com/atom/ns#' term='Selecting'/><category scheme='http://www.blogger.com/atom/ns#' term='Table'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Record'/><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>Selecting random record from MySQL database table</title><content type='html'>&lt;div class="content"&gt;&lt;br/&gt;&lt;br/&gt;The simplest way of selecting random rows from the MySQL database is to use "ORDER BY RAND()" clause in the query.&lt;br/&gt;&lt;br/&gt;&lt;dl&gt;&lt;dt&gt;Solution 1 [SQL] &lt;/dt&gt;&lt;dd&gt;&lt;span style="color:#800000;"&gt;&lt;code&gt;SELECT * FROM `table` ORDER BY RAND() LIMIT 0,1;&lt;/code&gt; &lt;/span&gt;&lt;/dd&gt;&lt;/dl&gt;The problem with this method is that it is very slow. The reason for it being so slow is that MySQL creates a temporary table with all the result rows and assigns each one of them a random sorting index. The results are then sorted and returned.&lt;br/&gt;&lt;br/&gt;There are several workarounds to speed things up.&lt;br/&gt;&lt;br/&gt;The basic idea is to get a random number and then select a specific row using this number.&lt;br/&gt;&lt;br/&gt;In the case that all the rows have unique ids we will just have to pick a random number between the smallest and the biggest id and then select the row with id that equals that number. To make this method work when ids are not evenly distributed we will have to use "&amp;gt;=" operator instead of "=" in the last query.&lt;br/&gt;&lt;br/&gt;To get the minimum and maximum id values in the entire table we will use MAX() and MIN() aggregate functions. These functions will return minimum and maximum value in the specified group. The group in our case is all the values of `id` column in our table.&lt;br/&gt;&lt;br/&gt;&lt;dl&gt;&lt;dt&gt;Solution 2 [PHP] &lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;span style="color:#800000;"&gt;$range_result = mysql_query( " SELECT MAX(`id`) AS max_id , MIN(`id`) AS min_id FROM `table` ");&lt;br/&gt;$range_row = mysql_fetch_object( $range_result );&lt;br/&gt;$random = mt_rand( $range_row-&amp;gt;min_id , $range_row-&amp;gt;max_id );&lt;br/&gt;$result = mysql_query( " SELECT * FROM `table` WHERE `id` &amp;gt;= $random LIMIT 0,1 "); &lt;/span&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;As we mentioned this method is limited to tables with unique id for each row. What to do if it's not the case?&lt;br/&gt;&lt;br/&gt;The solution is to use the MySQL LIMIT clause. LIMIT accepts two arguments. The first argument specifies the offset of the first row to return, and the second specifies the maximum number of rows to return. The offset of the initial row is 0 (not 1).&lt;br/&gt;&lt;br/&gt;To calculate the offset to the first row we will generate a random number between 0 and 1 using MySQL's RAND() function. Then we will multiply this number by number of records in the table, which we will get using COUNT() function. Since LIMIT arguments must be integers and not float values we will round the resulting number using FLOOR() function. FLOOR() is an arithmetic function that calculates the largest integer value that is smaller than or equal to the expression. The resulting code will look like this:&lt;br/&gt;&lt;br/&gt;&lt;dl&gt;&lt;dt&gt;Solution 3 [PHP] &lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;span style="color:#800000;"&gt;$offset_result = mysql_query( " SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `table` ");&lt;br/&gt;$offset_row = mysql_fetch_object( $offset_result );&lt;br/&gt;$offset = $offset_row-&amp;gt;offset;&lt;br/&gt;$result = mysql_query( " SELECT * FROM `table` LIMIT $offset, 1 " ); &lt;/span&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;In MySQL 4.1 and later we can combine two previous methods using subquery like so:&lt;br/&gt;&lt;br/&gt;&lt;dl&gt;&lt;dt&gt;Solution 4 [SQL] &lt;/dt&gt;&lt;dd&gt;&lt;span style="color:#800000;"&gt;&lt;code&gt;SELECT * FROM `table` WHERE id &amp;gt;= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;&lt;/code&gt; &lt;/span&gt;&lt;/dd&gt;&lt;dd&gt;&lt;/dd&gt;&lt;/dl&gt;This solution has the same weakness as the solution 2 e.g. it only works for tables with unique ids.&lt;br/&gt;&lt;br/&gt;Remember the reason we started looked for alternative ways of selecting random rows? Speed! So how do these methods compare in terms of execution times. I am not going to go into specifics of hardware and software configuration or give precise numbers. The approximate results are:&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;The slowest method is solution 1. Let's say that it took 100% of time to execute.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Solution 2 took 79%.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Solution 3 - 13%.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Solution 4 - 16%.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;The winner is solution 3.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7967104085589652329-7175201050141038799?l=phpexpertprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexpertprogrammer.blogspot.com/feeds/7175201050141038799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7967104085589652329&amp;postID=7175201050141038799' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/7175201050141038799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/7175201050141038799'/><link rel='alternate' type='text/html' href='http://phpexpertprogrammer.blogspot.com/2008/07/selecting-random-record-from-mysql.html' title='Selecting random record from MySQL database table'/><author><name>ExpertsYard</name><uri>http://www.blogger.com/profile/13898690634078672108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='19' src='http://bp2.blogger.com/_Z7wbrC4BOnA/R6tV3KM9iuI/AAAAAAAAAAc/yFAWsqRPTQM/S220/experts_yard_logo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7967104085589652329.post-1627968303199743019</id><published>2008-07-04T13:35:00.000-07:00</published><updated>2009-03-16T05:35:09.281-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Progress Bar'/><category scheme='http://www.blogger.com/atom/ns#' term='File Upload'/><category scheme='http://www.blogger.com/atom/ns#' term='Drag and Drop'/><category scheme='http://www.blogger.com/atom/ns#' term='Php Controls'/><title type='text'>Drag N Drop File Upload With Progress Bar</title><content type='html'>&lt;p class="indented"&gt;Make your site more user friendly. With Rad Upload's drag and drop functionality, your visitors can transfer files to your server just as easily as copying from one folder to another.&lt;/p&gt;&lt;br/&gt;&lt;p class="indented"&gt;The lite edition is available for &lt;a class="alignleft" title="Drag and Drop File Upload with Progress Bar" href="http://www.radinks.com/downloads/raduploadlite.zip" target="_blank"&gt;free download&lt;/a&gt;. It does not expire and contains most of the features of the standard edition. Rad Upload Plus has many advanced features such as client side filtering and on the fly GZip compression.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7967104085589652329-1627968303199743019?l=phpexpertprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexpertprogrammer.blogspot.com/feeds/1627968303199743019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7967104085589652329&amp;postID=1627968303199743019' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/1627968303199743019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/1627968303199743019'/><link rel='alternate' type='text/html' href='http://phpexpertprogrammer.blogspot.com/2008/07/drag-n-drop-file-upload-with-progress.html' title='Drag N Drop File Upload With Progress Bar'/><author><name>ExpertsYard</name><uri>http://www.blogger.com/profile/13898690634078672108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='19' src='http://bp2.blogger.com/_Z7wbrC4BOnA/R6tV3KM9iuI/AAAAAAAAAAc/yFAWsqRPTQM/S220/experts_yard_logo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7967104085589652329.post-1018970659888625539</id><published>2008-07-04T13:13:00.000-07:00</published><updated>2009-03-16T05:35:09.257-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Images'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Captcha'/><category scheme='http://www.blogger.com/atom/ns#' term='Anti Spamming'/><category scheme='http://www.blogger.com/atom/ns#' term='Php Security'/><title type='text'>PHP Captcha Security Images for Anti Spamming</title><content type='html'>&lt;pre&gt;&lt;span class="hl-inlinetags"&gt;&amp;lt;?php&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span class="hl-identifier"&gt;session_start&lt;/span&gt;&lt;span class="hl-brackets"&gt;()&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span class="hl-comment"&gt;/*&lt;br/&gt;* File: CaptchaSecurityImages.php&lt;br/&gt;* Author: Simon Jarvis&lt;br/&gt;* Copyright: 2006 Simon Jarvis&lt;br/&gt;* Date: 03/08/06&lt;br/&gt;* Updated: 07/02/07&lt;br/&gt;* Requirements: PHP 4/5 with GD and FreeType libraries&lt;br/&gt;* Link: &lt;/span&gt;&lt;span class="hl-url"&gt;http://www.white-hat-web-design.co.uk/articles/php-captcha.php&lt;/span&gt;&lt;span class="hl-comment"&gt;&lt;br/&gt;* &lt;br/&gt;* This program is free software; you can redistribute it and/or &lt;br/&gt;* modify it under the terms of the GNU General Public License &lt;br/&gt;* as published by the Free Software Foundation; either version 2 &lt;br/&gt;* of the License, or (at your option) any later version.&lt;br/&gt;* &lt;br/&gt;* This program is distributed in the hope that it will be useful, &lt;br/&gt;* but WITHOUT ANY WARRANTY; without even the implied warranty of &lt;br/&gt;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the &lt;br/&gt;* GNU General Public License for more details: &lt;br/&gt;* &lt;/span&gt;&lt;span class="hl-url"&gt;http://www.gnu.org/licenses/gpl.html&lt;/span&gt;&lt;span class="hl-comment"&gt;&lt;br/&gt;*&lt;br/&gt;*/&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span class="hl-reserved"&gt;class&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-identifier"&gt;CaptchaSecurityImages&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-brackets"&gt;{&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;&lt;br/&gt;   &lt;/span&gt;&lt;span class="hl-reserved"&gt;var&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-var"&gt;$font&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;monofont.ttf&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;&lt;br/&gt;   &lt;/span&gt;&lt;span class="hl-reserved"&gt;function&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-identifier"&gt;generateCode&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$characters&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-brackets"&gt;{&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-comment"&gt;/* list all possible characters, similar looking characters and vowels have been removed */&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-var"&gt;$possible&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;23456789bcdfghjkmnpqrstvwxyz&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-var"&gt;$code&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-quotes"&gt;''&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-var"&gt;$i&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-reserved"&gt;while&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$i&lt;/span&gt;&lt;span class="hl-code"&gt; &amp;lt; &lt;/span&gt;&lt;span class="hl-var"&gt;$characters&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-brackets"&gt;{&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;br/&gt;         &lt;/span&gt;&lt;span class="hl-var"&gt;$code&lt;/span&gt;&lt;span class="hl-code"&gt; .= &lt;/span&gt;&lt;span class="hl-identifier"&gt;substr&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$possible&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-identifier"&gt;mt_rand&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-identifier"&gt;strlen&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$possible&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;-&lt;/span&gt;&lt;span class="hl-number"&gt;1&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;1&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;         &lt;/span&gt;&lt;span class="hl-var"&gt;$i&lt;/span&gt;&lt;span class="hl-code"&gt;++;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-brackets"&gt;}&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-reserved"&gt;return&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-var"&gt;$code&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;   &lt;/span&gt;&lt;span class="hl-brackets"&gt;}&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;&lt;br/&gt;   &lt;/span&gt;&lt;span class="hl-reserved"&gt;function&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-identifier"&gt;CaptchaSecurityImages&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$width&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;120&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-var"&gt;$height&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;40&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-var"&gt;$characters&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;6&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-brackets"&gt;{&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-var"&gt;$code&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-var"&gt;$this&lt;/span&gt;&lt;span class="hl-code"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="hl-identifier"&gt;generateCode&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$characters&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-comment"&gt;/* font size will be 75% of the image height */&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-var"&gt;$font_size&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-var"&gt;$height&lt;/span&gt;&lt;span class="hl-code"&gt; * &lt;/span&gt;&lt;span class="hl-number"&gt;0.75&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-var"&gt;$image&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-identifier"&gt;imagecreate&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$width&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-var"&gt;$height&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-reserved"&gt;or&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-reserved"&gt;die&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;Cannot initialize new GD image stream&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-comment"&gt;/* set the colours */&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-var"&gt;$background_color&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-identifier"&gt;imagecolorallocate&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$image&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;255&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;255&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;255&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-var"&gt;$text_color&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-identifier"&gt;imagecolorallocate&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$image&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;20&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;40&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;100&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-var"&gt;$noise_color&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-identifier"&gt;imagecolorallocate&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$image&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;100&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;120&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;180&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-comment"&gt;/* generate random dots in background */&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-reserved"&gt;for&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-var"&gt;$i&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-var"&gt;$i&lt;/span&gt;&lt;span class="hl-code"&gt;&amp;lt;&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$width&lt;/span&gt;&lt;span class="hl-code"&gt;*&lt;/span&gt;&lt;span class="hl-var"&gt;$height&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;/&lt;/span&gt;&lt;span class="hl-number"&gt;3&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-var"&gt;$i&lt;/span&gt;&lt;span class="hl-code"&gt;++ &lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-brackets"&gt;{&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;         &lt;/span&gt;&lt;span class="hl-identifier"&gt;imagefilledellipse&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$image&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-identifier"&gt;mt_rand&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-var"&gt;$width&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-identifier"&gt;mt_rand&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-var"&gt;$height&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;1&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;1&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-var"&gt;$noise_color&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-brackets"&gt;}&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-comment"&gt;/* generate random lines in background */&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-reserved"&gt;for&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-var"&gt;$i&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-var"&gt;$i&lt;/span&gt;&lt;span class="hl-code"&gt;&amp;lt;&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$width&lt;/span&gt;&lt;span class="hl-code"&gt;*&lt;/span&gt;&lt;span class="hl-var"&gt;$height&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;/&lt;/span&gt;&lt;span class="hl-number"&gt;150&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-var"&gt;$i&lt;/span&gt;&lt;span class="hl-code"&gt;++ &lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-brackets"&gt;{&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;         &lt;/span&gt;&lt;span class="hl-identifier"&gt;imageline&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$image&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-identifier"&gt;mt_rand&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-var"&gt;$width&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-identifier"&gt;mt_rand&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-var"&gt;$height&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-identifier"&gt;mt_rand&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-var"&gt;$width&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-identifier"&gt;mt_rand&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-var"&gt;$height&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-var"&gt;$noise_color&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-brackets"&gt;}&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-comment"&gt;/* create textbox and add text */&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-var"&gt;$textbox&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-identifier"&gt;imagettfbbox&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$font_size&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-var"&gt;$this&lt;/span&gt;&lt;span class="hl-code"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="hl-identifier"&gt;font&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-var"&gt;$code&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-reserved"&gt;or&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-reserved"&gt;die&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;Error in imagettfbbox function&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-var"&gt;$x&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$width&lt;/span&gt;&lt;span class="hl-code"&gt; - &lt;/span&gt;&lt;span class="hl-var"&gt;$textbox&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-number"&gt;4&lt;/span&gt;&lt;span class="hl-brackets"&gt;])&lt;/span&gt;&lt;span class="hl-code"&gt;/&lt;/span&gt;&lt;span class="hl-number"&gt;2&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-var"&gt;$y&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$height&lt;/span&gt;&lt;span class="hl-code"&gt; - &lt;/span&gt;&lt;span class="hl-var"&gt;$textbox&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-number"&gt;5&lt;/span&gt;&lt;span class="hl-brackets"&gt;])&lt;/span&gt;&lt;span class="hl-code"&gt;/&lt;/span&gt;&lt;span class="hl-number"&gt;2&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-identifier"&gt;imagettftext&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$image&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-var"&gt;$font_size&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-var"&gt;$x&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-var"&gt;$y&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-var"&gt;$text_color&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-var"&gt;$this&lt;/span&gt;&lt;span class="hl-code"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="hl-identifier"&gt;font&lt;/span&gt;&lt;span class="hl-code"&gt; , &lt;/span&gt;&lt;span class="hl-var"&gt;$code&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-reserved"&gt;or&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-reserved"&gt;die&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;Error in imagettftext function&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-comment"&gt;/* output captcha image to browser */&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-identifier"&gt;header&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;Content-Type: image/jpeg&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-identifier"&gt;imagejpeg&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$image&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-identifier"&gt;imagedestroy&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$image&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;      &lt;/span&gt;&lt;span class="hl-var"&gt;$_SESSION&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;security_code&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-var"&gt;$code&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;   &lt;/span&gt;&lt;span class="hl-brackets"&gt;}&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span class="hl-brackets"&gt;}&lt;/span&gt;&lt;span class="hl-code"&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span class="hl-var"&gt;$width&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-reserved"&gt;isset&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$_GET&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;width&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;])&lt;/span&gt;&lt;span class="hl-code"&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span class="hl-var"&gt;$_GET&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;height&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt; &amp;lt; &lt;/span&gt;&lt;span class="hl-number"&gt;600&lt;/span&gt;&lt;span class="hl-code"&gt; ? &lt;/span&gt;&lt;span class="hl-var"&gt;$_GET&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;width&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt; : &lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;120&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span class="hl-var"&gt;$height&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-reserved"&gt;isset&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$_GET&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;height&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;])&lt;/span&gt;&lt;span class="hl-code"&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span class="hl-var"&gt;$_GET&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;height&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt; &amp;lt; &lt;/span&gt;&lt;span class="hl-number"&gt;200&lt;/span&gt;&lt;span class="hl-code"&gt; ? &lt;/span&gt;&lt;span class="hl-var"&gt;$_GET&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;height&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt; : &lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;40&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span class="hl-var"&gt;$characters&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-reserved"&gt;isset&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$_GET&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;characters&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;])&lt;/span&gt;&lt;span class="hl-code"&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span class="hl-var"&gt;$_GET&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;characters&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt; &amp;gt; &lt;/span&gt;&lt;span class="hl-number"&gt;2&lt;/span&gt;&lt;span class="hl-code"&gt; ? &lt;/span&gt;&lt;span class="hl-var"&gt;$_GET&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;characters&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt; : &lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;6&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span class="hl-var"&gt;$captcha&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-reserved"&gt;new&lt;/span&gt;&lt;span class="hl-code"&gt; &lt;/span&gt;&lt;span class="hl-identifier"&gt;CaptchaSecurityImages&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-var"&gt;$width&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-var"&gt;$height&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-var"&gt;$characters&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span class="hl-inlinetags"&gt;?&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="hl-inlinetags"&gt;&lt;a class="alignleft" title="Php Captcha Security Images" href="http://www.white-hat-web-design.co.uk/articles/captcha.zip" target="_blank"&gt;Download Link&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7967104085589652329-1018970659888625539?l=phpexpertprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexpertprogrammer.blogspot.com/feeds/1018970659888625539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7967104085589652329&amp;postID=1018970659888625539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/1018970659888625539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7967104085589652329/posts/default/1018970659888625539'/><link rel='alternate' type='text/html' href='http://phpexpertprogrammer.blogspot.com/2008/07/php-captcha-security-images-for-anti.html' title='PHP Captcha Security Images for Anti Spamming'/><author><name>ExpertsYard</name><uri>http://www.blogger.com/profile/13898690634078672108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='19' src='http://bp2.blogger.com/_Z7wbrC4BOnA/R6tV3KM9iuI/AAAAAAAAAAc/yFAWsqRPTQM/S220/experts_yard_logo.jpg'/></author><thr:total>0</thr:total></entry></feed>
