tag:blogger.com,1999:blog-11553357778824380662009-02-21T08:59:56.617-08:00ProjectSkyLine - follow the start up.Follow the start up known as ProjectSkyLine through the valleys of peaks of business.ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.comBlogger18125tag:blogger.com,1999:blog-1155335777882438066.post-91648479593158382442007-09-11T19:52:00.000-07:002007-09-11T19:59:16.847-07:00Doing it and doing it and doing it ...WELL!We are back!<br /><br />Fresh with another launch, A1Infrared.com is alive and kicking. After a little fussing with <a href="http://www.hostgator.com">HostGator</a>, <blockquote>I believe that is unacceptable</blockquote><blockquote></blockquote><blockquote></blockquote>we were able to get ionCube Encoder working. Yes, we do support open source, but our core framework libraries are not open source. So, we want to give thanks to HostGator for meeting our requirements.<br /><br />In other news, we are moving strong with Lease2Buy, approaching the finish line. With the last cup of Gatorade crushed and dropped a few miles back, we are leading the marathon. See, most of the other web companies start off fast, but they're quickly wheezing in the back. Not us, not here at ProjectSkyLine. We set a pace and keep to it. In fact, we're starting to set a pace for a lot of *stuff* that's going on. We going strong.<br /><br />Keep in touch.<br /><br /><span style="color: rgb(255, 204, 153);">- psl</span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-9164847959315838244?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0tag:blogger.com,1999:blog-1155335777882438066.post-20587363805693635962007-08-15T18:19:00.000-07:002007-08-15T18:53:01.262-07:00Skillings & Sons Website LaunchAfter nearly 3 weeks of programming, graphic design, ajax debugging, a custom gallery and countless trips through <a href="http://www.istockphoto.com/">iStockPhoto</a>, we are proud to launch <a href="http://www.skillingsandsons.com/">Skillings & Sons</a>' corporate website.<br /><br />This launch marks the culmination of nearly 6 months of joint effort by <a href="http://www.google.com/search?q=Ben+Sgro&amp;amp;ie=utf-8&oe=utf-8&amp;aq=t&rls=org.mozilla:en-US:official&amp;client=firefox-a">Ben Sgro</a> (President), Devin Bousquet (Vice President), Diana Melgarego (Finance Director) of <a href="http://www.projectskyline.com/">ProjectSkyLine LLC</a> and Brandi Coulter (Marketing Manager & website liaison) of Skillings &amp; Sons.<br /><br />In an on going effort to support the online needs of Skillings & Sons, we are providing hosting support in conjunction with <a href="http://www.nexcess.net/">Nexcess</a>, and managing a robust online marketing plan with the assistance of Matt VanWager of <a href="http://www.findmefaster.com/">FindMeFaster</a>.<br /><br />(Matt will be speaking at <a href="http://www.semne.org/">SEMNE </a>on Sept 11, check if out if your around!)<br /><br />The new Skillings &amp; Sons site exhibits a terrific user-interface (UI) design, fueled by the artistic excellence of Devin Bousquet. The tabbed interface provides a simple to navigate and user friendly interface for Skillings' target demographic.<br /><br />::tech note:: The original tabbed interface used Ajax to load the content, which worked fine. We use CSS to control the mouse over attributes and we chose to have the state of "on" (the currently loaded page) be represented with a specific color. Since the CSS had to be redrawn and sent along with the Ajax, we soon found out that you CANNOT do this IE. Smooth.<br />We removed this feature and went with something that worked cross browser. We'll get into more of the technical aspect of this at a later date.<br /><br />The site also sports a "search" ability, which is powered by MySQL fulltext indexing. It works well, but will be receiving a tune in the approaching days.<br /><br />ProjectSkyLine built ajax drop down menus to highlight (and hide) specific data. In conjunction with the scriptaculous javascript library, we've added fluid motion to the drop down of these menus. We've also used the scriptaculous library to selectively highlight important messages within the site. In keeping with a smooth and memorable user experience, we are using cookies to keep track of the state of the drop down menus. Meaning, when a user navigates away from a page and then returns, the drop down is in the same state as they left it. Terrrrrrrific!<br /><br />Another thing**** we learned while building our custom image gallery (powered by scriptaculous and Ajax) is that IE on VISTA (NOT XP) does not allow you to rewrite a cookie<br />multiple times without a page refresh. Sheesh.<br /><br />::tech note:: Our original image gallery design was suppose to be modular enough that it could be both 1) used again and 2) released as open source. To maintain state (if the user leaves and then returns) we used cookies. However, we soon found out IE7 on Vista doesn't allow cookies to be written more than once. On IE7-XP & FF-XP &amp; FF-Vista this technique worked. So, what's the reason ...? We checked and altered the browser security settings to see if that effected it, adding out development server to the list of "ok" sites, and lowering security to exploit enticing levels. heh. Nothing. So, we rolled back the code to instead of cookies, use sessions. Those HAD to work. And they did. For those that are interested, the source to the gallery will be made open shortly.<br /><br />Skillings & Sons is full of other subtle design features that make it clear why ProjectSkyLine LLC is moving on up and setting some triumphant trends.<br /><br /><span style="color: rgb(255, 153, 102);">- psl</span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-2058736380569363596?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0tag:blogger.com,1999:blog-1155335777882438066.post-23683198667490181172007-08-01T16:30:00.001-07:002007-08-01T17:33:25.288-07:00ProjectSkyLine deploys Halftime Magazine & matching WebsiteYup, its true! Our magazine creator, Brian Cain, has been working tirelessly with Devin, ProjectSkyLine's creative director in preperation of <a href="http://www.halftimemagz.com/">Half/Time Magazine's</a> 4th release.<br />For those of you whom are not familiar with Half/Time Magazine, read on:<br /><br />H/T Magazine is an indepently published and voluntarily fueled magazine of uplifting stories, inspirational artwork and candid interviews. Check out the <a href="http://www.projectskyline.com/pdf/halftime_I4_V4_sample.pdf">sample chapter</a>.<br />We'd like to commend Devin on a job well done!<br /><br />In other news, we've began work on a complete revamp of <a href="http://www.lease2buy.com/">Lease2Buy.com</a>. This website held a #1 position on google for lease 2 buy and rent to own homes. However, Rob, the owner, really wanted to spruce up the visitors experiance. Devin has constructed a new logo, new layout, new buttons, new typography..hell, nothing is really left except the content..and we've even improved that! Stay tuned for the launch later this month!<br /><br />We're approaching our release date for the Skillings & Sons new website. We've been working hard on this and will present a detailed case study with the release.<br /><br />We've also added a new employee, Chris Lyght, a part-time web developer. Chris brings experiance in graphic design, programming and sales. We look forward to seeing Chris's work<br />on Lease2Buy, as he is the lead programmer on this project.<br /><br />More to come, more to come.<br /><br /><span style="color:#ff6600;">- psl</span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-2368319866749018117?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0tag:blogger.com,1999:blog-1155335777882438066.post-34221214889682013072007-06-29T07:50:00.000-07:002007-06-29T08:02:08.868-07:00Joomla, XSS and Obfuscated CodeHello again,<br /><br />Yesterday, our chief engineer Ben, came about an interesting backdoor php script that a friend off irc was talking about. He was studying the joomla source, prior to implementation, and found that tons of joomla sites had been owned with a XSS used to load the r57shell php script.<br /><br />We've included a copy of the script here for educational purposes: http://www.projectskyline.com/phplist/r57shell.txt<br /><br />Ben went and posted this information to the NYPHPlist to provide fellow developers<br />an insight into the tools crackers are using against us.<br /><br />A member of the PHPList pointed out that the script has some backdoor, author alerting features: http://seclists.org/fulldisclosure/2006/Sep/0083.html<br /><br />Ben decided to base64_decode( ) the obfuscated variables and see what kinds of programs the<br />shellscript was building and executing.<br /><br />The first section of code is that of the author alert...this provides the author w/the ip of the owned machine.<br /><br />Ben then went ahead and decode the programs...a link to them is here:<br />http://www.projectskyline.com/phplist/test.php<br /><br />Can't trust those russians!<br /><br />- <span style="color: rgb(255, 153, 0);">psl</span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-3422121488968201307?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com1tag:blogger.com,1999:blog-1155335777882438066.post-78008968650027371752007-05-30T07:31:00.000-07:002007-05-30T14:38:59.268-07:00I'm out for Presidents to represent me.Greetings,<br /><br />The ProjectSkyLine executives just returned from an extended stay in the beautiful presidential mountain range of NH. Photos and more are located at <a href="http://www.flickr.com/photos/projectskyline/sets/72157600287717659/">flickr</a>.<br /><br />After a nice hiatus, we are returning full force and moving forward with StoryXchange, our premiere skunk works project. In tandem, we are also delving deeper into the development of WARP2.<br /><br />Oh, yes, we are also proud to announce our business arrangement with Skillings & Sons, to both create their online presence and managing their online marketing campaign. You can read the <a href="http://www.projectskyline.com/pdf/pk_pressrelease.pdf">press release</a>.<br /><br />We look forward to a very exciting June!<br /><br /><span style="color: rgb(255, 102, 0);">- psl</span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-7800896865002737175?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0tag:blogger.com,1999:blog-1155335777882438066.post-39770689892177467812007-05-11T18:39:00.000-07:002007-05-11T18:58:06.456-07:00Google to police the net, ProjectSkyLine to write better codeGreetings,<br /><br />Yup, totally unrelated. Google will begin to police the net and we will write better code. As you know, we started the port from PHP4 to OOP PHP5, along with using a MVC inspired design and smarty templates. All great things.<i><br /><br /></i>We just read in a slashdot post that:<i><br /><br />For some time now, searches have displayed 'this site may harm your computer' when Google has tagged a site as containing malware. Now the search engine giant is is further publicizing the level of infection in a paper titled: The Ghost In The Browser. For good reason, too: the company found that nearly 1 in ten sites (or about 450,000) are loaded with malicious software. Google is now promising to <a href="http://news.bbc.co.uk/1/hi/technology/6645895.stm">identify all web pages on the internet that could be malicious</a> - with its powerful crawling abilities & data centers, the company is in an excellent position to do this. 'As well as characterizing the scale of the problem on the net, the Google study analyzed the main methods by which criminals inject malicious code on to innocent web pages. It found that the code was often contained in those parts of the website not designed or controlled by the website owner, such as banner adverts and widgets. Widgets are small programs that may, for example, display a calendar on a webpage or a web traffic counter. These are often downloaded form third party sites. The rise of web 2.0 and user-generated content gave criminals other channels, or vectors, of attack, it found.'"<br /></i><br />Now, at first glance that is great. Besides the common posts about, "won't we be shutting out %10 of the web?".<br /><br />I see an immediate tactic of malware distributed through 3rd party applications to contain code that will *hide* or disable the exploit code that injects the malware when it see's a google bot querying the page.<br /><br />Pretty simple for them to do, since google bot advertises itself. In fact, writers could just have it not displayed on any OS/Browser that it couldn't effect. If it needed Windows IE Version 6 to run the exploit, programmers could only serve to that browser.<br /><br />But then of course bots could start serving fake URI data.<br /><br />We'll see, won't we.<br /><br />In other news, we've just completed a case study of our current, *exciting* clients.<br />Take a look at it <a href="http://www.projectskyline.com/pdf/Client_Case_Study.pdf">here</a>.<br /><br /><br />We also started working with the <a href="http://www.worldfoodprize.org/">World Food Prize</a>, modifying our RSVP software, Project-Contact, to account for a special event they are organizing. Because it is a<br />government function, special attention must be paid to securing the data and its'<br />transmission. This project is currently being tested. Stay tuned for more.<br /><br />We've also been working in depth on WARP2, beginning the complete wireframe and SQL transaction specification. Programming seems easy compared to this!<br /><br /><br />Also, our lead designer Ben has been working on a few <a href="http://en.wikipedia.org/wiki/Skunk_works">skunkwork</a> projects, including data mining, scripting, automation and emailing. Ha, fill in the blanks.<br /><br />More to come!<br /><br />- PSL<i><br /></i><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-3977068989217746781?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0tag:blogger.com,1999:blog-1155335777882438066.post-2026481014383761922007-05-07T15:52:00.000-07:002007-05-15T07:29:28.039-07:00Gone Test One<span style="font-family:trebuchet ms;">-Marketing</span><br /><br /><span style="font-family:trebuchet ms;">The </span><span style="color: rgb(0, 0, 102); font-weight: bold;font-family:trebuchet ms;" >brochure</span><span style="font-family:trebuchet ms;"> is always a testament to design. Compile a list of the most unique, interesting, and most important information about your company on to a 8.5 by 11 double side of paper. Now divide that content into 6 columns (three on each side), with order and a constant flow. </span><a style="font-family: trebuchet ms;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.projectskyline.com/weblog/uploaded_images/psl_broshure_front-792213.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://www.projectskyline.com/weblog/uploaded_images/psl_broshure_front-792208.jpg" alt="" border="0" /></a><span style="font-family:trebuchet ms;">Make sure the registration is dead on and then send them out to be printed.<br /><br /><span style="font-style: italic;">This is what we came up with: </span></span><br /><br /><br /><span style="font-family:trebuchet ms;">We sent them to be printed at Vista Print again. The other material we had printed there were of good quality so we shall stick with them.</span><br /><br /><br /><span style="font-family:trebuchet ms;">We believe the brochure came out well and will now use them in out </span><span style="font-weight: bold; color: rgb(0, 0, 102);font-family:trebuchet ms;" >press kits</span><span style="font-family:trebuchet ms;">. We designed them with </span><span style="font-style: italic;font-family:trebuchet ms;" ><span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">InDesign</span></span><span style="font-family:trebuchet ms;"> and </span><span style="font-style: italic;font-family:trebuchet ms;" >Illustrator</span><span style="font-family:trebuchet ms;"> and used images from our portfolio and our product line.</span><br /><a style="font-family: trebuchet ms;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.projectskyline.com/weblog/uploaded_images/psl_broshure_back-733999.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://www.projectskyline.com/weblog/uploaded_images/psl_broshure_back-733990.jpg" alt="" border="0" /></a><br /><br /><span style="font-family:trebuchet ms;">Other pieces in our press kit are the </span><span style="color: rgb(0, 0, 102); font-weight: bold;font-family:trebuchet ms;" >postcard</span><span style="font-family:trebuchet ms;">, </span><span style="color: rgb(0, 0, 102); font-weight: bold;font-family:trebuchet ms;" >business card</span><span style="font-family:trebuchet ms;">, </span><span style="color: rgb(0, 0, 102); font-weight: bold;font-family:trebuchet ms;" >fact sheet</span><span style="font-family:trebuchet ms;">, </span><span style="color: rgb(0, 0, 102); font-weight: bold;font-family:trebuchet ms;" >contact info</span><span style="font-family:trebuchet ms;">, and other field study documents.<br /><br />Please send us a request for a press-kit at contact@projectskyline.com or visit our contact page at <a href="http://www.projectskyline.com/index.php?act=600">http://www.projectskyline.com/index.php?act=600</a><br /><br /><span style="color: rgb(255, 102, 0);">-<span class="blsp-spelling-error" id="SPELLING_ERROR_1">PSL</span></span><br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-202648101438376192?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0tag:blogger.com,1999:blog-1155335777882438066.post-19325577166779366282007-03-31T20:35:00.000-07:002007-03-31T20:45:23.239-07:00Back in Brown- Primus.<br /><br />Welcome all!<br /><br />Its been sometime since our last info dropping session, but we have some great, GREAT, news.<br /><br />First off, we just secured a project to develop a high end, feature rich, "z0mg web2pt0" application.<br />Our client is based in sunny CA., and has hired ProjectSkyLine to do the impossible.<br /><br />And yup, we will do it.<br /><br />In other news, we've secured another large, custom application, with Vaupell. We've spoke of Vaupell in the past, and have done work for them as well.<br /><br />We had performed a 'code audit' on a very messy, and error prone piece of custom software. WARP is the name. ... And now we've been hired to bring WARP into 2008, a la WARP2. heh.<br /><br />We've also been hired by HotGovi, to create the layout of their new site. Devin, our Creative Director, is taking charge of this project, and providing some excellent UI's and pallettes.<br /><br />We look forward to seeing Devin's finished work.<br /><br />The SECOND campaign of <a href="http://www.project-contact.com">Project-Contact</a> begins Monday, April 2nd. This sales campaign will be aided by Travis, our newest sales associate. We'll keep you posted with updates!<br /><br /><br />- <span style="color: rgb(255, 102, 0);">psl </span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-1932557716677936628?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0tag:blogger.com,1999:blog-1155335777882438066.post-50327458395493134282007-02-28T07:19:00.001-08:002007-02-28T10:03:11.532-08:00Postcard ExtravaganzaAs part of our marketing campaign we created postcards that advertised our company and our new product release, <a href="http://www.project-contact.com/">Project-Contact</a>. Since we are a design firm as well we had the postcards designed in-house to keep the cost down. They are standard two side color cards with one side gloss and the other matte. We dedicated a portion of the card to our new full featured RSVP application. To have them printed we sent them to a very reasonably priced print shop called <a href="http://www.vistaprint.com/">Vista Print</a>. The cards were shipped in a week and came out very nice.<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.projectskyline.com/weblog/uploaded_images/psl_postcard-717663.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 274px; height: 211px;" src="http://www.projectskyline.com/weblog/uploaded_images/psl_postcard-716102.jpg" alt="" border="0" /></a>For the mailing labels we used the Avery Easy Peel white labels which come in 30 per sheet. The packages of 750 are a reasonably priced. The template is available online for download. Once the list of companies was purchased the next step is to copy and paste each address in to the template. It makes it much easier to combine all the information in to one cell for reasons of cutting down the copy and pasting.<br /><br />To target the right demographics we sent nine hundred cards to entertainment companied all over New York. We thought these co<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.projectskyline.com/weblog/uploaded_images/psl_postcard2-764491.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 274px; height: 210px;" src="http://www.projectskyline.com/weblog/uploaded_images/psl_postcard2-763029.jpg" alt="" border="0" /></a>mpanies were the most likely to use Project-Contact because they are event planers.<br /><br />We bought the list from <span style="font-style: italic;">Certified Lists</span>. We got nine hundred addresses in the entertainment section. The list came as a coma separated document and we converted it to Excel file.<br /><br />Next we purchased nine hundred stamps at 24 cents a piece; the standard price for postcards stamps. We believe this is a good technique for marketing for a moderate price. The final product looks great and kept with our budget.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-5032745839549313428?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0tag:blogger.com,1999:blog-1155335777882438066.post-74733712181871239052007-02-27T07:14:00.000-08:002007-02-28T09:02:29.412-08:00TechTrax Article Debut<span style="font-size:100%;">Hello all,<br /><br />Our first <a href="http://pubs.logicalexpressions.com/pub0009/LPMIssue.asp?ISI=0"><span class="blsp-spelling-error" id="SPELLING_ERROR_0">TechTrax</span></a> article has debuted! <span class="blsp-spelling-error" id="SPELLING_ERROR_1">ProjectSkyLine</span>' chief engineer Ben has written a great article, '</span><span style="font-size:100%;"><a href="http://pubs.logicalexpressions.com/pub0009/LPMArticle.asp?ID=741">Automatically Generate Documentation for Source Code with <span class="blsp-spelling-error" id="SPELLING_ERROR_2">HeaderDoc</span></a>', which explains how to setup a mechanism for generating source code documentation for any project (<span class="blsp-spelling-error" id="SPELLING_ERROR_3">PHP</span> is the example).<br /><br />The same technique debuted in the article is used here at <span class="blsp-spelling-error" id="SPELLING_ERROR_4">PSL</span>. Because of the size of our clients projects, we need up to date, detailed and accurate project documentation.<br /><br />In other news, we've landed a large job for '<span class="blsp-spelling-corrected" id="SPELLING_ERROR_5">mash up</span>' of types. A beta will be released in a few months so stay tuned. Not much else can be announced...its a <span class="blsp-spelling-corrected" id="SPELLING_ERROR_6">skunk works</span> project!<br /><br />See you soon!<br /><br /><span style="color: rgb(255, 102, 0);">- <span class="blsp-spelling-error" id="SPELLING_ERROR_7">psl</span></span><br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-7473371218187123905?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0tag:blogger.com,1999:blog-1155335777882438066.post-36381227646758150052007-02-17T16:13:00.000-08:002007-02-17T16:22:42.845-08:00PHP to the rescueGreetings all,<br /><br />We recently purchased a business listing from <a href="http://www.certified-lists.com/">certified-lists</a> to aid in our <a href="http://www.project-contact.com/">project-contact</a> marketing effort. They supplied us with a niche list for a reasonable price.<br /><br />The list is provided in CSV format, however our lead designer was still spending a lot of time creating the mailing labels. Our lead engineer threw together a quick PHP script to take the mailing fields and combine them into one cell. This improved the copy and paste time for our mailing label maker.<br /><br />Here's a copy of the script:<br /><pre><br /><?php<br />/* Quick script to take particular CSV fields<br /> and arrange them into a single cell.<br /> <br /> When: Who: What:<br /> ----- ---- -----<br /> 13-Feb-07 BJS Created. <br />*/<br /><br /><br />function stripQuotes(&$str)<br />{<br /> $tmpStr = explode("\"", $str);<br /> if ( isset($tmpStr[1]) )<br /> $str = $tmpStr[1];<br /> else<br /> $str = $tmpStr[0];<br />}<br /><br /><br />$fHandle = fopen("text_list.csv", "r"); /* open for reading */<br />$cHandle = fopen("new_list.csv", "w"); /* open and truncate for writing */<br />$newCSV = '';<br />//$count= 0;<br />while (! feof($fHandle) )<br />{<br /> $lineStr = fgets($fHandle, 2048);<br /> list( $executiveName,<br /> $tmp,<br /> $companyName,<br /> $address,<br /> $tmp,<br /> $city,<br /> $state,<br /> $zipCode,<br /> $zipFour) = explode(",", $lineStr);<br /><br /> stripQuotes($executiveName);<br /> stripQuotes($companyName);<br /> stripQuotes($address);<br /> stripQuotes($city);<br /> stripQuotes($state);<br /> stripQuotes($zipCode);<br /> stripQuotes($zipFour);<br /><br /> $newCSV .= "\"$executiveName $companyName $address "<br /> . "$city $state $zipCode-$zipFour\"\n";<br /> /* <br /> if ( $count > 2)<br /> exit;<br /> $count++;<br /> echo $newCSV;<br /> */<br />}<br /><br />fwrite($cHandle, $newCSV);<br /><br />fclose($cHandle);<br />fclose($fHandle); <br /><br />?><br /></pre><br />It takes the desired fields, (everything except $tmp on the list( ) = explode) and builds them into a new CSV file, this time all in the same cell.<br /><br />That wraps it up for today..thank you PHP!<br /><br /><span style="color: rgb(255, 153, 0);">- psl</span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-3638122764675815005?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0tag:blogger.com,1999:blog-1155335777882438066.post-62461104354797226262007-02-05T12:56:00.000-08:002007-02-06T09:05:10.862-08:00Its All About the TweenWe <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_0">believe</span> using <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_1"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0">Macromedia</span></span> Flash to present content for the web is a wise choice. A lot of the Flash done at <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1">ProjectSkyLine</span></span></span> involves <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_1">time line</span> control and motion <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2">tweening</span></span></span>. One of the coolest <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_3">functions</span> of later versions of Flash is 'motion <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3">tweening</span></span></span>'. Over the years, Flash has developed from a tool used to create lightweight animations for the Web to an authoring environment that is used to create animation, effects, applications, widgets, CD-<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_5"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_5"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4">ROMs</span></span></span>, to display video, and more. However, a recent step-by-step tutorial on using <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_6"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_6"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_5">tweening</span> </span></span>is hard to find. This is why I am writing this passage today.<br /><br /><br />Motion tween is nothing but <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_7"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_7"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_6">tweening</span></span></span> a symbol's movement from one position to another. To implement motion tween all that you have to do is, provide Flash with a symbol's initial position and the end position. The rest is taken care by Flash. Isn't it really pretty simple.<br /><br /><span style="font-weight: bold;">The Tween</span><br />Place a symbol in a <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_8"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_8"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_7">keyframe</span></span></span> on one layer. A <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_9"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_8">keyframe</span></span> is a frame that holds an object or symbol. In this case you will be using a symbol. Select 10 frames down and press F6 to insert a new <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_9"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_10"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_9">keyframe</span></span></span>. These will show as dots on each end of the tween.<br /><br />Still keeping <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_10">play head</span> on the same <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_11">frame</span>, move your Symbol to any other position other than the present one further down the <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_12">time line</span>.<br /><br />After you select any frame further down the <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_13">time line</span>, then select 'Motion' from the tween pop-up menu in t<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.projectskyline.com/weblog/uploaded_images/tween2-734450.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 254px; height: 107px;" src="http://www.projectskyline.com/weblog/uploaded_images/tween2-732444.jpg" alt="" border="0" /></a>he Property inspector. Now your layer will look something like the one shown on the left with the blueish rectangle area with the arrow that runs along<br /><span style="font-style: italic;font-size:85%;" ><br /><br />The blue boxes are mo</span><span style="font-style: italic;font-size:85%;" >tion tweens</span><br /><br /><br />Now, before you can notice your tween, you will have to change you symbol on one side of the blue box. Click on the <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_11"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_10">keyframe</span> (black circle)</span> on one side of the tween and with the free transform tool change the shape of the symbol. Now slide your <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_12">time line</span> flag back and forth inside the motion tween and there you go. You have a tween.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-6246110435479722626?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0tag:blogger.com,1999:blog-1155335777882438066.post-6117618379296329682007-01-31T14:09:00.000-08:002007-01-31T15:36:56.246-08:00Funnel of LoveGreetings All,<br /><br />We recently dropped Mantis and the use of our own <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0">pCal</span> and adopted <a href="http://www.sugarcrm.com/crm/"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1">SugarCRM</span></a>. This contact management software includes its own bug tracker along with providing all the <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2">CRM</span> features one could dream of. It is just easier for us to have everything in one central location (software) then using <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_3">separate</span> tools. Say hello to the new and rm -<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4">rf</span> to the old.<br /><br /><span style="font-weight: bold;">How's the business:</span><br />Thanks for asking. We just landed an exciting job for <a href="http://www.vaupell.com/"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_5">Vaupell</span></a>, who is a large manufacturing company with offices throughout the US. The branch we are working with specializes in rapid prototyping, <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_6">stereo lithography</span> and short run production. They also have a full machine shop for mold production. We are building an online quoting application that will allow users to upload .<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_7">STL</span> CAD/CAM files, select material type, finish and delivery time, then create a PO. <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_8">Woah</span>, cool right. Well that's not even the half of it. We've just started the database design and will be revealing more about this project in the <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_9">coming</span> posts.<br /><br /><span style="font-weight: bold;"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_10">TechTrax</span>, what is that?</span><br />We should have our first articles in <a href="http://pubs.logicalexpressions.com/Pub0009/LPMIssue.asp?ISI=0"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_11">TechTrax</span></a>, an online E-Zine next month, March. Ben, <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_12">ProjectSkyLine's</span> chief engineer is going to be writing a paper about common web-based application security problems which includes plenty of sample code.<br /><br /><span style="font-weight: bold;">RSVP <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_13">Mash up</span>:</span><br />Our RSVP software aka <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_14">pRSV</span> aka <a href="http://www.project-contact.com/">Project-Contact</a> is nearing prime time. We've recently constructed our postcards that will be used in targeted mailings. We will also be doing a round of <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_15">Google</span> <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_16">PPC</span> advertising to <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_17">coincide</span> with the <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_18">February</span> release. We are very excited to be launching our first product. Project-Contact has some great features:<br /><ul><li>Events created are given a unique URL</li><li>Customization of events via HTML, color changes and company logo</li><li>Events can have multiple sessions allowing users to choose whichever they please</li><li>Event creator can export event data directly into Excel</li><li>Attendees can import the event directly into Google & Yahoo calendars</li><li>Plus a whole lot more</li><li><a href="http://www.project-contact.com/">Project-Contact Homepage</a></li></ul><span style="font-weight: bold;">Procedurally Porting To Object Oriented (<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_19">PPTOO</span>, <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_20">heh</span>):</span><br />We've begun porting all our procedural <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_21">PHP</span> 4 & 5 code to <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_22">OOPHP</span> 5. So far we are very happy<br />with the outcome, which is making the code much more readable and actually creating less overhead in the main files, moving much of the logic to the library or support files.<br /><br />We've been super busy working with some new clients on some possible great projects. Stay tuned for more!<br /><br /><span style="color: rgb(255, 102, 0);">- <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_23">psl</span></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-611761837929632968?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0tag:blogger.com,1999:blog-1155335777882438066.post-55151620679100100922007-01-15T14:42:00.000-08:002007-01-18T06:40:29.664-08:00Write Software or Die Trying<span style="font-weight: bold;">Open Sores:</span><br /><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0">ProjectSkyLine</span> supports open source software. While many of the applications we create are closed source we balance those releases with tools and open source libraries to aid developers.<br /><br />Much of our daily development takes place on the LAMP (Linux – Apache – MySQL – <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2">PHP</span>) platform, all of which are open source applications. And all these applications work exceptionally well.<br /><br />Folks say, “you get what you pay for” and in <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3">LAMPs</span> defense its <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4">sooooo</span> true. We get software that is FREE from bullshit, FREE from show stopping bugs, FREE from limiting <a href="http://en.wikipedia.org/wiki/EULA">EULA</a>s.Open source has it place in all marketplaces and development environments. Thinking back to a story an employee of <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_5">ProjectSkyLine</span> told once, he recalls being at a Linux Users Group meeting sometime in the late 90's. He asked if <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_6">RedHat</span> would ever have an <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_7">IPO</span>. He was laughed at.<br /><br /><span style="font-weight: bold;">Peas in a Pod:<br /></span>Bugs and software development go together like PB&J. It sucks to hear, we know. Its just the sad reality of dealing with such complex systems. We utilize <a href="http://www.mantisbt.org/">Mantis</a>, an open source bug tracking database (<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_8">mySQL</span>) with a browser independent user interface (<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_9">PHP</span>). Its great. Its relatively lightweight in comparison to <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_10">Bugzilla</span> and setup is a breeze.<br /><br /><span style="font-weight: bold;">Content management Content </span><span style="font-weight: bold;" onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_11">schmanagement</span><span style="font-weight: bold;">:</span><br />If your a LAMP developer we can be assured at one time or another you have had a client who requests the use of <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_12">Joomla</span>, or the need for a custom <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_13">CMS</span> solution. We have too. Simple apps don't always need the entire weight and <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_14">unnecessary</span> bloat of the <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_15">CMS</span> frameworks. That's why we developed an open source tool that JUST WORKS. Its smart enough to read into the database your looking to edit and fetch the tables. It allows you to update and remove rows, plus add new content. This amazingly simple tool is called <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_16">pCMS</span> and we use it. A lot.<br /><br />Check out our '<a href="http://www.projectskyline.com/index.php?act=700">Open Source</a>' section for additional info.<br /><br />Please, support OS or you might get <a href="http://www.youtube.com/results?search_query=hack+the+vote&search=Search">hacked</a>! <p style="margin-bottom: 0in;"><br /></p><span style="color: rgb(255, 102, 0);">- <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_17">psl</span> </span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-5515162067910010092?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0tag:blogger.com,1999:blog-1155335777882438066.post-26419868463265314322007-01-08T12:13:00.000-08:002007-01-08T12:24:56.616-08:00The Real World - SQL Injection<span style="font-weight: bold;">z0mg:</span> <span style="font-weight: bold;"><span style="font-weight: bold;"><br /></span></span>Recently one of <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1">ProjectSkyLine's</span> employees found his email address on a list. A list that was sending him junk email (<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2">heh</span>). <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_3">Conveniently</span> at the bottom of the email was a link that allowed him to unsubscribe from the list. After visiting the page to do so he noticed the URL parameters:<br /><br /><span style="font-style: italic;">http://itsyoursnow.net/index.php?cat=</span><br /><br />This code is attempting to load a .<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4">php</span> file by whatever name is specified in $POST['cat']... Oh, what a mess.<br /><br /><span style="font-style: italic;">http://itsyoursnow.net/index.php?cat=../z0mg<br /><br /></span>Yields:<br /><b style="font-style: italic;">Warning</b><span style="font-style: italic;">: main(../z0mg.php): failed to open stream: No such file or directory in </span><b style="font-style: italic;">/var/www/itsyoursnow.net/htdocs/index.php</b><span style="font-style: italic;"> on line </span><b style="font-style: italic;">59</b><br /><br /><b style="font-style: italic;">Warning</b><span style="font-style: italic;">: main(): Failed opening '../z0mg.php' for inclusion (include_path='.:/usr/local/lib/php') in </span><b style="font-style: italic;">/var/www/itsyoursnow.net/htdocs/index.php</b> on line <b><span style="font-style: italic;">59</span><br /><br /></b>Now we cannot go into details about exploiting this site nor did our employee try. But you can <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_5">clearly</span> see why input validation is a must for web applications. There are plenty of things to try at this point, but we don't condone any of it!<br /><br /><br />Friends <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_6">don't</span> let friends code sh*t.<b><br /><br /></b><span style="color: rgb(255, 102, 0);">- </span><span style="color: rgb(255, 102, 0);"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_7">psl</span></span><b><br /></b><span style="font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;"></span></span></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-2641986846326531432?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0tag:blogger.com,1999:blog-1155335777882438066.post-20309461619062992192007-01-05T14:16:00.000-08:002007-01-05T14:51:55.713-08:00Tar up, its a code trip!Yup.<br /><br /><span style="font-weight: bold;">Browser-Compatibility:</span><br />When developing web based applications, as we do at ProjectSkyLine, we MUST check our software on different browsers and operating systems. We recenetly got ahold of <a href="http://tredosoft.com/Multiple_IE">Muli-IE,</a><br />a super useful tool that provides working copies of IE 3.0 -> 6.0. Even though the browsers identify themselves as your most current IE installation, they do behave correctly when rendering web pages. Kudos to the coders at Tredosoft for putting this together.<br /><br /><span style="font-weight: bold;">--; SELECT * FROM ...:<span style="font-weight: bold;"><span style="font-weight: bold;"><br /></span></span></span>For database driven sites with php & mySQL there are alot of ways to handle state data. For simple sites its easy to pass a variable such as 'act' with a page value when navigating a site.<br />Such as <span style="font-style: italic;">index.php?act=1</span> (goes to page 1).<br /><br />Now, if your taking this data and using it in a SQL Query such as:<br /><span style="font-style: italic;">'SELECT * FROM content_table WHERE act = ' . $_POST['act'];</span><br /><br />..AND you didn't validate that input than you've got a serious problem.<br />This is called <a href="http://en.wikipedia.org/wiki/Sql_injection">SQL injection</a>, in its simplest form.<br /><br />A visitor could easily alter the POST data in the URL; <span style="font-style: italic;">index.php?act=ph33rMyHaxorSkillz<br /></span>If your lucky this would cause your code to halt execution after the failed query, thus displaying a plain white page for the visitor. You don't want this.<br /><br />A quick fix for this is to validate the input of $_POST['act] against an array of allowed values. For small sites with limited pages, this is recommeneded.<br /><br />Our sample site has 2 pages:<br /><pre><br />define(constHomePage, 1);<br />define(constHomePage, 2);<br /><br />/* returns valid pages for our site */<br />function sitePages( )<br />{<br /> return array ( constHomePage => constHomePage,<br /> constContactPage => <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0">constContactPage</span><br /> );<br />}<br /><br />/* fetch the value of act from POST data */<br />$<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1">actVal</span> = $_POST['act'];<br /><br />/* load the array of valid pages */<br />$<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2">vActSet</span> = <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3">sitePages</span>( );<br /><br />if ( !<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4">isset</span>($<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_5">vActSet</span>[$<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_6">actVal</span>]) )<br />{<br /> /* if <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_7">actVal</span> does not map to a key in this array */<br /> $<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_8">actVal</span> = <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_9">constHomePage</span>;<br /> /* push the user to the home page */<br />}<br /></pre><br />This code will change $<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_10">actVal</span> to the value of '<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_11">constHomePage</span>' if something other than 1 or 2 is passed via the URL. There is no way for a malicious user to circumvent this code.<br /><br />We will go into much more detail in <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_12">upcoming</span> <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_13">entries</span> and also provide a wrapper function for fetching values from $_POST, plus some other tasty code-bits.<br /><br /><span style="color: rgb(255, 153, 0);">- <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_14">psl</span></span><br /><span style="font-style: italic; color: rgb(255, 153, 0);"></span><br /><span style="font-weight: bold;"><span style="font-weight: bold;"><br /></span></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-2030946161906299219?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0tag:blogger.com,1999:blog-1155335777882438066.post-69554596848094775822007-01-03T21:41:00.000-08:002007-01-03T22:14:33.320-08:00Second wind<span style="font-weight: bold;">Real programmers do real things:<br /></span>Yup, a 16+ hour day for the pioneers of ProjectSkyLine.<br /><br />Who doesn't love things that are fast and small? Motorcycles, missiles...png's?! If your a web developer and you need to support IE 6.0, 5.5, etc you have undoubtedly had a run in with<br />the <a href="http://koivi.com/ie-png-transparency/">infamous png-24</a> problem.<br /><br />After searching Google and trying various bits of javascript, css and other kludge fixes, we still had not reached a STABLE (Visual Studio was catching IE 5.0 crashes) answer to the png-24 problem for ALL browsers. So we may not be using .png's as much as we'd like too.<br /><br />A STABLE fix is to use .gif images w/a matte background to match any color of your choice.<br />Transparencies will also work but we've found small images distort when transparency is added. IE7 fixes this error as well as FireFox and Opera (v9). <span style="font-weight: bold;"><br /><br />Take some source give some improvements:</span><br />We designed pCal to help connect ProjectSkyLine's workers across states. Its been invaluable to us. Today we released updates to the pCal package and clarified the installation process.<br /><br />Another open source project we find of great use is <a href="http://sourceforge.net/projects/bfexplorer">bfExplorer.</a> It enables remote users to connect to our development server and manage files through an easy to use 'explorer-ish' interface. One point of improvement was needed in the file list code however. The application had plenty of space to display full file names but was stopping after 16 characters. Yeah, this makes it a bit difficult when you organize your files. So here's a quick fix for anyone wanting this changed:<br /><br />Inside /files/config.php change $names_chars from 16 to 30;<br /><br />Yup, that's it! And now you have your file names...in full!<br /><br /><span style="color: rgb(255, 153, 102);">- psl</span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-6955459684809477582?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0tag:blogger.com,1999:blog-1155335777882438066.post-3904477247043157522006-12-30T13:39:00.000-08:002006-12-30T15:23:02.210-08:00We've moved!<span style="font-weight: bold;">Welcome:</span><br />To a new blog that is. After fixing a <a href="http://www.projectskyline.com/weblog/source/bug_fix.txt">few bugs in <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0">bBlog</span></span></a> (<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1">php</span></span> driven) we decided we needed something a bit more secure and hosted on our live server, not the development server.<br /><br />So we've switched.<br /><br />For those who need access to the old posts source code, they are here now:<br /><a style="color: rgb(0, 0, 0);" href="http://www.projectskyline.com/weblog/source/db_connect.txt"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2">PHP</span></span>/<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3">mySQL</span></span> connect to a database procedure</a><br /><a href="http://www.projectskyline.com/weblog/source/mysql_query.txt"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4">PHP</span></span>/<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_5"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_5">mySQL</span></span> query a database procedure</a><br /><a href="http://www.projectskyline.com/weblog/source/mysql_returnone.txt"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_6"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_6">PHP</span></span>/<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_7"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_7">mySQL</span></span> query database and return one </a><br /><br /><span style="font-weight: bold;">To whom it may concern:</span><br />For those that are new to us, <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_8"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_8">ProjectSkyLine</span></span> is a stable <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_9">start up</span> company that writes amazing and intelligent software. We can't <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_10">possibly</span> define '<a href="http://en.wikipedia.org/wiki/Software">software</a>' without boring you to tears, so read up on its breadth at <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_11"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_9">wikipedia</span></span>.<br /><br /><span style="font-weight: bold;"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_12">Count up</span> 'till now:</span><br />We've been very busy the last 3 months with all that encompasses a <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_13">start up</span>. Besides breathing life into <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_14"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_10">PSL</span></span>, our clients workload is immense.<br /><br /><span style="font-weight: bold;">Software:</span><br />We've recently released our very own <a href="http://www.projectskyline.com/index.php?act=500"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_15"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_11">pCal</span></span></a>, which was an application written by Ben, our Chief Engineer, for tracking tasks and <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_16">to dos</span> across the company. FYI, <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_17"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_12">ProjectSkyLine</span></span> has offices in both New York and New Hampshire, so you can imagine minor details can fall through the cracks. But not anymore!<br /><br /><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_18"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_13">pCal</span></span> is released as <a href="http://en.wikipedia.org/wiki/Open_source">open source</a>. We will continue to provide updates and bug fixes, so check the site often. We encourage those that find it <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_19">use full</span> to <a href="http://www.projectskyline.com/index.php?act=600">drop us a line</a>, comments or complaints welcome.<br /><br /><span style="font-weight: bold;">Soon to arrive:</span><br />Our next software release is that of <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_20"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_14">pRSV</span></span>, which was designed for our client <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_21"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_15">HHC</span></span> Marketing of NY. <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_22"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_16">HHC</span></span> Marketing promotes for <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_23"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_17">NY's</span></span> hottest <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_24">Broadway</span> shows and off-<span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_25">Broadway</span> events. They needed an application for clients to RSVP to events hosted by HHC. Our <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_26"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_18">pRSV</span></span> software takes care of creating the events, tracking the users RSVP, sending email reminders and even allows client data to be exported directly into excel or openoffice...very useful to <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_28"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_19">HHC</span></span> when constructing the final guest list.<br /><br />Visit our <a href="http://www.projectskyline.com/index.php?act=500">products</a> page to see more about the <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_29">upcoming</span> release.<br /><br /><span style="color: rgb(255, 153, 102);">- <span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_30"><span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_20">psl</span></span></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1155335777882438066-390447724704315752?l=www.projectskyline.com%2Fweblog%2Fblogger.html'/></div>ProjectSkyLinehttp://www.blogger.com/profile/09987093395202301715noreply@blogger.com0