![]() |
#1 |
be forever curious
|
![]() in Absprache mit theHacker mache ich mal diesen Thread auf, der dazu gedacht ist, interessante oder nützliche Snippets (also kleine Codefetzen oder Funktionen) zu posten. Ich werde hier an dieser Stelle eine Übersicht pflegen, welche Snippets vorhanden sind. Regeln:
PHP
MySQL
Javascript
Ruby (on Rails)
Delphi
Geändert von tleilax (16.11.2011 um 08:09:34 Uhr) |
![]() |
![]() |
![]() |
#2 | |||
be forever curious
|
![]()
Diese Funktionen dienen der Umrechnung von dezimalen Werten in ihre analoge sexagesimale Darstellung und ungekehrt.
Das Sexagesimalsystem ist das bei Koordinaten üblicherweise verwendete Zahlensystem auf Basis von 60. Die Angaben sind dann in Stunden, Minuten und Sekunden. Beispiel: 50.12944444 - Dezimal PHP-Code:
Geändert von tleilax (24.08.2006 um 21:53:45 Uhr) |
|||
![]() ![]() |
![]() |
![]() |
#3 | |||
be forever curious
|
![]()
Da ein file() auf externe URLs auf vielen Servern aufgrund der Einstellung allow_url_fopen = off nicht mehr funktioniert, habe ich diesen Workaround geschrieben.
Die Funktionsweise ist exakt analog zu file(). PHP-Code:
Geändert von tleilax (25.09.2006 um 22:21:57 Uhr) |
|||
![]() ![]() |
![]() |
![]() |
#4 | ||||||
Code-Frevler
|
![]()
Da man leider noch bei sehr vielen Scripten die Möglichkeit findet, andere Scripts über den "Variablen Include" einzuschleusen, poste ich hier mal eine kleine Funktion / einen Lösungsvorschlag, wie man dieses Problem lösen kann.
Nun wird bei unten stehendem Beispiel z.B. 'http://boeserhacker.example.org' nicht als gültig angesehen. PHP-Code:
PHP-Code:
Geändert von Johnson (30.08.2006 um 01:16:38 Uhr) |
||||||
![]() |
![]() |
![]() |
#5 | |||||||||
be forever curious
|
![]()
Es gibt ja Situationen, an denen man bspw die Position einer Zeile innerhalb des Resultsets bestimmen möchte ohne dies in der verwendeten Programmiersprache zu tun.
In diesem Fall sind die User-Defined Variables ungemein praktisch, da sie genau dies ermöglichen. Eine Rangfolge wäre beispielsweise über dieses Statement realisierbar: Code:
Code:
Code:
|
|||||||||
![]() ![]() |
![]() |
![]() |
#6 | |||||||||
Erfahrener Benutzer
Reg: 20.04.2006
Beiträge: 5.062
|
![]()
PHP
Manchmal kann es für ein umfangreiches und komplexes Programm sehr nützlich sein, sogenannte "Hookpoints" zu ermöglichen. Damit werden an vorher im Programmcode festgelegten Stellen variable Code-Stücke ausgeführt, was besonders für Updates und Erweiterungen sehr nützlich sein kann. Dazu eine Klasse, die ich - leicht abgeändert - auch selbst einsetze: PHP-Code:
Datenbankstruktur: PHP-Code:
PHP-Code:
![]() P.S.: Nach jedem einfügen eines Codestücks in die Tabelle "hooks" muss Hook::HookCache einmal ausgeführt werden - erst dann werden die Änderungen übernommen. Geändert von raven (18.07.2007 um 15:14:49 Uhr) |
|||||||||
![]() |
![]() |
![]() |
#7 | |||
return void
|
![]()
jeder kennt es und jeder hört davon: SQL-Injection
Jede Variable zu sichern bläht den Code sehr auf, deshalb nutze ich folgende Funktion: PHP-Code:
Ebenfalls wird es zu keinen Komplikationen kommen, sollte Magic Quotes aktiviert sein. Solltet ihr Querys machen wollen in denen ein % benötigt wird (zb. für like) muss dieses per % escaped werden, also muss %% geschrieben werden. Macht eure Anwendungen sicherer uns nutzt SQL-Injection sichere Querys ![]() |
|||
![]() |
![]() |
![]() |
#8 | ||||||||||||
Erfahrener GNUtzer
|
![]()
Ein Counter in PHP auf MySQL-Basis:
Dieses Stück Code kann man mit oder ohne Ausgabe in ziemlich jede Seite einbauen um die Anzahl der Besucher festzustellen. Bei mehreren Seiten sollte man mehrere Tabellen anlegen, es sei denn man will die Summe der Besucher haben. PHP-Code:
PHP-Code:
Der Yahoo-Bot (?) schickt bspw. auch mal den User-Agent 'Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)', was aber auch ein gültiger User-Agent für den IE ist oder es surft ein Yahoo Mitarbeiter am Spider-Server. ![]() PHP-Code:
PHP-Code:
Als Funktion sieht das ganze übersichtlicher aus. Ich habe noch ein statisches Prefix für die Tabelle hinzugefügt um die Counter-Tabellen von den übrigen abzugrenzen. Man kann die Funktion aufrufen ohne vorher extra eine Tabelle anzulegen. Mehr unnütze Klammerungen => noch übersichtlicher. ![]() Geändert von DocTrax (30.08.2006 um 17:34:05 Uhr) |
||||||||||||
![]() |
![]() |
![]() |
#9 | ||||||
DB-Crasher
|
![]()
Alter mit Hilfe des Personalausweises überprüfen
Mit dieser Funktion könnt ihr die Personalausweis-Nummer (Personalausweise von Deutschland) nutzen, um eine Alterkontrolle einzurichten. Der Code überprüft dabei nicht nur das Alter sondern auch die eigentliche Richtigkeit der Nummer anhand von 4 Prüfziffern. Funktion: PHP-Code:
Wir geben hier mit Absicht keine gültige Perso-Nummer für eine volljährige Person an PHP-Code:
Ich möchte darauf hinweisen das die Alterskontrolle durch die Prüfung der Ausweisnummer laut dem Deutschen Jugendschutzgesetzt im Internet nicht mehr ausreichend ist. Mehr dazu hier: heise.de Geändert von Shamane (02.09.2006 um 23:31:09 Uhr) Grund: Hinweis durch ice-breaker |
||||||
![]() |
![]() |
![]() |
#10 | ||||||
sieht vor lauter Ads
den Content nicht mehr |
![]()
Das Problem mit der date()-Funktion von PHP ist es, dass Monats- und Wochentagsnamen englisch ausgegeben werden. Die Alternative mit setlocale() und strftime() hat den Nachteil, dass einige Parameter nicht unterstützt werden bzw. es keine Parameter für eine gewünschte Ausgabe (z.B. Stunde oder Tag ohne führende Null) gibt.
Die nachfolgende Funktion wird analog zu date() verwendet, gibt aber deutsche Monats- und Wochentagsnamen aus. PHP-Code:
PHP-Code:
Geändert von theHacker (02.08.2011 um 18:25:38 Uhr) Grund: null-Test bei Parameter 2 und Geschwindigkeitsoptimierung; July |
||||||
![]() |
![]() |
![]() |
#11 | |||
Erfahrener Benutzer
Reg: 20.04.2006
Beiträge: 5.062
|
![]()
Manchmal kann es äußerst nützlich sein, eine E-Mail Adresse auf ihre formale Gültigkeit zu überprüfen. In PHP funktioniert das mit einem vergleichsweise relativ einfachen perl regexp.
PHP-Code:
|
|||
![]() |
![]() |
![]() |
#12 | |||||||||
be forever curious
|
![]()
Mancherorts wird es ja immer beliebter, beim Export statt CSV XML zu benutzen. Ich habe vor kurzem für so einen Zweck die folgende Klasse geschrieben, die aus übergebenen, 1-dimensionalen Arrays (oder auch Arrays aus 1-dimensionalen Arrays *g*) ein XML-File erzeugt.
PHP-Code:
PHP-Code:
Code:
|
|||||||||
![]() ![]() |
![]() |
![]() |
#13 | ||||||
Scripter auf Abruf
|
![]()
eintrag vorhanden oder nicht? umständlich ist es häufig festzustellen, ob ein eintrag in einer tabelle mit einem entsprechenden schlüssel schon existiert. zuerst ein SELECT und dann eine entscheidung, ob ein INSERT oder ein UPDATE verwendet werden soll (zu sehen z.b. bei doctraxs_besucher_counter von DocTrax weiter oben).
PHP-Code:
PHP-Code:
Geändert von ActionScripter (11.11.2006 um 02:25:06 Uhr) |
||||||
![]() |
![]() |
![]() |
#14 | |||||||||
Scripter auf Abruf
|
![]()
viele tabellen sehen für eine IP ein 15-stelliges varchar-feld vor. warum??
um eine ip-adresse in einer tabelle zu speichern benötigt man lediglich eine unsigned int(10)-spalte. diese füllt man man mit dem binären äquivalent der adresse. die funktion dafür heisst INET_ATON(): PHP-Code:
PHP-Code:
PHP-Code:
Geändert von ActionScripter (11.11.2006 um 11:37:29 Uhr) |
|||||||||
![]() |
![]() |
![]() |
#15 |
Scripter auf Abruf
|
![]()
* INSERT *
ein insert-befehl enthält KEINEN "SET"-befehl falsch: INSERT INTO table SET field1=val1,field2=val2,field3=val3 richtig: INSERT INTO table (field1,field2,field3) VALUES (val1,val2,val3) die set-syntax funktioniert zwar, ist aber FALSCH und wurde nur aus kompatibilitätsgründen (historisch bedingt) zu update eingeführt. * LIMIT 1 * an jeden sicheren query gehört ein LIMIT. ganz egal, ob man etwas limitieren möchten, oder auch nicht. das hat nicht nur logische gründe, die sich auf den aufbau eines query beziehen, sondern auch rein praktische. beispiel: irgendein hacker hat es vielleicht geschafft eure sql-anweisung aus einer seite zu injecten und schafft es damit, folgenden query zu erzeugen (hackerinjection ist fett): DELETE * FROM user WHERE userID=123456 or userID>0 in diesem fall wurde einfach die variable userID, die ursprünglich "123456" enthielt umgeschrieben und enthält jetzt "123456 or userID>0" ... das bringt fatale folgen mit sich. wenn ihr webbetreier seid und kein backup parat habt, dann ist in einem solchen fall die seite zum tode verurteilt. mit einer LIMIT-anweisung wäre so etwas nicht passiert: DELETE * FROM user WHERE userID=123456 or userID>0 LIMIT 1 damit wäre der schlimmste der fälle nicht auf die gesamte tabelle angewendet worden, sondern nur auf einen einzigen datensatz beschränkt. * SELECT * FROM table * "benutze niemals einen stern-query" ... diesen satz sollte sich jeder, der mit mysql arbeitet sofort hinter die löffel schreiben. schön, wenn du im kopf hast, welche felder die tabelle hat, aber was ist, wenn du die seite verkaufst und dein nachfolger etwas ändern möchte? ein griff und das suchen beginn. |
![]() |
![]() |
![]() |
Anzeige |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
![]() |
||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Snippets - Diskussionsthread | tleilax | Programmierung | 175 | 06.10.2014 21:43:27 |
[S] 2 Script-Snippets (JS) 250k je Script ! | halbesbit | Lose4Scripts | 2 | 20.04.2008 18:02:27 |