Here’s a nice overview of “PHP in 2019” for those who are still trying to avoid the language because of some preconceived or outdated reasons.
TL;DR * PHP is actively developed with a new release each year * Performance since the PHP 5 era has doubled, if not tripled * There’s a extremely active eco system of frameworks, packages and platforms * PHP has had lots of new features added to it over the past few years, and the language keeps evolving * Tooling like static analysers has matured over the past years, and only keeps growing
And here are some of the recent features that have made it into the language:
“Programmer migration patterns” is an interesting attempt to identify where programmers start and how move from one programming language to another. This is not precise science, obviously. But I have to say that I mostly agree with the findings.
The first language that I learned (back in school) was BASIC, which then gave me some legs with Visual Basic later in college. Also in college, I’ve learned assembler, C, and Pascal, which guided me to some amateur and professional development with Delphi.
Soon after that I discovered Linux, which meant shell scripting. I played with awk, but I didn’t have to dive deep, as Perl was already available. Perl was probably my first true programming language, which I learned outside of school and college, and which I have been using for years to build all kinds of things. I still love Perl dearly, but the last few years I have been mostly using PHP, with some occasional Python.
“Intro to basic web application security” is an excellent overview of the most common mistakes web developers make when it comes to security. The article provides practical examples (including code snippets and screenshots), which illustrate the problems and ways to solve them. The list includes:
SQL injection (of course! no such guide would be complete without it)
Cross-site scripting (XSS)
Cross-site Request Forgery (CSRF/XSRF)
Local file inclusion (LFI)
Insufficient password hashing
Man in the middle (MITM)
XML external entity (XXE)
Sensitive data exposure (including error messages and exceptions)
Login rate limits
and a variety of other, small, but potentially dangerous issues.