


7 Weitere Fehler, die üblicherweise von PHP -Entwicklern gemacht werden
Feb 20, 2025 am 10:25 AM
Ende Juni ver?ffentlichte Toptal, der freiberufliche Marktplatz, einen Beitrag über 10 h?ufigste Fehler, die PHP -Programmierer machen. Die Liste war nicht ersch?pfend, aber sie war gut geschrieben und wies auf einige sehr interessante Fallstricke hin, vor denen man vorsichtig sein sollte - selbst wenn ich die Fehler nicht pers?nlich als sehr h?ufig auflisten würde.
Ich ermutige Sie, ihm gründlich zu lesen - es gibt einige wirklich wertvolle Informationen, die Sie kennen sollten - insbesondere die ersten acht Punkte. Vor ein paar Tagen erweiterte Anna Filina auf der Liste mit sieben neuen Eintr?gen. Obwohl sie weniger spezifisch und h?ufig sind, tragen ihre Punkte immer noch Gewicht und sollten bei der Entwicklung berücksichtigt werden.
Key Takeaways
- Vermeiden Sie die veraltete MySQL -Erweiterung für SQL -Datenbanken, da sie unsicher, unzuverl?ssig ist und die Unterstützung für SSL und moderne MySQL -Funktionen nicht unterstützt. Entscheiden Sie sich stattdessen für Alternativen wie MySQLI oder PDO, die eine bessere Sicherheit und mehr Funktionen bieten.
- Vermeiden Sie die Unterdrückung von Fehlern in Ihrem Code, indem Sie den @ -Operator verwenden. Lassen Sie stattdessen Fehler angemeldet und beheben Sie diese, indem Sie Ihren Code beheben. Dies hilft, die Integrit?t Ihrer Anwendung aufrechtzuerhalten und verhindert, dass Probleme ignoriert oder übersehen werden.
- Seien Sie vorsichtig, wenn Sie zu viele Informationen über Ihr Back-End-Setup enthüllen, insbesondere wenn Sie ein bekanntes Framework verwenden. Dies kann Ihre Anwendung potenziellen Angriffen aussetzen, wenn eine Sicherheitsanf?lligkeit in diesem Framework entdeckt wird. Denken Sie auch daran, Entwicklungskonfigurationen beim Drücken der Produktion zu entfernen, um einen unbefugten Zugriff zu verhindern.
7 weitere Fehler PHP -Entwickler machen h?ufig
Ich wurde von jemandem von Toptal gebeten, einen Blick auf seine Liste zu werfen und potenziell einen Beitrag zu leisten, und einige unserer Follower in sozialen Netzwerken haben ein Interesse daran ge?u?ert, die Liste weiterzumachen. Ich m?chte diese Gelegenheit dazu nutzen Fügen Sie dieser Liste einige meiner eigenen Eintr?ge hinzu, die ich wiederholt meine Teammitglieder oder Follower warnen muss.
1. Verwenden der MySQL -Erweiterung
Diese Nachrichten sind ziemlich alt, aber die Anzahl der Entwickler, die sich der Tatsache nicht bewusst sind, ist besorgniserregend. Bei Verwendung von SQL -Datenbanken, insbesondere von MySQL, entscheiden sich viel zu viele Entwickler immer noch für die MySQL -Erweiterung. Die MySQL -Erweiterung ist offiziell veraltet. Es ist unsicher, unzuverl?ssig, unterstützt SSL nicht und fehlt einige moderne MySQL -Funktionen. Es generiert auch Abschaltungsnotizen, die Ihre App nicht brechen, sie werden nur ganz oben in Ihrer App angezeigt. Es bedeutet, dass dies auch sehr m?glich ist, einfach für all die verschiedenen Websites zu googeln, die dieses unsichere Setup verwenden, indem sie einfach danach suchen. Die Welt der Verletzungen, denen diese Apps aufgrund dieses Chaos ausgesetzt sind, ist erstaunlich.
Anstatt MySQL zu verwenden, entscheiden Sie sich für eine der Alternativen: Mysqli oder PDO. Zum Beispiel ist die Verwendung von MySQLI stattdessen fast so einfach wie das Hinzufügen des Buchstabens ?I“ zum Ende der API -Aufrufe:
<span>$c = mysql_connect("host", "user", "pass"); </span><span>mysql_select_db("database"); </span><span>$result = mysql_query("SELECT * FROM posts LIMIT 1"); </span><span>$row = mysql_fetch_assoc($result);</span>
vs
<span>$mysqli = new mysqli("host", "user", "pass", "database"); </span><span>$result = $mysqli->query("SELECT * FROM posts LIMIT 1"); </span><span>$row = $result->fetch_assoc();</span>
Das ist alles, was es brauchte, um das Setup unermesslich sicherer zu machen.
Sie sollten sich jedoch für PDO entscheiden. Mehr dazu in Punkt 2.
2. Nicht pdo
Versteh mich nicht falsch, Mysqli ist (im wahrsten Sinne des Wortes) Generationen vor der alten MySQL -Erweiterung. Es ist auf dem Laufenden, sicher, zuverl?ssig und schnell auf dem Laufenden gehalten. Es ist jedoch mySQL spezifisch. Mithilfe von PDO k?nnen Sie eine wunderbar praktische objektorientierte Syntax verwenden und Sie auf Tango mit anderen SQL -Datenbanken wie PostgreSQL, MS SQL und mehr vorbereiten. Darüber hinaus k?nnen Sie mit PDO die benannten Parameter verwenden, eine Funktion, die so nützlich ist, dass nur wenige Menschen sich vorstellen k?nnen, nach etwas anderem zu gehen, nachdem sie den richtigen Vorteil haben. Last but not least gibt es Folgendes: Sie k?nnen abgerufene Daten direkt in ein neues Objekt einfügen, was in gro?en Projekten ein entzückender Zeitverstand ist.
3. URLs nicht umschreiben
Ein weiterer allgemein ignorierter und leicht zu behebendes Problem. URLs wie myapp.com/index.php?p=34&g=24 sind heutzutage einfach nicht akzeptabel. Da es unglaublich schwierig ist, einen guten URL -Umschreibungshandbuch zu schreiben, der jeden Server und jeden Framework abdeckt, hat fast jedes Framework eine Anleitung zum Einrichten sauberer URLs (Laravel, Phalcon, Symfony, Zend) und jeglicher, die Don ' Es ist sich nur nicht wert - sie kümmern sich offensichtlich nicht um moderne Praktiken.
4. Fehler unterdrücken
Ich habe in einem früheren Artikel darüber geschrieben, aber es ist wieder erw?hnenswert. Jedes Mal, wenn Sie den @ -Operator verwenden, überdenken Sie das Problem aus einem anderen Blickwinkel aus und n?hern Sie sich genauer. Nehmen Sie mein Wort dafür, wenn ich sage, dass 20 Zeilen von Boilerplate -Curl -Code um die Funktionen einer App besser sind als eine einzelne Zeile mit dem @ -Operator davor.
Ich habe durch pers?nliches Experimentieren festgestellt, dass ein guter Ansatz derjenige ist, den ich im ursprünglichen Beitrag befürworte - alle Ihre Hinweise in t?dliche Fehler verwandeln. Stellen Sie sicher, dass nichts in die Fehlerprotokolle eingeloggt wird, da es buchst?blich nichts gibt. Wir haben kürzlich einige Heroku-Add-Ons für produktionsbereite PHP-Apps behandelt, und eines davon war der ausgezeichnete Papertrail-ein Add-On, mit dem Sie alle Fehler Ihrer App zu ihrem Backend für einfacher suchen, gruppieren und sp?ter beseitigen k?nnen An; Selbst wenn einige Fehler auftreten, ist es besser, sie protokolliert zu lassen und sie zu entfernen, indem sie Ihren Code reparieren, als sie zum Schweigen zu bringen und vor Ihren Benutzern dumm zu spielen.
5. Zuweisen unter Bedingungen
sogar erfahrene Entwickler haben manchmal einen Fingerrutschen und schreiben Sie, wenn ($ condition = 'value') {anstelle von if ($ condition == 'value') {. Unsere H?nde werden ausrutschen, unsere Tastaturen registrieren nicht den Schlüsselpress, wir werden am Ende von einem anderen Teil des Codes einfügen, in dem die Aufgabe tats?chlich passiert ist - dies passiert, und wir finden normalerweise nur, wenn wir die App ausführen.
Es gibt verschiedene M?glichkeiten, dies vollst?ndig zu vermeiden:
- Verwenden Sie eine anst?ndige IDE. Jede gute IDE (wie zum Beispiel Phpstorming) warn Verwenden Sie "Yoda -Bedingungen". Sie werden diese in vielen beliebten Projekten sehen, sogar in gro?en Rahmenbedingungen. Durch den Vergleich (wie in, wenn ('value' = $ condition) {) {) werden schw?chere IDEs auch das Problem bemerken. Einige betrachten die Yoda -Syntax ?rgerlich und sinnlos, eine Lebensader, in der es keine geben sollte ("Seien Sie vorsichtiger mit Ihrem Code, verdammt"), aber für jeden - wenn es jemandem hilft, bin ich alles dafür. Wenn wir alle Elitisten w?ren, würden WordPress und Zend Framework nicht existieren.
- Wenn Sie es einfach im Auge behalten, werden Sie einen Augenreflex entwickeln, um dies jedes Mal zu überprüfen, wenn Sie ihn schreiben. Alles was es braucht ist das üben, aber es passiert sogar zu den besten Entwicklern und hier ist 1. und 2. nützlich.
sagen, dass dies einige Kontroversen aufregen k?nnte, aber hier geht es trotzdem. Sofern Sie nicht 100% Vertrauen in die Entwickler des Framework haben oder keine hoch gewinnorientierten, mit hohen gesch?ftskritischen Anwendungen mit hoher Handel betreiben, sollten Sie sich immer bemühen, Ihre Back-End-Wege zu verdecken. Hilfe bei der Verhinderung von Angriffen, sollte eine Sicherheitsanf?lligkeit dieses Rahmens entdeckt werden. Zum Beispiel:
Wenn Sie Symfony2 -übersetzer verwenden und jetzt eine Route mit einem {_locale} -Parameter -Upgrade haben! http://t.co/jihxhb8mzt - Jérémy Derusse (@jderusse) 15. Juli 2014
In diesem Tweet wird Kenntnis eines ernsthaften Problems der Code -Injektion in ?ffentlichem Dom?ne übertragen. Dies ist gro?artig, wenn Sie am Arbeit sind und sofort ohne DevOps -Probleme aufrüsten k?nnen und das Team zuerst zusammenarbeiten lassen, aber für die meisten Menschen und Unternehmen, die Symfony verwenden, ist dies nicht der Fall. Auch wenn Symfony über Komponist verbessert werden kann (wie Ryan in den Kommentaren unten erw?hnt), dauert es normalerweise eine Weile, bis gro?e Teams mit mehrstufigen Umgebungen die Genehmigung erhalten. Alle Websites, die diesen übersetzeransatz verwenden, der zu deklariertem Symfony -Nutzern (sind?), Daher wurden diese Sicherheitsanf?lligkeit bis festgesetzt.
Symfony im obigen Beispiel war genau das - ein Beispiel. ?hnliche Situationen sind im Laufe der Jahre mit unz?hligen anderen Software entstanden. Als ich Zend Framework immer noch kommerziell benutzte, hatten wir dies auch geschehen und erlitten einen Angriff. WordPress hat seinen Anteil an Sicherheitsgaffes gehabt und wir wissen, wie hoch ein Prozentsatz der Websites da drau?en ist. Diese Dinge passieren und manchmal sind Open Source und Transparenz nicht der beste Ansatz, wenn Sie sich mit Anwendungen befassen, die die Mehrheit des Umsatzstroms eines Unternehmens tragen.
7. Entfernen Sie Entwicklungskonfigurationen nicht
Last but not least sollte die Entfernung der Entwicklungskonfiguration erw?hnt werden. Vor kurzem (und es ist ein ehrlicher Zufall, den ich hier wieder Symfony erw?hne) hat CNET einen Angriff erlitten, weil sie ihre Entwicklungskonfiguration nicht beseitigt.
Uhmmm Nr.
CNET, eine der weltweit gr??ten Tech -Nachrichtenseiten, basiert auf Symfony. Symfony enth?lt, wie Sie vielleicht wissen, zwei Einstiegspunkte für Ihre Anwendung: app.php und app_dev.php. Indem Sie Ihren Browser auf einen zeigen, erhalten Sie die Produktionsumgebung. Indem Sie auf das mit dem _DEV -Suffix hinweisen, erhalten Sie offensichtlich die Entwicklungsversion, die einen Debugger, sensible Daten und mehr enth?lt. Ob dies gut oder schlecht ist, ist ein Thema vieler Diskussionen (dank Ryan, dass sie dies darauf hingewiesen haben), aber es ist unbestreitbar, dass es einige Clumsier -Entwickler für Fehler wie die CNET er?ffnet. Darüber hinaus wird auf andere URLs auf app_dev zugegriffen. Mit anderen Worten, es ist nicht nur die Indexseite, die im Entwicklungsmodus startet, sondern die gesamte Website - im Fall von CNET ist das viel Zugriff.
Wenn Sie der Diskussion auf Twitter folgen, wird es sehr schnell traurig - und was noch trauriger ist, dass es in der Arbeit einer zweiten h?tte vermieden werden k?nnen:
Die Entwickler h?tten app_dev.php von den Produktionsservern
- entfernt haben k?nnen
- Die Entwickler h?tten iPs mit Whitelisted gestellt haben, um auf app_dev.php zugreifen zu lassen, so wie es standardm??ig funktioniert, es sei denn, Sie lockern diese Einschr?nkungen.
Schlussfolgerung
Wie denkst du über diese Liste? Deckt es gemeinsame Aspekte ab oder ist es zu esoterisch? Haben Sie einige h?ufigere Fallstricke, die die drei Beitr?ge insgesamt nicht erw?hnt haben? Lassen Sie es mich in den Kommentaren unten wissen und wir werden den Beitrag aktualisieren, wenn Ihr Rat solide ist!
Das obige ist der detaillierte Inhalt von7 Weitere Fehler, die üblicherweise von PHP -Entwicklern gemacht werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen





Um die St?rke des Kennworts zu bestimmen, muss die regelm??ige und logische Verarbeitung kombiniert werden. Die grundlegenden Anforderungen umfassen: 1. Die L?nge betr?gt mindestens 8 Ziffern; 2. Enthaltende Kleinbuchstaben, Gro?buchstaben und Zahlen; 3.. Spezielle Charakterbeschr?nkungen k?nnen hinzugefügt werden; In Bezug auf fortgeschrittene Aspekte müssen eine kontinuierliche Vervielf?ltigung von Zeichen und inkrementelle/abnehmende Sequenzen vermieden werden, was eine PHP -Funktionserkennung erfordert. Gleichzeitig sollten Blacklists vorgestellt werden, um gemeinsame schwache Passw?rter wie Passwort und 123456 zu filtern. Schlie?lich wird empfohlen, die ZXCVBN -Bibliothek zu kombinieren, um die Bewertungsgenauigkeit zu verbessern.

H?ufige Probleme und L?sungen für den variablen PHP -Umfang umfassen: 1. Die globale Variable kann innerhalb der Funktion nicht zugegriffen werden, und sie muss bei der Verwendung des globalen Schlüsselworts oder Parameters übergeben werden. 2. Die statische Variable wird statisch deklariert und nur einmal initialisiert und der Wert wird zwischen mehreren Aufrufen beibehalten. 3.. Hyperglobale Variablen wie $ _get und $ _post k?nnen direkt in jedem Bereich verwendet werden, aber Sie müssen auf eine sichere Filterung achten. 4. Die anonymen Funktionen müssen über das Schlüsselwort verwenden, und wenn Sie externe Variablen ?ndern, müssen Sie eine Referenz übergeben. Das Beherrschen dieser Regeln kann dazu beitragen, Fehler zu vermeiden und die Code -Stabilit?t zu verbessern.

Um PHP -Datei -Uploads sicher zu verarbeiten, müssen Sie die Quelle und die Type und die Eingabe des Dateinamens und des Pfades überprüfen, Serverbeschr?nkungen festlegen und Mediendateien zweimal verarbeiten. 1. überprüfen Sie die Upload -Quelle, um CSRF durch Token zu verhindern, und erkennen Sie den realen MIME -Typ über die Finfo_file mithilfe der Whitelist -Steuerung. 2. Benennen Sie die Datei in eine zuf?llige Zeichenfolge um und bestimmen Sie die Erweiterung, um sie gem?? dem Erkennungstyp in einem Verzeichnis ohne Web zu speichern. 3. Die PHP -Konfiguration begrenzt die Hochladengr??e und das tempor?re Verzeichnis Nginx/Apache verbietet den Zugriff auf das Upload -Verzeichnis. 4. Die GD -Bibliothek stellt die Bilder neu, um potenzielle b?swillige Daten zu l?schen.

Es gibt drei g?ngige Methoden für den PHP -Kommentarcode: 1. Verwenden Sie // oder #, um eine Codezeile zu blockieren, und es wird empfohlen, // zu verwenden. 2. Verwenden Sie /.../, um Codebl?cke mit mehreren Zeilen zu wickeln, die nicht verschachtelt werden k?nnen, aber gekreuzt werden k?nnen. 3.. Kombinationskenntnisse Kommentare wie die Verwendung / if () {} / Um Logikbl?cke zu steuern oder um die Effizienz mit Editor -Verknüpfungsschlüssel zu verbessern, sollten Sie auf die Schlie?ung von Symbolen achten und das Verschachteln bei der Verwendung vermeiden.

AgneeratorinphpiSamemory-effizientes WaytoiterateOverlargedatasetsByyieldingValueatimeinsteadofReturningThemallatonce.1.GeneratorsusetheyieldKeywordtoproduktenvaluesonDemand, ReducingMemoryUsage.2.TheyareusefulforfulforfulfordlingBiglopploups, Lesebiglochen, Leselungen, Lesebigs, Leselung, oder

Der Schlüssel zum Schreiben von PHP -Kommentaren liegt in der Kl?rung des Zwecks und der Spezifikationen. Kommentare sollten "Warum" und nicht "was getan" erkl?ren, um Redundanz oder zu Einfachheit zu vermeiden. 1. Verwenden Sie ein einheitliches Format wie Docblock (/*/) für Klassen- und Methodenbeschreibungen, um die Lesbarkeit und die Kompatibilit?t der Werkzeuge zu verbessern. 2. Betonen Sie die Gründe für die Logik, z. B. warum JS -Sprünge manuell ausgeben müssen. 3. Fügen Sie eine übersichtsbeschreibung vor komplexem Code hinzu, beschreiben Sie den Prozess in Schritten und helfen Sie, die Gesamtidee zu verstehen. V. Gute Anmerkungen k?nnen die Kommunikationskosten senken und die Effizienz der Code -Wartung verbessern.

Toinstallphpquickly, usexampponwindowsorhomebrewonmacos.1.onwindows, download undInstallxampp, SelectComponents, Startapache und PlaceFilesinhtdocscs.2.Anternativ, manuellinstallphpfrfr

Tolearnphpeffectival, startbysettingupalocalerverenVironmentusexs -LikexamppandacodeeditorikevScode.1) InstallxamppForapache, MySQL und Php.SeacodeeditorForsyntaxSupport.3) testyourscludingveliktingveliktelaThbiliodble.Neclyble.NektFile
