1,014 karma · joined April 14, 2011
[ my public key: https://keybase.io/tlhunter; my proof: https://keybase.io/tlhunter/sigs/Np2LxdEW781TwDpzkb7Skpx0oKzur6it_9d9v2srQEQ ]
The framework the example app is built in provides a (poor) database library, and that is the method for building SQL queries (I've since moved on to PDO's parameterized queries).
CI strips out all funky characters, so while it is possible to cause an erroneous query, I'm not seeing a security issue here.
http://neoinvoice.local/invoice/list_items/1/asdf
Does cause an erroneous query. It should use a case statement to check against column names. CI will strip out any special characters though.
I'm used to selling items on the Envato marketplace, which provides all of the 'advertising' for me. But it seems that with Flippa, there is so much noise and one has to do their own finding of buyers.
You can also throw comments in the code where the bad stuff is so that it has more visibility, as well as suggestions for how to better solve the problem. Sometimes people learn best from bad code!
There was also a fear of letting this be my full time gig and not having a steady paycheck. My brick and mortar business had just closed its doors as my biggest client stopped paying people (he literally disappeared into the woods and had a class action lawsuit from many people he owed money).
I've dabbled in Doctrine before, but the memory usage looked a little too high for the convenience it offered.
I did start rebuilding this in Kohana a few months ago with the intention of rebuilding it as a less panel-y looking interface, but ended up scrapping the project.
Any pull request to fix a vulnerability will be happily accepted!
If I'm wrong, please do let me know!
//CI Class Load Example:
$this->load->library('example'); $this->example->something();
//Raw PHP Class Load Example:
$this->example = new Example(); $this->example->something();
As you can see, the latter is a little more obvious about what is going on.
Also, the CI framework isn't all that great, I would have certainly used a different framework. Perhaps even Node.js (which is what I'm doing a lot of my development in nowadays).
I also would have looked for a marketer and devoted more time to the project. The market for this kind of product is very crowded, but there is a lot of room for innovation.
Here is the suggested CI method for executing database queries: http://codeigniter.com/user_guide/database/examples.html
Nowadays, I prefer (PHP) frameworks with real autoloaders and better OOP usage (like Zend or Kohana).
The most advertising I did do was a 125x125 ad on a website used by web developers (DavidWalsh.name) for one month. I didn't get a single user through that ad though.
The biggest lesson learned is that an app like this really needs someone who is good at marketing. I'm just a programmer, but if I had found a marketer and pursued the development of the app, I'm pretty sure it could have been successful.
Another take away is to research competitors. I never looked them up since I actually built this mostly for myself at first, and just kept adding new features as it got bigger. It turned out the market was very crowded (This page has a list of 17 competitors: http://thomashunter.name/blog/shutting-down-and-open-sourcin...).
Also, "piss or get off the pot". I spent a lot of time developing this but I didn't devote enough of my time to it for it to be successful.