kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: Falscher Datentyp für Rückgabewerte aus einer SQL-Abfrage

    geschrieben von strange

    Das ist normal. Du kannst den type aber via typecasting explicit ändern, dies ist aber nur notwendig wenn
    declare(strict_types=1)
    angegeben wurde. (Es sei den dass aktuelle PHP Versionen strict-type per default sind.)

    In Deinem Fall müsstest Du halt
    int($var)
    verwenden.
  • in: HTML-Tags lesen und bearbeiten

    geschrieben von strange

    muellerlukas schrieb:
    Warum denn überhaupt mit explode/implode was zusammen würfeln anstatt die PHP-DOM-Klassen zu nutzen? Die sind schließlich für das Lesen/Erstellen/Verändern von HTML- und XML-Dokumenten gedacht.
    https://secure.php.net/manual/de/book.dom.php

    Ganz einfach, DOM ist Overhead Central. Da ist man mit REGEX and klassischen str_replace() weitaus besser bedient. Wesentlich flexibler und weniger Overhead wenn man sich die Zeit nimmt das ganze richtig zusammen zu tüfteln.

    Wo Du aber auf jeden Fall recht hast, das explode/implode der absolut falsche ansatz ist.
  • in: Die Idee des eigenen Betriebssystems

    geschrieben von strange

    Schon mal von der Eier legenden Woll-Milch-Sau gehört, oder sie gesehen? Nein? Schade, dieses wunderbare Tier gibt dir auch wirklich alles was man so zum leben gebrauchen könnte. Es produziert Essen, gibt Strom und wenn nötig baut es Dir sogar noch ein kleinen Häuschen....

    Ähnlich wie die Eier legenden Woll-Milch-Sau, gibt es sowas wie ein perfektes Betriebssystem einfach nicht und wird es auch niemals geben. Wi schon erwähnt spielen viel zu viele Faktoren eine Rolle, die sich je nach Verwendungszweck auch immer wieder verändern. Selbst wenn man unendlich viele Top Programmierer hätte, die immer perfekten Code abliefern, würde das Uber-Betriebssystem immer aus den Voraussetzung für einen bestimmten Verwendungszweck herauslaufen.

    Egal wie Du es auch drehst, es wird immer darauf hinauslaufen dass das System für einen bestimmten Zweck einfach nicht geeignet ist.
  • in: Mysql User Information über Session id abfragen

    geschrieben von strange

    Aha... so einer bist Du, erst falschen code posten, antwort abwarten, dann mal schnell den korrigierten code rein editieren und dann so tun als ob man von der ganz schlauen sorte ist.

    Mit der Nummer kommst Du hier nicht wirklich weit. Es fällt auf wenn die erste Antwort von Dingen spricht die im vorherigen Beitrag nicht (mehr) zu finden sind und die edit Nachricht "Beitrag zuletzt geändert: 22.2.2018 18:29:27 von nusus" lautet. Is Besonderen wenn Du diese Nummer bei renommierten Usern auf der Plattform versuchst.

    Steh lieber zu Deinen Fehlern, alle die mit irgendeiner Sprache angefangen haben, haben Fehler wie Deine gemacht. Aber im gegensatz zu Dir haben diese Leute die Eier gehabt zu ihren Fehlern zu stehen.
  • in: Mysql User Information über Session id abfragen

    geschrieben von strange

    Zu aller erst stell Dir folgende Frage: Was hält jemanden davon ab mit folgendem Link "deinewebseite.de/derScript.php?userid=1" einfach all die Daten auszulesen?

    Falls Deine Antwort etwas anderes ist als "Gar Nichts", solltest Du wirklich noch einmal darüber nachdenken ob Webdevelopment das richtige ist für Dich, denn was Du da verbrochen hast ist mehr als leichtsinnig und hat absolut nichts mit sessions zu tun.

    Bitte beschäftige Dich mit folgenden Themen:
    * Sessions und Session ID's
    * filter_var() und Sanitize Filter

    Und nein, ich und sehr wahrscheinlich viele andere hier, werden Dir nicht den Code vorkauen. Denn davon wirst Du nichts lernen und bei dem nächsten "Problem" stehen wir wieder an demselben Punkt.
  • in: Php - Textdatei Linie ersetzen, die speziellen String enthäl

    geschrieben von strange

    Deine Frage lautet: Wie benutzt man unset()?

    In Deinem Fall also:
    $file = file('something.txt');
    foreach($file as $lineNo => $line)
        if(strpos($line, "abc")!==false)
            unset($file[$lineNo]);


    Idealerweise solltest du aber folgende methodik verwenden:
    $file = file('something.txt');
    $res = array();
    foreach($file as $line) {
        if(strpos($line, "abc")!==false)
            continue;
        $res[] = $line;
    }

    Auf diesem Weg bleibt das original erhalten und man vermeidet mögliche Probleme. Die erste variante ist aber eindeutig die schnellere und je nach größe der Datei auch schonender für den Server.
  • in: Lima City 500 (Internal Server Error)

    geschrieben von strange

    Die Sache mit unseren Kristallkugeln ist, dass wir schon die gesamten Information brauchen um Dir ausreichend helfen zu können. Also, wir werden schon den PHP Code benötigen um eine gescheite Antwort geben zu können.
  • in: Leere Elemente aus Array ersetzen

    geschrieben von strange

    Obwohl der Ansatz mit preg_replace ein wenig simpler ist, empfehle ich den "manuellen" weg, dieser ist schneller und einfacher zu lesen für jemand der mit dem Projekt nicht vertraut ist oder Schwierigkeiten mit REGEX hat.

    BenchmarkCode:
    <?php
    
    $runs = 1000000;
    
    $subject = array( 'abc','','hallo','b§um','1234');
    $replace = "ERSATZ";
    
    function arrayFillEmpty(array $subject, $replace) :? array {
    	foreach($subject as $k => $v) {
    		if(!isset($v) || empty($v)) {
    			$v = $replace;
    		}
    		$res[$k] = $v;
    	}
    	return $res ?? null;
    }
    
    
    $i = 1;
    $start = microtime(true);
    while($runs >= $i) {
    	$res = preg_replace("/^$/", $replace, $subject);
    	$i++;
    }
    $end = microtime(true);
    echo 'PregReplace: '.($end - $start).'<br />';
    
    
    $i = 1;
    $start = microtime(true);
    while($runs >= $i) {
    	foreach($subject as $k => $v) {
    		if(!isset($v) || empty($v)) {
    			$v = $replace;
    		}
    		$res[$k] = $v;
    	}
    	$i++;
    }
    $end = microtime(true);
    echo 'ForEach: '.($end - $start).'<br />';
    
    
    $i = 1;
    $start = microtime(true);
    while($runs >= $i) {
    	$res = arrayFillEmpty($subject, $replace);
    	$i++;
    }
    $end = microtime(true);
    echo 'FunctionWrapper: '.($end - $start).'<br />';


    Ergebnisse nach 1 Millionen Runs (PHP 7.2):
    PregReplace: 0.77664995193481
    ForEach: 0.42974305152893
    FunctionWrapper: 0.70969295501709


    FinalerCode:
    <?php
    
    $subject = array( 'abc','','hallo','b§um','1234');
    $replace = "ERSATZ";
    
    
    foreach($subject as $k => $v) {
    	if(!isset($v) || empty($v)) {
    		$v = $replace;
    	}
    	$res[$k] = $v;
    }


    Hab zum Spaß sogar noch nen function wrapper gebastelt, selbst dieser ist ein wenig schneller und sauberer als der weg über preg_replace ;)
  • in: Zuverlässigkeit Wireless DMX

    geschrieben von strange

    turmfalken-nikolai schrieb:
    Naja ne Schukodose haste in jeder Ecke irgendwo. In manchen Locations ist es aber eine Herausforderung zwischen den Geräten auch noch DMX zu legen. Muß ja auch tritt- und stolpersicher sein der ganze Spaß!


    Klar ist alles Geschmackssache, bin da noch ein wenig Oldschool.

    Das beste was Du machen kannst ist mal nen W-DMX set anzumieten und auf ner Location einsetzen.
  • in: Zuverlässigkeit Wireless DMX

    geschrieben von strange

    Bin zwar seit einigen Jahren nicht mehr in der Industrie, aber wie mit allen Dingen die "Wireless" sind, kommt es immer darauf an was sonst noch alles in oder nah dem selben Frequenzband sind. Hinzu kommen noch dinge wie Latenz und dergleichen, die einen negativen einfluss haben können.

    Wenn ich ganz ehrlich bin, macht es nicht wirklich Sinn Wireless DMX einzusetzen, man muss noch immer Schuko werfen und der Aufwand ist nicht wirklich größer ebenfalls DMX mit zu werfen. Insbesondere wenn man die erwähnten Probleme im Hinterkopf behält.
  • in: Wie erlerne ich am besten HTML, CSS und Java und MySQL?

    geschrieben von strange

    fussballturnier schrieb:
    oder noch besser, verpiss Dich einfach!
    Beim Stack?`Hab ich noch nie gesehen/erlebt in anderen Foren schon....


    Damit war mehr der Subtext gemeint den Anfängern gerne mal entgegen geworfen wird. Aber wie Du schon richtig erwähnt hast... sobald es akademisch wird legt sich die eher unfreundliche Stimmung recht schnell.
  • in: Wie erlerne ich am besten HTML, CSS und Java und MySQL?

    geschrieben von strange

    Wie man am besten etwas lernt ist abhängig von der Person die was lernen will, denn jeder Mensch lernt anders. Für mich selbst bevorzuge ich praxisorientierte Guides bei denen man am Ende eine relative gute Basis hat auf der man aufbauen kann. In Deinem Fall kann ich Dir nicht wirklich sagen wie Du am besten lernen/üben kannst... probier aus was am besten für Dich funktioniert.

    Mit dem aus dem Weg, fang am besten mit HTML an. Kein CSS, nur HTML. Mit dem was Du vor hast, ist es wichtiger als erstes HTML Basis voll und ganz zu beherrschen und erst dann mit CSS und später JavaScript weiter zu machen. Erst dann kann man sich Gedanken machen mit PHP und MySQL anzufangen.

    Also... zu erst HTML, dann HTML+CSS, dann JavaScript und erst dann PHP+MySQL.

    Die Kohle für die Bücher kannst Du Dir sparen. Das Web bewegt sich einfach zu schnell als das man sich auf Bücher verlassen könnte. Wie schon erwähnt, W3Schools ist mit einer der besten und aktuellsten Ressourcen im Web. Ja es ist alles auf Englisch und da wirst Du über Kurz oder Lang auch nicht herum kommen, da so gut wie alle aktuell gehaltenen Ressourcen auf Englisch sind.

    Viel wichtiger als gute Resources aber ist einen Ort zu haben wo Du Fragen stellen kannst wenn Du mal nicht weiter kommst oder Du etwas nicht voll und ganz verstehst. Als Anfänger machst Du am besten einen großen Bogen um StackOverflow, die einzige Antwort die Du da bekommen wirst ist "Wurde schon einmal gefragt... geh die Suchfunktion benutzen oder noch besser, verpiss Dich einfach!" oder ähnlich freundliche Antworten.

    Für den Anfang bist Du hier auf Lima-City recht gut bedient, auch wenn es manchmal ein wenig dauert bis der richtige Community Member vorbei kommt und Dir eine gescheite und vor allem richtige Antwort gibt. In den Gruppen brauchst Du erst gar nicht suchen, die sind so gut wie ausgestorben und ich bezweifel das die den Übergang zu dem neuem Foren System überleben werden.
  • in: E-Mail Adresse schützen

    geschrieben von strange

    Email Adressen zu maskieren ist bei weitem nicht mehr so wichtig wie es noch vor einigen Jahren war, da Spamfilter mittlerweile richtig gut sind und mit 99.9% des Spams locker fertig wird. Allgemein ist man besser bedient in dem man dedizierte Email Adressen anlegt die ganz bestimmten Funktionen dienen und wenn man nur einen Freemail Anbieter hat, sollte man mindestens einen separaten Account anlegen der sich nur um ein bestimmtes Projekt kümmert.

    Diese Maßnahmen erhöhen den Schutz ungemein und durch den Spam der dann ab und zu mal eintrudelt muss man sich so oder so durch arbeiten, falls die Filter Misst gebaut haben.
  • in: String auf Stichwörter aus Datenbank untersuchen

    geschrieben von strange

    Du beschreibst mehr oder weniger eine Natural Language Search Engine.

    Stichwort: Natural Language Processing

    Der gesamte NLP Fachbereich ist nicht wirklich Anfängerfreundlich und von Deinen anderen Beiträgen gehe ich davon aus dass Du noch nicht lange mit PHP und/oder anderen Sprachen arbeitest. In anderen Worten du solltest Dich erst einmal mit simpleren Problemen befassen, statt direkt mit einem Bereich anzufangen denen selbst weit fortgeschrittenen Programmierern Kopfschmerzen bereiten.
  • in: Innerhalb einer Klasse auf eine andere Klasse zugreifen

    geschrieben von strange

    user012 schrieb[...]
    Wieso meinst du, dass man kein require/include innerhalb des Konstruktors verwenden sollte?


    Sobald die Klasse mehrfach verwendet wird, wird auch die Datei mehrfach geladen was Erstens unnötig und Zweitens relativ langsam ist. Dies kann man zwar via include_once/require_once eindämmen, aber warum versuchen operationen mehrfach auszuführen, wenn es eine andere, leichtere, methode gibt?
  • in: Innerhalb einer Klasse auf eine andere Klasse zugreifen

    geschrieben von strange

    Lass uns erst einmal dem schlimmsten Deiner Fehlern auseinandersetzen. Require/Include sollte niemals in einem Constructor ausgeführt werden, es sei denn es handelt sich dabei um ein Singleton, aber selbst das ist nicht wirklich der richtige weg.

    <?php
    require('Class2.php');
    
    class Class1 {
        public function __construct() {
            //...
        }
    }


    Das ist aber auch unnötig wenn Du einen halbwegs anständigen Autoloader verwenden würdest, der eine Class dann lädt wenn danach gefragt wird, statt pauschal alle Classes zu laden. Siehe PHP Manual spl_autoload_register()


    So, nun mal zu deinem eigentlichen Problem, du hast kein Property/Field was die Instanz speichert, nachdem der Constructor seinen job erledigt hat, wird die Instanz schon wieder entfernt. Also...
    <?php
    require('Class2.php');
    
    class Class1 {
    
        public $instanz;
    
        public function __construct() {
            $this->instanz = new Class2();
        }
    }
    
    $tmp = new Class1();
    $tmp->instanz->method();
  • in: Wie lange wird diese Festplatte noch laufen?

    geschrieben von strange

    Bei den älteren Samsung Platten ist sowas immer sehr schwer einzuschätzen, da diese doch extrem lange halten. Meine ehemalige Primär Festplatte hat nach ca. 10 Jahren Dauerbetrieb ein wenig schlapp gemacht und musste vorsichtshalber ausgetauscht werden. Bemerkbar hat sich das aber auch nur gemacht da kopiervorgänge von großen Datenmengen ungewöhnlich lange gedauert haben, all die anderen typischen Indikatoren haben eigentlich grünes Licht gezeigt.

    Die 10 defekten Sektoren sagen nicht wirklich viel aus, besonders nicht wenn diese sich langsam über die Lebenszeit der Platte angesammelt haben und nicht erst vor kurzem aufgetaucht sind. Sprich mehrere Sektoren in derselben Woche flöten gegangen sind. Dann würde ich mir da schon sorgen machen.

    Aber solange Du gescheite Backups machst und ansonsten das System keine spürbaren Probleme aufzeigt die auf einen Defekt der Festplatte hinweisen, bist Du relativ auf der sicheren Seite. "Relativ" weil bei Festplatten kann man sich nie zu 100% sicher sein.
  • in: Linux oder Windows?

    geschrieben von strange

    bw5rws schrieb:
    Du empfiehlst ernsthaft Windows 10?
    Jetzt kann ich dich eigentlich gar nicht mehr wirklich ernst nehmen,aber ich werde es trotzdem versuchen.[...]


    Ach meine Fresse, kann nicht einmal ein Tag vorbei gehen ohne das ein Militanter Linux Jünger seine Religion verbreiten will? Es ist scheiß egal wie gut Linux ist, am Ende kommt es darauf an mit was der End-User am besten umgehen kann und im Fall von nicht Technikaffinen Eltern ist Linux definitiv die völlig falsche Wahl.

    Denn es ist unter Garantie nicht das schnellste, sicherste und beste Betriebssystem. Ansonsten würden weit mehr Leute Linux benutzen, Hardware Hersteller bevorzugt Treiber für Linux erstellen und so weiter. Aber sowas wirst Du dank Deiner Verblendung wohl nicht verstehen können.

    Ja, Linux ist gut... für sehr bestimmte Aufgabenfelder. Aber solange es so fragmentiert ist, dank all der verschiedenen Distributionen, wird Linux niemals die erste Wahl für Anfänger werden. Es ist und bleibt ein Bastler Betriebssystem und das ist sowohl Fluch als auch ein Segen.


    @Darvin: Erste Wahl in Sachen Benutzer- und Einsteiger-freundlichkeit wäre OS-X. Habe sowohl meine Eltern als auch meine Großeltern damit die Welt der Computer näher bringen können. Klar wird es am Anfang immer ein paar kleinere Probleme geben, aber in Sachen Sicherheit und so weiter, bist Du auf jeden Fall auf der sicheren Seite.

    Leider ist OS-X und die damit verbundene Apple Hardware nicht gerade ein günstiger Einstieg und so wie ich das verstehe ist ja eh schon Hardware vorhanden. Ergo, die Empfehlung von Windows 10 von horstexplorer bleibt bestehen. Nicht ganz so Benutzerfreundlich, aber man spart sich einige Kopfschmerzen in Sachen Treiber und dergleichen. Und mit den richtigen Einstellungen kann auch ein Neuling nicht mehr sehr viel falsch machen.
  • in: Schallplatten ändern und verkaufen / verschenken

    geschrieben von strange

    sonok schrieb:
    Jaaa, aber wenn nun diese "Promo" als Bestandteil eines Kunstprojektes gesehen werden kann, verschiebt sich dann was Deiner Meinung nach oder wären das die gleichen Bedienungen? ( Eindeutige Kunst-Erkennung ist gegeben ( Ort und meinem Status als Kunststudent. ))


    Ob es nun ein Kunstprojekt, Studentenprojekt oder eine Theater Produktion ist macht nicht wirklich einen Unterschied, außer die Anzahl der Nullen auf dem Lizenzabkommen und/oder die Gebühren die an die GEMA gezahlt werden müssen. So lange es sich bei der ganzen Sache nicht um etwas handelt das im engen Privaten Bereich stattfindet, sprich nahe Freunde und Familie, gelten sehr wahrscheinlich dieselben/ähnliche Gesetze wie bei einer Kommerziellen Verwendung.

    Deswegen solltest Du Dir auch eine Beratung von einem Fachanwalt einholen, da hier keine Rechtsberatung stattfinden kann.

    Am Rande sei noch erwähnt, was Du physisch mit den Platten machst ist mehr oder weniger egal. Es geht hierbei hauptsächlich um die Musik die auf den Platten ist.
  • in: Schallplatten ändern und verkaufen / verschenken

    geschrieben von strange

    Da die Platten, und damit auch die Musik auf jenen Platten, für Werbung genutzt werden (dabei ist es egal ob dies kostenfrei geschieht oder nicht) musst Du mit dem jeweiligen Rechteinhaber Rücksprache halten und ggf. eine Lizenz erwerben.

    Wie immer, dies ist keine Rechtsberatung und die genauere Rechtliche Lage sollte mit einem Fachanwalt erörtert werden.
  • in: Seite aufrufen mit PhP

    geschrieben von strange

    In Deinem Fall wäre es einfacher und auch sicherer Dein Problem mit dem versenden von Emails von Deinem Homeserver zu lösen, statt etwas zusammen zu basteln was ein kleiner Sicherheits-Alptraum ist.

    Wir haben hier in der Community einen ganzen Haufen an Leuten die sich in Sachen Servern bestens auskennen und Dir mit Sicherheit helfen können.
  • in: Rückmeldung für Code

    geschrieben von strange

    Wofür wäre eine Klasse denn sinnvoll? Hast du hier vielleicht ein paar praktische Beispiele, die du mir nennen könntest.
    Die Funktionen kann ich ja auch ohne Klasse in eine PHP-Datei packen und dann aufrufen.

    Klassen sind im Prinzip nichts weiter als Arrays, die einen Haufen Daten nett und einfach verpacken. Typische "Objekte" die mit Klassen erstellt werden sind Benutzerdaten, Forenbeiträge, Kommentare, Produkte in einem Shopsystem und so weiter. Also Sammlungen von Daten bei denen es Sinn macht diese zu bündeln, damit diese einfacher verarbeitet werden können.

    Der Vorteil von Klassen ist das diese noch einen ganzen Haufen mehr Dinge drauf haben als nur Daten zu halten. Genauer will ich an dieser Stelle nicht wirklich drauf eingehen, da dies den Rahmen sprengen würde und dich sehr wahrscheinlich mit mehr Fragen da stehen lässt als am Anfang.

    Es gibt mehr als genug Tutorials die Dir die konzepte hinter OOP beibringen können und dir ebenfalls einen Einblick in so genannte Patterns geben können. Stichwort MVC, ein Pattern das sehr weit verbreitet im Webdevelopment ist und sich im Web bewährt hat.

    Für mich waren diese Klassenbezogen, da diese von der Klasse verwendet wurden, um den Zeitpunkt eines Besuchers zu berechnen. Welchen unterschied macht es denn, wenn ich diese nicht in die Klasse, sondern in den globalen Scope packe?

    Der Unterschied wird erst wirklich erkennbar wenn Du dieselben statischen Daten an mehreren Stellen verwenden willst. Du kannst zwar direkt auf diese Daten von einer anderen Klasse/Funktion/etc. zugreifen, aber stell Dir folgende Frage: "Wo würdest Du Zeitbezogene Daten erwarten?" Antwort: "Nicht in der Klasse die einen Besucherzähler verwaltet!"

    Um es anders zu formulieren, auf der logischen Ebene macht es keinen Sinn wiederverwendbare Konstanten in UniTasker zu "verstecken", wenn diese besser entweder im GloalScope oder einer Zeitbezogenen Klasse aufgehoben sind, damit diese einfacher wiederzufinden sind.

    Mein Fehler. Habe diese Werte nun mit mysqli_real_escape_string versehen. Eine Frage noch zu $_GET & $_POST. Sollte ich diese auch filtern, wenn diese nicht für eine sql Abfrage verwendet werden? Z.B., wenn ich nur eine gewisse Aktion durchführen möchte bei einen bestimmten GET Parameter.

    Jup. Man kann nie wissen was für Nebeneffekte eine geschickt gewählte Benutzereingabe haben kann. Und leider reicht auch mysqli_real_escape_string() in den meisten Fällen nicht aus. Aber zum glück bietet PHP ein paar eingebaute Funktionen an die die ganze Situation ein wenig vereinfachen: http://php.net/manual/en/book.filter.php

    Für den Rest verwendet man Reguläre Ausdrücke (Regex). Was wiederum leider ein ganz anderes Thema ist für dass Du am besten jemanden anderes als mich befragst, da Regex nicht wirklich eine meiner Stärken ist.

    Das war wie gesagt mein erstes mal, dass ich mich in PHP mit Klassen versucht habe. Zuvor habe ich dies immer mit verschiedenen Dateien (siehe Beispiel) geregelt.

    Hat man gesehen, deswegen hast Du auch gleich die Schelte bekommen eine Klasse für etwas zu verwenden was man "klassischen" Code hätte lösen können. Man verwendet einfach keine Klassen für Aufgaben die simpler und schneller auf die gute alte Art erledigen kann.
  • in: Rückmeldung für Code

    geschrieben von strange

    Eine Klasse zu schreiben nur um Besucher zu erfassen, oder andere simple Aufgaben auszuführen, ist kompletter overkill und eine Angewohnheit die Du dir am besten gleich abgewöhnen solltest. Andere Dinge die Du dir gleich mit abgewöhnen kannst sind:

    MySQLi im Klassen Scope: Erstelle eine Verbindung entweder im globalen Scope oder stelle einen statischen DatabaseHandler bereit. Dies ermöglicht andere Klassen und Code auf die Verbindung zuzugreifen und gibt dir die Möglichkeit die Verbindung sauber zu trennen. Etwas was du in deinem Code im Moment garnicht berücksichtigts.

    Nicht Klassen bezogenen Konstanten: DayInterval und MinuteInterval sollten entweder im global Scope definiert werden, oder in eine UtilityClass ausgelagert werden.

    Verarbeitung von ungefilterten Userdaten: Mehr oder weniger Regel nummero Uno... Vertraue keiner einzigen Benutzereingabe, oder Eingaben die vom Benutzer manipuliert werden können! $_POST, $_GET und $_SERVER sind Kandidaten die die Tür für Hacker, von der nicht sehr netten Sorte, weit auf machen, wenn die Daten ungefiltert verarbeitet werden.


    Was den Rest angeht, kann ich nur sagen dass Du dich noch einmal ein wenig mehr mit den Konzepten hinter OOP auseinandersetzen solltest. Und vor allem, versuch nicht gleich eine WollMilchSau zu erstellen die alles auf einmal kann. Fang mit simplen Sachen an wie zum Beispiel Klassen als Datenstrukturen (ohne eigentliche Funktionen) und versuche die Daten der Klasse mit verschiedenen Methoden zu manipulieren, klonen, serialisieren und zu speichern.

    Danach kannst du anfangen funktionalität in deine Klassen einzuarbeiten und dich dann mit Interfaces und anderen Klassen bezogenen Themen auseinander zu setzen.
  • in: Registrierungsseite mit PhP & MySQL 2

    geschrieben von strange

    Und da sind wir wieder, an exakt derselben Stelle an der wir beim letzten mal aufgehört haben. Statt sich mit den Themen zu befassen die wir dir in dem anderem Thread vorgeschlagen haben, machst du immer noch die selben Fehler und wunderst dich warum der Code A nicht funktioniert oder B von uns als absolut unsicher eingestuft wird.

    horstexplorer schrieb:
    OK, wenn ich das richtig sehe müsste ich also folgende Funktionen austauschen:
    mysql_num_rows("") --> mysqli_stmt::$num_rows("")
    mysql_query("") --> mysqli::query("")
    Und halt im Login für die Datenbank
    mysql_connect("") --> mysqli::real_connect("")
    mysql_select_db("") --> mysqli::select_db("")

    Habe ich etwas übersehen?

    Dies hier ist das perfekte Beispiel warum du dich noch nicht mit Logins befassen, sondern ersteinmal lernen solltest was MySQLi überhaupt ist und warum es gegenüber den veralteten MySQL Funktionen bevorzugt wird. Eine simple suche nach "php mysqli" hat mir ca. 18,400,000 Ergebnisse geliefert, da sollte bestimmt was passendes für dich dabei sein.

    Auf die Gefahr hin mich wie ein kaputter Plattenspieler, das Ding was es vor der CD gab, anzuhören. Sage ich dir nocheinmal: Befasse dich mit den Basics! Logik Strukturen (if/else/switch), Formular Verarbeitung, PHP Best Practises und so weiter. Mache kleine Schritte die deinem aktuellem Wissen entsprechen. Nutze das gelernte um kleinere Skripts zu erstellen die ein wenig über deinen aktuellen Wissensstand hinaus gehen...

    Man kann dies noch ins unendliche weiterspinnen, aber dafür haben wir alle keine Zeit. Wenn du programmieren lernen willst, musst du auch lernen dir die Informationen selber zu beschaffen, statt dir alles vorkauen zu lassen. Denn darauf läuft das hier alles hin... und darauf hat hier sehr wahrscheinlich niemand lust. Zumal es mehrere millionen Tutorials im Netz gibt, die sich mit genau diesem Thema befassen.
  • in: Registrierungsseite mit PhP & MySQL

    geschrieben von strange

    Ein Login System steht und fällt mit den Methoden mit denen ein solches System erstellt werden. Und in deinem Fall würde ich dir ersteinmal raten dich mit der Verarbeitung von Formularen zu beschäftigen und Logik-Strukturen. Denn in diesem Bereich fehlt dir offensichtlich noch die Basiskenntnis um auch nur darüber nach zu denken ein Login-System auf deiner Webseite zu packen.

    https://www.w3schools.com/php/ ist ein guter Einstiegspunkt. Auch wenn dies Langweilig scheinen mag, arbeite dich durch alle Kapitel/Themen durch, am Ende wirst du ein besseres Verständnis für die Sprache haben und ein solides Fundament auf dem du aufbauen kannst.

    Danach kannst du dich mit den Themen auseinandersetzen die ich in meinem vorigen Beitrag aufgelistet habe und dich dann erneut an ein Login System wagen. Und dank des guten Fundaments, kann man dich dann auch viel besser unterstützen.


    EDIT: In anderen Worten, es macht keinen Sinn dir ein Login-System, Zeile für Zeile vor zu kauen, wenn du am Ende nicht verstehst was überhaupt vorgeht.
  • in: Registrierungsseite mit PhP & MySQL

    geschrieben von strange

    Bevor Du irgend etwas anderes machst, lösche deinen kompletten login code und befasse dich mit den folgenden Themen:

    * SQL Injections
    * Cross Site Scripting
    * Password Hashing
    * MySQLi oder PDO
    * User Input Sanitization
    * User Login Best Practices


    In seiner aktuellen Form ist deine Login solution anfällig für so ziemlich sämtliche attacken die ich mir erdenken kann. User Inputs werden nicht gecheckt, Passwörter sind offensichtlich im Klartext gespeichert und viele viele andere absolut kritische Probleme sind in deinem Script zu finden.

    Um es mit anderen Worten zu sagen, du bettelst leute wie mich gerade dazu deine Seite komplett auseinander zu nehmen und dir das Leben zu hölle zu machen.
  • in: Lifetime Pakete von Vorteil oder Nachteil?

    geschrieben von strange

    fatfox schrieb:[...]Was jedoch du da jämmerlichst zusammengeklemptnert hast verdient nicht mal den Namen (ganz gleich welchen man sich dafür aussucht)
    [...]
    Handwerklich gesprochen bestand deine "Leistung" darin ein vorhandenes Framework zu nehmen und in jeder möglichen und unmöglichen Ecke Werbung unterzubringen, es ist eine Frecheit das derartiges überhaupt online sein darf.[...]

    Immerhin scheint er es hinbekommen zu haben nen AdBlock-Blocker Script auf die Seite zu kopieren. Denn als ich Deinen Beitrag gelesen haben wollte ich mir doch glatt mal das Trauerspiel angucken und habe zur Sicherheit mal meinen AdBlocker angeworfen.

    Ist schon erstaunlich das absolut nichts mehr von der Seite übrig bleibt wenn die Werbung weg ist.

    @TE Du willst leuten wirklich Server vermieten? Mit solch einer Website wirst Du damit nicht sehr weit kommen, die Unseriösität tropf ja bei mir schon vom Monitor auf den Schreibtisch. Lieber würde ich mir nen Lifetime Service Paket der NSA für die Wartung meiner Rechner besorgen, als bei dir nen Server zu mieten selbst wenn dieser gratis wäre.

    Meine Empfehlung: Schau Dich mal ganz genau auf dem Markt der Server Anbieter um und vergleiche Deine Webseite mit all den anderen Anbietern. Die gravierenden Unterschiede sollten Dir sofort ins Auge fallen...
  • in: PC hängt, fährt normal runter

    geschrieben von strange

    jenton schrieb:
    [...]Hab auch schon überlegt ob es am RAM liegen könnte, die hab ich noch nicht testen können.... :wall:


    Hardware Seitig kommen eigentlich nur RAM und die CPU in Frage bei den von Dir beschriebenen Symptomen, zumindest was leicht austauschbare Teile angeht. Das Mainboard wäre der letzte Punkt auf der Hardware Liste die zu solchen Problemen führen kann.

    Wenn die Hardware keinerlei Fehler aufweist, kann man Dir eigentlich nur noch empfehlen ein Backup zu machen und das System neu aufzusetzen, da hier viel zu viele Variablen vorhanden sind um eine definitive und korrekte Antwort zu geben.
  • in: PC hängt, fährt normal runter

    geschrieben von strange

    Ein paar mehr Informationen sind da schon nötig:

    Welche Windows Version?
    Alle Updates drauf?
    Treiber alle aktuell?
    Temperaturen im grünen Bereich?
    Was sind die Hardware Specs?
  • in: Gesichterkennung Deutsche Post usw.

    geschrieben von strange

    Was mit Zielgruppen Werbung anfängt, wird sehr wahrscheinlich in personalisierter Werbung enden. So hats im Web auch angefangen und wenn man die Parallele weiter spinnt endet das alles darin das es dann bald auf Informationstafeln flächendeckende Popups zu finden sind die man erst einmal wegklicken darf.

    Also, nicht mehr lange hin bis zur Minority Report Werbetafel.
  • in: Wird sich Windows 10 am Markt durchsetzen?

    geschrieben von strange

    tempel-des-offler schrieb:Naja wenn man mit Windows nur rumspielt mag das angehen, für Produktivsysteme ist es eher kontraproduktiv. Abgesehen davon, dass z.B. das "Creators Update" auf einem ACER One 10 schon mal 1,5 - 2 Stunden braucht um sich zu installieren...

    Fangen wir jetzt mit Installationszeiten an? Die wohl gemerkt abhängig von dem jeweiligen System sind und absolut nichts mit dem eigentlichen Update zu tun haben und in Deinem Fall eher auf ein ganz anderes Problem hinweisen.

    Was kommt als nächstes? Beschwerden das die DVD oder der USB-Stick komisch schmecken, ganz wie die Nintendo Switch Reviewer vor einigen Wochen? Glaube langsam das sich hier einige nur beschweren um des Beschwerens willen. Nicht um eine anständige und objektive Konversation zu führen. Kein Wunder das es hier im Forum keine gescheite Themen mehr zu finden sind und die User nur noch "teilnehmen" um ein paar Gulden zu verdienen.
  • in: Suche dringend cms

    geschrieben von strange

    Wie schon erwähnt wurde, Wordpress wird an mehr stellen eingesetzt als Du denkst. Habe selber WP auf einer Seite aktiv gehabt die mehrere millionen Aufrufe am Tag bekommen hat. Wir mussten zwar auf einen anständigen Dedicated Server umrüsten, aber das sollte für dich wohl kein Thema sein.

    Zu behaupten das WP nicht professionell genug ist, ist schlicht falsch. Nur weil etwas kostenlos angeboten wird und sehr weit verbreitet ist, heißt es noch lange nicht das es un-professionnel ist. Standard WP, ohne anständigen Custom-Theme hingegen kann unprofessionell wirken, liegt aber dann eher daran dass Du entweder keinen Aufwand betreiben willst das zu ändern, oder nicht bereit bist Jemanden dafür zu bezahlen Dir ein entsprechenden Theme zu gestalten.

    Alternativen wurden schon genannt, wobei ich persönlich nicht viel von Joomla halte, da es weit mehr ist als ein einfaches News-CMS und in der Vergangenheit mit so einigen Sicherheitsproblemen zu kämpfen hatte die nicht schnell genug beseitigt worden sind. Soll nicht heißen das andere Systeme nicht mit den selben Problemen zu kämpfen haben, aber bei einem weit verbreiteten System das auch von führenden Konzernen genutzt wird ist die wahrscheinlichkeit höher dass Fehler und Sicherheitslücken zeitnah beseitigt werden.

    In anderen Worten: WP ist für Dich wohl die beste Option. Es kostet nichts, wird regelmäßig aktualisiert und da es so weit verbreitet ist, wirst Du auch kein Problem haben einen Designer zu finden, der Dir relativ günstig ein Design erstellen kann.
  • in: Wird sich Windows 10 am Markt durchsetzen?

    geschrieben von strange

    tempel-des-offler schrieb: [...] Dummerweise plant Microsoft schon wieder eine neue Kachel für die Zentralisierung der Einstellungen, ich hätte nichts dagegen, wenn Microsoft mal einen erkennbaren Plan verfolgen würde. Aber es nervt schon gewaltig, wenn sich die diversen Unterversionen (1507, 1509, 1511, 1607, 1703) von Windows 10 nicht einheitlich konfigurieren lassen. Es sollte doch möglich sein die Bedienung der Verwaltungskacheln auf einen ähnlichen Stand zu bringen...

    Mag zwar nur ich sein, aber alles was ich hier lese ist mehr oder weniger nur "Mimimi... Microsoft ändert was!". Seid doch einfach mal froh das überhaupt so rapide an Verbesserungen gearbeitet wird und diese auch so schnell wie möglich an den Enduser gebracht werden. Statt dass an den Updates hinter verschlossener Tür gearbeitet wird und wir mit sehr viel Glück ein bis zweimal im Jahr nen Service Pack bekommen.

    Sind einige Praktiken, wie zum Beispiel das zurücksetzen der Einstellungen, fragwürdig? Natürlich!

    Normalerweise wurde auch immer schön jedes Update geprüft das keine Einstellungen zurück gesetzt werden, es sei denn eine bestimmte Einstellung führt zu einem Fehler den man anderweitig nicht beseitigen kann.
    Quelle: @Barnacules, aka Nerdgasm, ehemaliger MS Codemonkey in der Test Division

    Kann man um solcher Quirks herum arbeiten? Klar kann man das und man bricht sich noch nicht einmal einen Zacken aus der Krone, einmal schnell nach nem Update durch die Einstellungen zu gehen um zu checken was sich alles geändert hat, wenn überhaupt.
  • in: Wird sich Windows 10 am Markt durchsetzen?

    geschrieben von strange

    Oh nein, Microsoft hat den Programm Manager, der quasi Explorer aus Windows 3.x der noch eine ganze Weile in anderen Versionen mit an Board war, entfernt. Welcher Idiot bei Microsoft ist denn auf diese Idee gekommen?

    Veränderung ist gruselig, ich weiß... aber mit dem in Rente stellen der "alten" Systemsteuerung, versucht Microsoft eines der größten Probleme zu bekämpfen die Windows hat. Und zwar das Einstellungen mehrfach an vielen verschiedenen Stellen zu finden sind und es zu viele Wege gibt Einstellungen zu ändern.

    Klar ich bevorzuge die gute alte Systemsteuerung da sie mir vertraut ist und ich weiß wo ich gucken muss um eine bestimmte Operation auszuführen. Aber die Welt dreht sich weiter und wenn ich diese Option nicht mehr habe dann muss mich halt anpassen, statt veralteten Dingen hinterher zu heulen.
  • in: Seitenaufbau langsam

    geschrieben von strange

    Erst einmal, valides HTML hilft ungemein: https://validator.w3.org/nu/?doc=https%3A%2F%2Falles-radio-web.de%2Findex.php&checkerrorpages=yes

    Würde Dir empfehlen erst einmal HTML richtig zu lernen, bevor Du überhaupt mit dem Gedanken spielen solltest mit PHP anzufangen. Das selbe gilt übrigens auch für JavaScript.

    Und nein, Du wirst hier sehr wahrscheinlich Niemanden finden der dir helfen will Deine jetzige Seite zu reparieren, da dies darauf hinauslaufen wird das man Dir alles vorkauen muss, da es Dir an Basiswissen fehlt.
  • in: Loch in Monitor

    geschrieben von strange

    Löcher in einem Display können auf einen haufen von Probleme auslösen, alle mit dem Resultat das kein Bild mehr dargestellt werden kann. Es ist also davon ab zu raten ein loch in ein Display zu bohren, egal wie klein es sein wird.
  • in: [Frage] Entpacken von tar.gz

    geschrieben von strange

    Brauchst dir nicht wirklich Sorgen machen wenn mal versehentlich eine nicht erlaubte Datei auf dem Webspace landet, die werden meist automatisch gelöscht.
  • in: Wird sich Windows 10 am Markt durchsetzen?

    geschrieben von strange

    mein-wunschname schrieb:
    strange schrieb:
    ...Nur noch ein paar leichtsinnige Privatuser benutzen noch immer Windows XP/7/8/8.1 und diese User nehme ich schon garnicht mehr für voll.


    Man muss schon ganz schön mit dem Klammerbeutel gepudert sein, um so etwas zu behaupten.

    Und die Hose mach ich mir auch immer schön mit der Kneifzange zu...

    Der Satz war nicht ganz so geschickt gewählt. Gemeint sind damit Privatuser die es eigentlich besser wissen sollten, nicht Mutti und Vati, die oftmals von der Materie wenig bis keine Ahnung haben. Da ist es dann der technisch versierten Verwandtschaft diese darauf hinzuweisen dass es riskant ist mit veralteten Software durchs Netz zu wandern.
  • in: Wird sich Windows 10 am Markt durchsetzen?

    geschrieben von strange

    Immer wieder das selbe Lied und nur der Titel ändert sich von Zeit zu Zeit. Mit jedem Release und Patch kommen ein und dieselben Leute aus ihrem Keller gekrochen um sich zu rechtfertigen warum sie denn noch an ihrer veralteten Software zig Jahre nach dem Verfallsdatum nutzen zu können. Denn früher war alles besser und Ahnung hat eh kein Anderer außer mir.

    Genau diese Einstellung hat erst zu dem Erfolg von WannaCry und Ko geführt. Es sei denn man ist auf eine bestimmte Version eines Betriebssystems angewiesen, gibt es absolut keinen Grund als Privatperson sein System nicht auf den neuesten Stand zu halten. Auch wenn das bedeutet das man dann halt mal in den sauren Apfel beißen muss um sich eine aktuelle Version zu kaufen.

    Anders sieht das leider bei vielen Firmen aus die Computergestützte Geräte betreiben für die es auf aktuellen Systemen einfach keine Treiber/Software mehr gibt. Da entweder der Hersteller sich weigert neue Treiber/Software zu schreiben, was wiederum auch mit zusätzlichen Kosten verbunden ist, oder es den Hersteller überhaupt nicht mehr gibt. Und die betroffenen Firmen haben meist einfach nicht das Kapital um in ein komplett neues System zu investieren.


    Ob sich Windows 10 am Markt durchsetzen wird, hat sich so oder so erledigt. Microsoft wird nicht einfach Bankrott gehen weil sich Windows 10 angeblich am Markt nicht durchsetzen kann. Wenn auch nur die entfernteste Chance bestanden hätte dass sich mit Windows 10 kein Geld machen lässt, wäre Microsoft mit Sicherheit nicht auf die Idee gekommen es an bestehende Kunden zu verschenken. Wenn auch mit dem Hintergedanken einen haufen Daten zu sammeln.

    Und wer jetzt mit den Daten sammel Blödsinn anfangen will, kann sich bei mir gerne ne Alu-Mütze abholen, im tausch gegen das Smartphone, Smart-TV und sämtlicher IODs die sich in dem entsprechenden Haushalt befinden. Surfen im Netz ist dann natürlich auch nicht mehr drin, außer man meldet sich auf keine Seite an und geht komplett durchs TOR Netzwerk.


    Abschließend ist nur zu sagen dass sich Windows 10 schon längst am Markt durchgesetzt hat. Nur noch ein paar leichtsinnige Privatuser benutzen noch immer Windows XP/7/8/8.1 und diese User nehme ich schon garnicht mehr für voll.
  • in: Das ist nur fake hier

    geschrieben von strange

    t***o schrieb:
    leckt mich alle bye

    Ist immer wieder nett zu sehen wie dankbar so einige Leute sind für einen kostenlosen Service der weit mehr anbietet als vergleichbare Angebote. Aber hey, es steht einem selbstverständlich zu alles kostenlos in das Popöchen geblasen zu bekommen. So bin ich zum Beispiel an meinen Lamborghini ran gekommen und die goldene Kloschüssel dürfte in den nächsten Tagen auch noch bei mir eintrudeln... alles kostenlos natürlich, weil ich so ein geiler Typ bin.

    Echt traurig unter was für Wahnvorstellungen hier so manche Leute leiden. Mein Tipp, sieh zu das sich das mal ein Profi anguckt...

  • in: Das ist nur fake hier

    geschrieben von strange

    Jup, alles fake hier. Genau so fake wie Dein Wille anständig an dieser Community teilzunehmen.

    Aber sind wir mal lieb und verweisen wir Dich erst einmal in die richtige Richtung: https://www.lima-city.de/hilfe/ich-habe-eine-datei-hochgeladen-warum-verschwindet-sie

    Falls Deine Forenbeiträge "verschwinden" wundert mich das nicht wirklich, da die meisten Beiträge die Du hier geschrieben hast Inhaltslos sind und wenig bis garnichts zu den jeweiligen Themen beitragen. Mehr als ein Satz sollte schon drin sein...
  • in: "`Guter Editor für PHP [und Anderes]"' -- Die Umfrage

    geschrieben von strange

    Och man, is mal wieder soweit das man versucht X mit Y zu vergleichen und jeder hat seinen persönlichen Liebling? Statt sich damit zu beschäftigen was andere für das beste halten, kann man seine Zeit besser damit verbringen eine der vielen Listen ab zu arbeiten in denen alle aktuell verfügbaren Editoren vertreten sind, Wikipedia is da zum Beispiel eine recht gute Anlaufstelle.

    Auf diesem Weg kann man sich eine eigene Meinung bilden und findet genau den Editor der zu dem eigenen Arbeitsablauf passt, statt sich durch endlose Diskussionen wühlen zu müssen, um dann doch nicht das zu haben was man eigentlich gesucht hat und/oder überhaupt nicht zu einem passt. Zeitlich nehmen sich nämlich beide Ansätze nicht wirklich was.
  • in: Flash ist Tod

    geschrieben von strange

    Flash pauschal für tot zu erklären, nur weil das Web dank HTML5 nicht mehr auf Flash angewiesen ist, ist einfach nur falsch. Flash hat weit mehr Anwendungsgebiete als nur Medien-Wiedergabe/Streaming und hübsche Animationen. Und macht euch nichts vor, HTML5 hast ebenfalls DRM vorgesehen und es wird, bis eine bessere Alternative gefunden wurde, immer DRM geben.

    Heutzutage wird Flash meist für GUIs, unter anderem Scaleform, in Spielen eingesetzt und diverse Entwickler schwören auf Flash als Plattform für einfache und rapide Entwicklung, sowohl für Spiele als auch Anwendungen. Und bis es Ersatz für die einfache Entwicklung via Flash gibt, wird Flash auch noch weiterhin existieren, nur nicht mehr im Web in Form von einem Media-Player und/oder ganzen Webseiten, dafür ist HTML5 vorgesehen.

    Nicht das Flash schlecht wäre, Adobe hat es einfach vernachlässigt und deswegen haben wir mit Sicherheitslücken und diversen anderen, kleinen, Problemen zu kämpfen. Um es anders zu Formulieren, Flash hängt in der Vergangenheit fest und andere, offene, Technologien werden es nach und nach ersetzen.


    TL;DR: Flash im Web ist so gut wie tot, in anderen Bereichen wird es nach und nach ersetzt werden. Bis dahin wird Flash für einige Entwickler das Goto Tool sein.
  • in: Windows 10: Vollständiges Löschen von App nicht möglich

    geschrieben von strange

    CCleaner kann Windows Apps ebenfalls ohne Probleme entfernen und ganz ohne PowerShell ;)
  • in: Brenner brennt keine Daten mehr

    geschrieben von strange

    Joar, hab ich mir schon gedacht. Kann ich wohl nichts anderes machen. Dennoch danke ;)
  • in: Brenner brennt keine Daten mehr

    geschrieben von strange

    Moin, seit einiger Zeit habe ich das Problem das mein Brenner einfach keine Daten mehr brennt. Auch das lesen von gebrannten CD's/DVD's funktioniert nicht so recht, originale werden aber ohne weiteres erkannt.

    Mein Laufwerk ist ein LG GH22LS50 und ich habe schon auf der Website von LG nach entsprechenden Updates und so weiter geschaut aber nichts gefunden was helfen köönte, womit dann nur noch ein Problem mit der Hardware oder mit meinem Windows 10 (ja, ja, spart Euch die Kommentare!) übrig bleibt.

    Direkt Treiber scheint es für das Laufwerk nicht zu geben und das System ist auf einem aktuellen Stand. Ergo Treiber, sofern vorhanden, sind auf dem neusten Stand, Windows Updates sind aktuell und so weiter.

    Was auch noch interessant ist, Daten werden zwar gebrannt, aber nur in Software. Mit dem Ziel Medium passiert absolut nichts.


    Hoffentlich kann mir einer von Euch bei diesem Problem helfen, ich will vorerst vermeiden ein neues Laufwerk kaufen zu müssen.

    Danke und Gruß
    strange
  • in: Von mysql_* zu PDO

    geschrieben von strange

    //...
    $import = $dbc->quote($import);
    $import = explode(';', $import);
    //...


    Ein PDOStatement Objekt lässt sich schlecht exploden. http://php.net/manual/de/class.pdostatement.php

    Außerdem mehrfach vergabe der selben variable mit völlig unterschiedlichen Typen ist nicht wirklich das Gelbe vom Ei.

    <?php
    
    $dbh = new PDO('...');
    $sql = file_get_contens('...');
    
    // Filtering ->
    $sql = preg_replace('...');
    //...
    
    $stm = $dbh->query($sql);
    $res = $stm->fetchAll();
    foreach($res as $var) {
      //...
    }


    Das aber nur als kleines Beispiel. Wie aber auch schon erwähnt worden ist, macht PDO nur wirklich Sinn wenn du Prepared Statements benutzt und unbedingt perma-connect haben willst.


    Bei Bedarf hier mal meine kleiner sqlHelper Trait:
    <?php
    
    /**
     * SQLHelper.
     *
     * @category Traits
     * @version v0.0.1a
     *
     * @author Daniel Lieberwirth <daniellieberwirth@gmail.com>
     *
     * @copyright (c) 2014, beStrange Media
     * @license http://www.gnu.org/licenses/ GPL3
     */
    trait SQLHelper {
    
    	/**
    	 * Generates everything needed for an Select-Query.
    	 * @param string $table Table-Name
    	 * @param mixed $select <b>String:</b> Selection (default = *)<br>
    	 *						<b>Array:</b> Selections as value
    	 * @param array $params [optional] Param-Array ('DB-Field' => 'Value')
    	 * @param bool $prepared <b>True:</b> Method returns an array containing all elements needed
    	 *									  for a prepared statement<br>
    	 *						 <b>False:</b> Methods return just the Query-String for direct
    	 *									   use with a query
    	 * @return mixed <b>String:</b> SQL-String, if $prepared is false<br>
    	 *				 <b>Array:</b> Containing the SQL-String and the Params-Array
    	 * @throws \InvalidArgumentException
    	 */
    	final protected static function sqlSelect($table, $select = '*', array $params = null, $prepared = true) {
    		if(!is_string($table))
    			throw new \InvalidArgumentException('Argument #1 is not a string.');
    		if(!is_string($select) and !is_array($select))
    			throw new \InvalidArgumentException('Argument #2 is not a string or an array.');
    		if(!is_bool($prepared))
    			throw new \InvalidArgumentException('Argument #4 is not a boolean.');
    		if(is_array($select)) {
    			foreach($select as $k => $v)
    				$select[$k] = '`'.$v.'`';
    			$select = implode(' ', $select);
    		}
    		if(isset($params)) {
    			if(!$prepared) {
    				foreach($params as $k => $v)
    					$s[] = '`'.$k.'` = '.$v;
    				return 'SELECT '.$select.' FROM `'.$table.'` WHERE '.implode(' AND ', $s);
    			}
    			foreach($params as $k => $v) {
    				$s[] = '`'.$k.'` = :'.strtolower($k);
    				$p[':'.strtolower($k)] = $v;
    			}
    			return array(
    				'sql' => 'SELECT '.$select.' FROM `'.$table.'` WHERE '.implode(' AND ', $s),
    				'params' => $p
    			);
    		}
    		return 'SELECT '.$select.' FROM `'.$table.'`';
    	}
    
    	/**
    	 * Generates everything needed for an Insert-Query.
    	 * @param string $table Table-Name
    	 * @param array $params Param-Array ('DB-Field' => 'Value')
    	 * @param bool $prepared <b>True:</b> Method returns an array containg all elements needed
    	 *									  for a prepared statement<br>
    	 *						 <b>False:</b> Method returns just the Query-String for direct
    	 *									   use with a query
    	 * @return mixed <b>String:</b> SQL String, if $prepared is false<br>
    	 *				 <b>Array:</b> Containing the SQL-String and the Params-Array
    	 * @throws \InvalidArgumentException
    	 */
    	final protected static function sqlInsert($table, array $params, $prepared = true) {
    		if(!is_string($table))
    			throw new \InvalidArgumentException('Argument #1 is not a string.');
    		if(!is_bool($prepared))
    			throw new \InvalidArgumentException('Argument #3 is not a boolean.');
    		if(!$prepared) {
    			foreach($params as $k => $v) {
    				$sk[] = '`'.$k.'`';
    				$sV[] = $v;
    			}
    			return 'INSERT INTO `'.$table.'` ('.implode(', ', $sk).') VALUES ('.implode(', ', $sV).')';
    		}
    		foreach($params as $k => $v) {
    			$sK[] = '`'.$k.'`';
    			$sV[] = ':'.strtolower($k);
    			$p[':'.strtolower($k)] = $v;
    		}
    		return array(
    			'sql' => 'INSERT INTO `'.$table.'` ('.implode(', ', $sK).') '.
    					 'VALUES ('.implode(', ', $sV).')',
    			'params' => $p
    		);
    	}
    
    	/**
    	 * Generates everything needed for an Update-Query.
    	 * @param string $table Table-Name
    	 * @param array $params Param-Array ('DB-Field' => 'Value')
    	 * @param string $key Keyname for the Update-Target
    	 * @param bool $prepared <b>True:</b> Method returns an array containg all elements needed
    	 *									  for a prepared statement<br>
    	 *						 <b>False</b> Method returns just the Query-String for direct
    	 *									  use with a query
    	 * @return mixed <b>String:</b> SQL String, if $prepared is false<br>
    	 *				 <b>Array:</b> Containing the SQL-String and the Params-Array
    	 * @throws \InvalidArgumentException
    	 * @throws \OutOfBoundsException
    	 */
    	final protected static function sqlUpdate($table, array $params, $key, $prepared = true) {
    		if(!is_string($table))
    			throw new \InvalidArgumentException('Argument #1 is not a string.');
    		if(!is_string($key))
    			throw new \InvalidArgumentException('Argument #3 is not a string.');
    		if(!is_bool($prepared))
    			throw new \InvalidArgumentException('Argument #4 is not a boolean.');
    		if(!isset($params[$key]))
    			throw new \OutOfBoundsException('"'.$key.'" not found in params.');
    		$t = is_string($params[$key]) ? 'LIKE' : 'WHERE';
    		if($prepared === false) {
    			foreach($params as $k => $v)
    				$s[$k] = '`'.$k.'` = '.$v;
    			unset($s[$key]);
    			return 'UPDATE `'.$table.'` SET '.imlode(', ', $s).' '.$t.' `'.$key.'` = '.$params[$key];
    		}
    		foreach($params as $k => $v) {
    			$s[$k] = '`'.$k.'` = :'.strtolower($k);
    			$p[':'.strtolower($k)] = $v;
    		}
    		unset($s[$key]);
    		return array(
    			'sql' => 'UPDATE `'.$table.'` SET '.implode(', ', $s).' '.$t.' `'.$key.'` = :'.strtolower($key),
    			'params' => $p
    		);
    	}
    
    	/**
    	 * Gnerates a DateTime string from an DateTime object.
    	 * @param \DateTime $date Subject
    	 * @return string SQL compatible DateTime string
    	 */
    	final protected static function sqlDateTimeEncode(\DateTime $date) {
    		return $date->format(\DateTime::ISO8601);
    	}
    
    	/**
    	 * Creates a DateTime object from a DateTime string.
    	 * @param string $date 'Y-n-j H:i:s' DateTime string
    	 * @return \DateTime
    	 * @throws \InvalidArgumentException
    	 */
    	final protected static function sqlDateTimeDecode($date) {
    		if(!is_string($date))
    			throw new \InvalidArgumentException('Argument is not a string.');
    		return \DateTime::createFromFormat('Y-n-j H:i:s', $date);
    	}
    
    }

    Ich übernehme keine Garantie!
  • in: Persistente Verbindung

    geschrieben von strange

    Du musst da nicht mehr machen, wenn einer Verbindung schon besteht, wird einfach diese verwendet. Wenn nicht wird eine neue aufgebaut. Ab und zu werden auch mal 2 oder 3 Verbindungen aufgebaut, warum das so ist kann ich dir aber nicht sagen. Am Ende sind es aber immer noch weniger Verbindungen als wenn die keine Persistent Connection benutzt.
  • in: Konstanten verschachtelter Klassen

    geschrieben von strange

    In deinem Fall würde sich ein etwas anderer Ansatz lohnen. Wie karlsve schon erwähnt hat, solltest du die $config Variable als statisch definieren. Aber anstatt direkt auf die Variable zuzugreifen, würde ich anstelle eine Wrapper Methode verwenden:

    class myClassA {
    
      protected static $_config;
    
      public function config() {
        id(!isset(static::$_config)) {
          // config laden...
        }
        return static::$_config;
      }
    
    }
    
    class myClassB extends myClassA {
    
      public function foo() {
        echo $this->config['foo'];
      }
    
    }

    Alles recht simpel und man muss nicht wirklich darauf achten das man die Config manuell geladen hat, erledigt sich ja automatisch.
  • in: Geschützer Bereich in PHP

    geschrieben von strange

    Zwar ein wenig veraltet, aber bei dem folgenden Link werden auch einige Sicherheitsaspekte behandelt die Du auf jeden Fall beachten solltest: http://tut.php-quake.net/de/login.html
  • in: php und html und css code automatisch aufräumen?

    geschrieben von strange

    w3j hat recht, bei Notepad++ sind da ein ganzer Haufen PlugIns für zuständig. Einfacher wäre es da halt auf eine IDE wie Netbeans zu wechseln, was dann auch noch andere Vorteile hat.
  • in: Windows 7 vs. Windows 8 vs. Linux

    geschrieben von strange

    Mir wird schon wieder schlecht wenn ich hier so einige Aussagen lese.

    "[OSblabla], soll ja so verbugt sein!"
    "[OSblabla], ist zu teuer!"
    "[OSblabla], ist nicht benutzerfreundlich!"
    "[OSblabla], ist zu restriktiv!"
    .......

    Anleitung: Ersetze [OSblabla], mit beliebigen Betriebssystem/Distrubition/Banane


    Im Endeffekt ist völlig egal welches OS man sich auf die Platte schaufelt, alle sind gleich sch****. Und ich meine ALLE! Denn jedes OS hat seine Vor- und Nachteile, es gibt einfach nicht "Das Eine, Ultimative Betriebssystem" was alle Benutzer zufrieden stellt. Das ist ein Fakt, und da können auch noch so viele religiöse Spinner das Gegenteil behaupten.


    @TE: Nimm einfach ein Betriebssystem, mit dem Du dich am wohlsten wühlst und mit dem Du am besten klar kommst.
  • in: php und html und css code automatisch aufräumen?

    geschrieben von strange

    Fast jede IDE hat solch ein Feature, aber auch Notepad++ kann deinen Code "aufräumen". Besser wäre es natürlich, wenn du von Anfang an sauber schreiben würdest!
  • in: Potenzielle Resourcenfresser oder Sicherheitslücken?

    geschrieben von strange

    Sorry, aber was du da vor hast ist einfach nur leichtsinnig, gefährlich und dumm! Besucher sollten niemals fähig sein, nativen PHP Code auszuführen, selbst als Demonstration nicht. Dabei ist es egal welche Vorsichtsmaßnahmen du triffst, es gibt immer eine Lücke, die früher oder später gefunden und ausgenutzt wird.

    Wenn du unbedingt Demos haben willst, emuliere diese mit JS! Ausreden wie "Ich möchte JS vermeiden, weil es nervt!" gelten bei Sicherheitsfragen überhaupt nicht.
  • in: Datetime mit Microsecond - MySQL Server Version > 5.6.4

    geschrieben von strange

    lucas9991 schrieb:Rein aus Interesse, wieso würdest du denn für Textdateien vorschlagen bzw. unter welchen Bedingungen würdest du diese nutzen? Das ergibt m.E. nach heutzutage nur noch Sinn, um eine Abhängigkeit zu einer Datenbank vermeiden zu können. Sonst haben Textdateien in meinen Augen nur Nachteile.


    In Deinem speziellen Fall mag das zwar stimmen, dennoch würde ich zumindest einen Teil des Logs auf eine Textdatei spiegeln/auslagern. So kann man in eine "Wurst-Käse Scenario" meist zumindest noch einen Teil der Logs einsehen, ohne das man auf die Datenbank angewiesen ist.

    Was die Fehleranfälligkeit angeht, kann ich nur sagen, wenn man die Log-Syntax richtig gestaltet und einen entsprechenden Parser/Writer schreibt, sollte nur in den seltensten Fällen was schief gehen. Und das ist meist nur der Fall wenn eh schon was im Argen liegt. Selbst den Overhead kann man sehr gering halten, wenn man es richtig macht.

    Non-IO-Blocking ist ein anderes Problem, was man aber eventuell mit OpCode Caching vermeiden kann. Genaues kann ich dazu selbst noch nicht sagen, da ich erst damit anfange mit OpCode Caching zu arbeiten. Aber in der Theorie sollte das Problem so lösbar sein.
  • in: Die Community erscheint unfreundlich

    geschrieben von strange

    bladehunter schrieb:
    In deinem Fall muss ich ehrlich gesagt sagen, dass ich denke, dass dein Avatar nicht gerade dazu beiträgt, dass man deine Beiträge als freundlich wahrnimmt.

    Und ansonsten: Ja, lima hat eben ein eigenes Flair. Aber man gewöhnt sich dran.


    Also wenn man Avatar und Inhalt assoziiert, kann dabei auch nicht wirklich was gutes bei raus kommen. Sonst müsste man mit einem Spuckeimer bewaffnet die Lima Foren lesen, und beten das man nicht all zu sehr traumatisiert wird.
  • in: Die Community erscheint unfreundlich

    geschrieben von strange

    Lima-City ist einfach anders...

    Bin jetzt schon seit weit mehr als 10 Jahren dabei, damals noch unter einem anderen Nick, aber Heute wie Damals war Lima ein wenig komisch, aber im gutem Sinne. Es prallen hier halt unterschiedliche Mentalitäten auf einander, und was der Eine als lustigen sarkastischen Kommentar gemeint hat, ist für den Empfänger eine beleidigend und/oder unfreundlich. Das liegt immer im Auge des Betrachters.

    Meine "Reviews" in der Promo-Ecke waren berüchtigt für ihre Gnadenlosigkeit, aber auch für ihre Konstruktivität. Und mehr als nur einmal haben ein paar Leute meine Beiträge in den falschen Hals bekommen. Aber daran kann man nicht viel ändern und sollte man auch nicht. Entweder man steht zu dem gesagten oder eben nicht. Und um ehrlich zu sein, wenn ich allen immer Puderzucker in den A**** geblasen hätte, wäre ich mit Sicherheit nicht dort wo ich jetzt bin.

    Dass hier aber generell ein unfreundlicher Ton herrschen soll, ist mir völlig neu. Klar man immer mal wieder eine Pfeife die die Einschläge nicht mehr merkt, aber das hier alle so drauf sind kann ich definitiv verneinen. Und bei vielen langzeit Lima-Geschädigten weiß man einfach dass sie das nicht wirklich ernst meinen. Aber daran gewöhnt man sich einfach nach einer Weile und irgend wann kann man sich auch zu den Geschädigten zählen. Dann fängt man sogar an sowas zu vermissen.
  • in: negativ durchsichtige Schrift css

    geschrieben von strange

    Denke mal dass du RGBA noch nicht richtig verstanden hast, also hier mal ein Beispiel:
    background-color: rgba(0, 0, 0, 0.1); /*  10% Deckkraft */
    color: rgba(0, 0, 0, 1);              /* 100% Deckkraft */

    Also der Alpha-Wert ist immer 100 * WERT = WERT%

    In deinem Fall wäre der Alpha-Wert -20%, welcher in der CSS3 Spezifikation nicht vorgesehen ist.

    http://www.w3schools.com/cssref/css_colors_legal.asp
  • in: Kontakformular PHP

    geschrieben von strange

    Das war definitiv nicht im OT, es ist einfach nur gefährlich Eingaben ungefiltert zu verarbeiten, ebenso sollte man darauf achten das man Formulare Grundsätzlich via Post (<form [...] method="post" [...] >) versendet, damit man dann via "$_SERVER['REQUEST_METHOD'] === 'POST'" triggern kann. Und so weiter...

    Generell gilt einfach "Traue keinen Eingaben, egal woher sie kommen!"


    Ebenfalls gilt "Wenn man keine Ahnung hat. Einfach mal die Fresse halten!". Ist nicht böse gemeint, aber viel zu oft die Wahrheit.
  • in: Kontakformular PHP

    geschrieben von strange

    Ohne Code (nicht der aus dem Buch) und der Fehlermeldung kann man Dir nicht helfen. Zwar glauben Einige dass die "Profis" all eine Kristallkugel haben, aber die entweder kaputt oder existiert einfach nicht.

    Aber ganz ohne Antwort will ich dich auch nicht stehen lassen, also hier mal ein paar generelle Tipps die dir weiter helfen können:

    Benutze einen lokalen Server:
    Gerade wenn du erst anfängst PHP zu lernen, solltest du keinen öffentlichen Webspace benutzen. Es kann mehr schief gehen als man denkt und bei vielen Anbietern ist PHP so eingestellt das so wenig Informationen wie möglich über den Server ausgegeben werden. Kurz gesagt, debuggen geht schon mal gar nicht, da wichtige Informationen zurückgehalten werden.

    Google ist dein Freund:
    Eine simple Suche nach "http fehler 405" hätte dir zu Beispiel folgenden Link ausgespuckt: "Drück Mich!"

    Daraus lässt sich zum Beispiel schließen dass der Fehler wahrscheinlich im HTML Abschnitt befindet, zumindest wäre das meine erste Vermutung (wie gesagt, ohne den eigentlichen Code kann ich dazu nichts sagen!).

    Benutze aktuelle Quellen:
    Das Buch ist von ca. 2011, also basiert auf Wissen von 2009-2010. Zwar war das schon die 5.x Ära, aber 5.2.x und 5.3.x, und wir sind im Moment bei 5.5.x. 5.4.x bekommt zwar noch ab und zu einen Patch, aber wird demnächst auch eingemottet, da 6.x oder 7.x (sicher ist man sich da noch nicht) vor der Tür steht.

    Kurz gesagt, das Buch ist veraltet und du solltest möglicherweise nach einer alternative suchen. Es gibt einige richtig gute Tutorials und Guides im Netz, und meist sind diese komplett kostenlos. Also definitiv eine Empfehlung von meiner Seite.


    EDIT:

    @mylonky

    1. $_REQUEST ist ein NoNo!
    if($_SERVER['REQUEST_METHOD'] === 'POST') {
      // Formular verarbeiten...
    }

    So und nicht anders sollte man anfangen ein Formular zu verarbeiten.

    2. Eingabe ungefiltert zu verarbeiten ebenfalls!
    $var = filter_var($_POST['VAR'], FILTER_SANITIZE_STRING);

    Alles andere macht das Formular, und damit auch die Webseite, angreifbar.
  • in: Datetime mit Microsecond - MySQL Server Version > 5.6.4

    geschrieben von strange

    Ganz ehrlich, wozu braucht man fractions in einer Datenbank? Außer zum logen sehe ich da absolut keinen Verwendungszweck. Und ein Log sollte so oder so nicht von einer Datenbank verwaltet werden, das geht mit Textdateien eindeutig besser.
  • in: Classeninstanz 'updaten'

    geschrieben von strange

    Ganz ehrlich, du solltest nochmal über dein Klassen Modell nachdenken. Klassen Vererbung ist zwar schön und gut, aber man sollte sie auch richtig einsetzen. Grundsätzlich sollte eine Benutzer Klasse zum Beispiel, alle möglichen Felder haben die von der Application vorgesehen sind.

    Ob diese nun benutzt werden oder nicht, ist völlig egal, es macht von der Performance absolut keinen Unterschied. Wenn dann nur minimal und das ist in 99,99999% der Fälle auch völlig egal. Erst wenn die Application massiv benutzt wird, 1 Mio. anfragen die Minute, dann kann man sich über solche Optimierungen Gedanken machen.

    Außerdem sollten Klassen, wie eine Benutzer-Klasse, beschreibend sein und nur Methoden für die Manipulationund Erstellung bereitstellen. Alles andere sollte von dedizierten Klassen und Funktionen ver-/be-/abge-arbeitet werden.


    In deinem Fall würde ich einfach ein zusätzliches Feld hinzufügen, dass die Berechtigung des Benutzers beschreibt. Kein Hickhack mit unterschiedlichen/vererbten Klassen.
  • in: Wo sind die ganzen Kranken User hin?

    geschrieben von strange

    Musste glatt mal Urlaub nachschlagen...

    a) Die Trolle können auch gerne im Urlaub (echt nen komisches Wort) bleiben :D


    b) Ist schon klar das es Lustig und "Lustig" gibt... Aber ein Topic der schon in der Spam Sektion angelegt ist und offensichtlich nicht wirklich ernst gemeint ist, gleich mit einer negativen Bewertung zu "belohnen" ist auch nicht wirklich der Sinn hinter solch einem System.

    Ok, wenn ich ein A**** wäre und das komplett ernst gemeint hätte, und dazu auch noch den sonok (ja genau du) als Irren bezeichnet hätte (was eigentlich gar nicht so weit weg ist von der Wahrheit), dann könnte ich das ja noch verstehen ;)


    [Unterwäsche Update]
    Einen Teil habe ich schon gefunden, aber wenn ich so raus gehe, sitze ich in wenigen Minuten bei der Polizei und muss mir lustige Fragen anhören.

    fatfreddy schrieb:
    strange schrieb:
    Und wo verdammt, habe ich wieder meine Unterwäsche gelassen?

    Äh, jetzt wo Du es sagst... ist das braungestreifte, weiße Ding mit den übergroßen Ohrenöffnungen, das Du das auf dem Kopf trägst, eventuell doch keine Mütze?

    YAY! :cookie:
  • in: Wo sind die ganzen Kranken User hin?

    geschrieben von strange

    Oder besser: Ich komme mir fast vor wie auf dem Friedhof...


    Da ist man mal für ne Weile weg und die ganzen Irren die hier Stimmung machen sind wie vom Erdboden verschluckt. Wo sind die ganzen Sinn befreiten Topics hin, in denen man sich vergnügen kann? Was ist mit den verbalen Auseinandersetzungen, die nicht ernst gemeint sind? Und wo verdammt, habe ich wieder meine Unterwäsche gelassen?

    Letzteres ist wirklich dringend... ich will noch vor die Tür!


    [EDIT]
    Die Antwort wurde mir doch glatt mit einer negativen Bewertung gegeben. Danke das man für Spaß-Themen so richtig geil belohnt wird.
  • in: Mit PHP Quellcode suchen und einfügen?

    geschrieben von strange

    Also wenn ich dass hier so lese, dann wird mir schon wieder schlecht. Wenn Coder es nicht hin bekommen ihre Scripts anständig abzusichern, dann haben deren Scripts nichts auf einem Poduction Server verloren. Ende der Diskussion! Aber den faulen Säcken auch noch in die Karten zu spielen, in dem man deren Dummheiten wieder ausbügelt ist definitiv nicht der richtige Weg.

    Mal abgesehen davon dass man mit sowas die Dummen und Faulen unterstützt, ist von solchen Methoden so oder so abzuraten. Größere Löcher in die Security kann mit solchen Scripts wirklich nicht in ein System machen, selbst wenn man alles doppelt und dreifach checkt. Automatisierte Code Änderungen sind ein NoGo und das aus gutem Grund.
  • in: Klassen und Objektbezeichnung

    geschrieben von strange

    Ausgehend von deinem Beispiel mit einem User Objekt, hier mal ein praktisches Beispiel wie man das Objekt definiert und mehrere Instanzen verwalten kann:
    class User {
    
      // Felder
      public $ID;
      public $Name;
      public $Email;
    
      // Constructor
      public function __construct($id, $name, $email) {
        $this->ID = $id;
        $this->Name = $name;
        $this->Email = $email;
      }
    
    }

    Das User Objekt ist definiert und wie dir mit Sicherheit aufgefallen ist habe ich ein zusätzliches Feld hinzugefügt "ID". Datenbank Einträge über einen String als Selector zu manipulieren kann sehr schnell in die Hose gehen. Also benutz besser die ID des Eintrags, um Probleme zu vermeiden.

    Um jetzt mehrere Instanzen von dem User Objekt zu verwalten, kannst du folgenden Code verwenden:
    $res = mysql_query('...');
    $users = array();
    while(($data = mysql_fetch_assoc($res)) !== NULL) {
      $users[$data['ID']] = new User($data['ID'], $data['Name'], $data['Email']);
    }

    Dies ist die simpelste Methode um mehrere Objekte auf einmal zu verwalten, aber es geht auch noch ein wenig einfacher und schonender für die Application:
    class UserManager {
    
      protected static $users = array();
    
      public static getUserByID($id) {
        if(!isset(static::$users[$id]) or !(static::$users[$id] instanceof User)) {
          // Benutzer aus der Datenbank laden, Objekt erstellen und dem static::$users array zuweisen...
        }
        return static::$users[$id];
      }
    
      // Und so weiter...
    
    }

    In der oben angerissenen Klasse, werden User Instanzen erst generiert wenn sie benötigt werden. Statt getUserByID($id), kann man natürlich auch andere Felder benutzen die in der Datenbank abgelegt sind. Genauso sind auch Batch Abfragen möglich und viele andere Dinge die einem da so noch einfallen.

    Wichtig ist nur, dass du genau weißt wo welche User Instanz abgelegt ist und wie diese identifiziert wird. Eine Limit hast du in dem meisten Fällen eher nicht, dennoch bedeutet das nicht dass du jetzt einfach alle User in ein einzelnes Array packen solltest. Immer nur so viel laden/abfragen/bearbeiten wie es nötig ist.
  • in: Verdächtige Seitenaufrufe

    geschrieben von strange

    Sich auf prepared statements zu verlassen ist nicht wirklich ein saubere Lösung. Generell gilt, prüfe jede einhabe die von deiner Application verarbeitet wird. Das fängt beim richtigen Type an und hört irgendwo beim einem validen Wert auf.

    Shortcuts mit filter_var() http://php.net/manual/de/function.filter-var.php: Speziell die Sanatize Filter sind hier interessant. "FILTER_SANITIZE_EMAIL" zum Beispiel.


    In deinem Beispiel, wird offensichtlich ein integer für $_GET['go'] erwartet. Einfaches Type-Casting reicht zwar in den meisten Fällen aus, aber wenn du nur eine bestimmte Bandbreite an Ziffern erwartest, kannst du überlange Zahlen einfach beschneiden, oder auch einfach direkt ignorieren. Denn die kommen mit Sicherheit nicht von einer vertrauenswürdigen Quelle.

    Und mit diesem Konzept kannst du alle Eingaben behandeln die verarbeitet werden. Damit kannst Du schon einen ganzen Haufen an Angriffsmöglichkeiten im Keim ersticken und die 0815 Scripts kommen da meist so, oder so nicht drauf klar.
  • in: PHP objektorientiert: Verständnisfrage

    geschrieben von strange

    Allgemein kannst du das machen wie Du willst, aber einen Method wrapper würde ich dennoch benutzen. Also:
    $reportObj->vDetailGetType(); // GlobalScope

    Das ist einfacher zu handhaben.
  • in: MySQLi-Verbindung klappt nicht

    geschrieben von strange

    Also wenn du schon den Weg über MySQLi gehen willst, kannst Du auch einen weiteren Schritt machen und gleich PDO verwenden. Mit PDO hast Du eine einheitliche Klasse die sich mit (fast) allen Datenbank-Typen verbinden kann.

    http://is2.php.net/manual/de/book.pdo.php
  • in: HTML5 und Link Validität

    geschrieben von strange

    Du könntest http_build_query() verwenden um Deine Links dynamisch zu generieren. Parameter gehen dann einfach nur noch in ein array und die Funktion macht den Rest:

    <?
    $url = 'http://www.example.com/';
    $param = array(
      'thingA' => 'valueA',
      'thingB' => 'valueB'
    );
    $new_url = $url.'?'.html_build_query($param, '', '&amp;');


    Am $new_url hat dann eine Value von: http://www.example.com/?thingA=valueA&amp;thingB=valueB
  • in: Inhalt einer Variable "verschwindet"

    geschrieben von strange

    Also, entweder ist das nicht der komplette Code, oder Du hast einen massiven Fehler gemacht, wenn $liga und $Gastm nicht definiert sind wenn sie in den Query eingefügt werden. Kurz gesagt der Inhalt von $abfrage ist gleich "SELECT Trainer FROM tabelle_ WHERE Verein = ' ' " was in Deinem Fall mit Sicherheit ein leeres Ergebniss liefern dürfte.

    Dazu kommt auch noch, wie schon von anderen erwähnt, das Du User-Eingaben un gefiltert verarbeitet und dass ist einfach mal das dümmste was man machen kann. Grundregel: Vertraue keiner User-Eingabe! Nicht einmal Deinen eigenen!


    Jetzt noch mal ein wenig zu dem Code an sich:

    Verwende switch() für die ganzen elseif's!
    Der Code wird dadurch einfach übersichtlicher und ist auch einfacher erweiterbar.

    Wenn Du fopen() verwendest, immer auch fclose() verwenden!
    Damit vermeidest Du ggf. später auftretende Probleme und andere Coder werden dadurch nicht verwirrt.

    Benutze MySQLi oder PDO statt standard mysql!
    Beide Klassen bieten einfache Methoden/Functionen die einem das Escapen ersparen und haben nebenbei auch noch ein paar Extras.

    Verwende niemals require_once() wenn Du Templates laden willst!
    Standard include() reicht da völlig aus! include_once()/require_once() ist mehr für Klassen gedacht die nur einmal in einem Project geladen werden müssen.

    Variablen werden immer klein geschrieben!
    Zwar weniger wichtig wenn Du nur allein codest, aber Du solltest Dir angewöhnen Variablen klein zu schreiben. Also $gastm statt $Gastm und so weiter. Einzig Klassen werden großgeschreiben und Konstanten werden komplett in caps geschrieben (gibt nen paar Ausnahmen)


    Ich könnte denke mal noch ne ganze Stunde "Tipps" geben, aber dafür habe ich nicht wirklich Zeit. Falls das nicht der komplette Code ist, dann bitte erst den ganzen Code posten (eventuelle Passwörter und so weiter entfernen!) und erst dann kann man Dir wirklich helfen. Falls das aber der komplette Code war, dann siehe oben!
  • in: PHP Trennung Logik und Design: Best Practices?

    geschrieben von strange

    Bei größeren Projekten wird in PHP zwischen 3 Bereichen unterscheiden:

    Core-Logic - Liefert übergreifende Klassen, Funktionen, API/AJAX Schnittstellen, alle Jobs die nicht Module/Seiten spezifisch sind und so weiter.

    Module/Page-Logic - Kümmert sich um Module/Page spezifische Tasks und liefert am Ende die Page an den Client aus.

    Design - Pures HTML/JS... Logic wird meistens via JS/AJAX geliefert und ist meist aber teil der Module/Page-Logic.


    Wie man diese Trennung erreicht hängt meist davon ab ob man sich auf Frameworks (nicht wirklich empfohlen) verlässt, oder ob man genug Zeit hat alles im Prinzip selber zu machen. Am Ende ist es dann auch egal ob das Projekt dann aus "nur" 20 oder 200 Dateien besteht. Wenn die Dokumentation daraus ne logische Geschichte machen kann, dann ist das meist kein Problem. Dennoch sollte man vermeiden für einzelne Funktionen ne separate Dateien anzulegen.

    Bei Klassen ist das ein wenig anders, die sollten auf jeden Fall immer in eine separate Datei, weil ein Großteil der Klassen gerne mal über 300 Zeilen lang ist und wenn dann mehrere Klassen in einer Datei abhängen, geht die Übersicht flöten.

    Ansonsten, wie schon meine Vorposter gesagt haben, PHP ist recht statisch, sprich was einmal zum Client gesendet wurde, ist beim Client und keine weitere Interaktion ist mehr möglich. Außer man verwendet halt AJAX, um ggf. Daten nach zu laden, zu verändern und so weiter.

    Der aktuelle Trend geht in Richtung AJAX-Only, bei dem der Client nur noch das Design bekommt und die Logic über AJAX abgehandelt wird. Zwar sind meist schon ein paar Basis-Informationen angelegt worden (Session-Start und der gleichen), aber in vielen Fällen wird Heute nicht mehr beim klicken eines Links die Seite neu geladen, sondern via AJAX angepasst. Ein gutes Beispiel ist Google, was mittlerweile komplett ohne PageReload auskommt.

    Was Du am Ende machst, bleibt natürlich Dir überlassen...
  • in: Dynamic debug_backtrace()?

    geschrieben von strange

    Ich habe mit absicht nicht den weg über set_error_handler() gewählt, um mir einfach ein paar optionen offen zu halten. Zum Beispiel wird bei meiner Klasse unterschieden ob es "nur" debug oder warn messages sind die durch die classe wandern. Außerdem ist das logging zu einer datei nur optional. Dazu kommt noch eine optionale HTML Ausgabe der Messages.

    Kurz gesagt, das ganze ist recht dynamisch und ich will möchte keine bestehenden PHP-Funktionen ersetzen.


    Den Trace brauche ich dazu um genau zu wissen wo der Fehler aufgetaucht ist. Mit der aktuellen Klasse verliert man recht schnell den überblick, wo der Fehler aufgetaucht ist.

    Sprich: DateiName -> Line -> Function -> Args

    Aber dass ist nicht wirklich das Problem, sondern wie ich herausfinden auf welcher Position im, vom debug_backtrace() erzeugten, Array sich der Ursprung befindet, ohne wirklich zu wissen wo genau der Trace gestartet wurde.
  • in: Dynamic debug_backtrace()?

    geschrieben von strange

    Moin,

    ich kämpfe im moment ein wenig mit debug_backtrace() um meiner debug class sachen wie linenumbers und so weiter hinzuzufügen. Einzige problem was ich im moment habe, ich weiß nie von wo der Trace abgefeuert wird. Sprich ich kann kann nicht einfach bei gehen und sagen $trace['X'] ist der ursprung des Trace.

    Hier das Scenario:

    DebugClass
    class myClass {
    
        // TracerMethod ->
        private static function backtrace() {
            // gib nen sauber trace zurück
        }
    
        // RandomMethod ->
        public function myMethod1($arg1, $arg2....) {
            $trace = self::backtrace();
            // mach den rest
        }
    
    }

    Die Klasse wird irgendwo in einem Projekt eingebunden und soll dann einfach funktionieren. Egal wo sie dann aufgerufen wird.

    Beispiel:
    // DateiA im root ->
    require_once('inc/class/myClass.php');
    $class->myMethod1();
    require('DateiB');
    
    // DateiB in /folder1/folder2/
    $class->myMethod2(); // ähnlich wie myMethod1()

    Im Fall von DateiB taucht im Trace auch require(), und ggf. alle andere Funktionen, auf. Ich will aber nur die daten vom $class->myMethod() Call haben.

    Hoffentlich habe ich mir klar genug ausgedrückt...

    Und nein, ich will nicht auf irgend welche fertigen Klassen zurückgreifen, überladene Frameworks verwenden, oder sonst irgend nen komischen Käse machen. Ich will die Klasse erstellen, weil ich davon lernen will, nicht um das Rad neu zu erfinden!
  • in: Finde den Fehler nicht. Parse Error

    geschrieben von strange

    Also der angegebene Fehler ist nicht wirklich Dein Problem!

    Dein Problem ist, dass dieser Code Vorne und HInten nicht wirklich passt. Du hast ne while() Schleife laufen, die keine ist, IfElse Abfragen die keine sind und diverse andere Sachen die schon im Ansatz flasch sind.

    Ein massives Problem ist die nicht sichere verarbeitung von $_POST Variablen. Alle Variablen die über $_POST, oder anderen nicht ServerSide-Quellen, kommen, müssen doppelt und dreifach geprüft werden!

    Vertraue niemals Eingaben die nicht vom Server kommen und selbst die sollte man in einigen Fällen auch überprüfen!


    Allgemein bleibt zu sagen, Du solltest Dich eher nochmal hinsetzen und nen PHP Tutorial komplett durchgehen. Denn das hier ist eine Katastrophe und kein PHP-Code. http://tut.php-quake.net/de/ ist eine gute Anlaufstelle um praxisorientiert PHP zu lernen und je nach dem wie viel Zeit Du am Tag hast, bist damit in nen paar Tagen fertig und hast die "Basics" auf dem Kasten, zumindest wenn Du Dich nicht gerade Dumm anstellst.
  • in: Ein kleiner Miniblog

    geschrieben von strange


    Blau sollte er sein, um an Blaupausen zu erinnern. Ich hatte ihn bis vor kurzen auch Dunkler, nur erscheint das Blau dann auf diversen Monitoren fast schon als Schwarz (auch bei den Scans). Darum hab ich alles Blau insgesamt aufgehellt. Was nun an einem Monitor Knallt ist am nächsten ein Dunkelblau ...


    http://browse.deviantart.com/?qh=&section=&q=blueprint

    Hier hast mal nen paar Möglichkeiten, wie man nen Blueprint Look erreichen kann, ohne das die AUgen anfangen zu bluten xD


    1) Hmm - scheint aber zu klappen :-D

    "Scheint zu klappen" und "klappt einfach" sind zwei verschiedenen Dinge. Die Angaben in "em" können Dich in den Arsch beißen wenn Du irgend wann einmal beigehen solltest und ein paar Sachen ändern willst. Mach es einmal richtig und spare Dir am Ende ein menge Arbeit.
  • in: Log Datei erstellen möglichst einfach

    geschrieben von strange

    Also, um gescheite Logs zu erstellen, muss man zwangsweise relativ tief in den Code eingreifen, wenn mann es richtig machen will. Alles andere ist Käse. Man kann nicht einfach bei gehen und schlicht alle Daten aus $_POST in nen Log klatschen, weil es dann auch passieren kann, das unverschlüsselte Passwörter im Log landen und das sollte man auf jeden Fall vermeiden.

    Um es relativ einfach zu halten, solltest Du eine Log-Klasse erstellen, die dann über ne Methode und 1-2 Parametern gefüttert wird:
    $log->add('MSG', $uid);


    Falls die UserID via Session gespeichert wird, brauchst sogar nur ein Parameter. Mit der Klasse ermittelst Du dann den UserNamen, die Uhrzeit und so weiter und speicherst das alles in eine Log Datei. (fopen('pfad/datei.endung', 'a') is der sehr praktisch).


    Wenn Du einmal die Klasse erstellt hast, ist der Rest nur noch Copy und Paste, mit ein wenig Tippen und wenn Dein Kunde dann zusätzliche Seiten erstellen will, brauchst eigentlich nur die $log->add() Methode gut dokumentieren, bzw. das ganze Projekt sollte gut dokumentiert sein, und Dein Job is damit erledigt. Falls der Kunde dann extra Seiten erstellt und die LogFunktion nicht verwendet, dann ist das nicht mehr Dein Bier. Außer Du hast eine Möglichkeit eingebaut via BackEnd extra Seiten zu erstellen, dann sollte es aber auch kein Problem sein den Vorgang dort mitzuloggen.
  • in: Ein kleiner Miniblog

    geschrieben von strange

    Muhahahaha... Zeit zum Sonok bashen :P

    Dunkel blauer Hintergrund, is nen NoNo! Geht extrem auf die Augen und nach 10 Sekunden haben die Augen kein Bock mehr weiter zu lesen und sehenen sich nach nicht Jugendfreien-Material. Wenn es unbedingt ein Blau sein muss, dann entweder ein wenig dunkler und in Richtung Grau, oder heller und ebenfalls ein wenig Richtung Grau. Belasstet die Augen weniger und man kann auch tatsächlich den Text lesen.

    Der Text selbst könnte ein wenig Format gebrauchen, erst recht wenn alles kleingeschrieben wird. Ansonsten sind längere Absätze sehr schwer, bis garnicht lesbar.

    Ansonsten habe ich net wirklich viel zu meckern, zumindest auf der Design-Seite. Du hättest ggf., den MousOverEffekt vom Blog auch noch mit auf die Startseite mit übernehmen können, wirkt ein wenig komisch wenn ein und die selbe "Anzeige" unterschiedlich reagiert.


    Nun mal zur Technik:

    1. Entscheide Dich für eine Größenangabe... entweder px (absolut) oder em (relativ). Beides verträgt sich nicht wirklich gut.
    2. Im BodyTag gammelt noch nen StyleAttribut rum, was keine Parameter hat.
    3. Die Navigation is nicht konsequent durchgesetzt. Je nach dem auf welcher Seite man ist, werden immer ander Links angezeigt.

    Für Zeug was ich übersehen habe übernehme ich im Moment keine Haftung... bin schon halb am pennen... wer mir das Morgen/Nachher nochmal genauer angucken. Aber für den Anfang ist die Nummer schon mal nicht wirklich schlecht... aber auch nciht wirklich gut xD
  • in: Log Datei erstellen möglichst einfach

    geschrieben von strange

    Nen paar mehr Infos sind da schon nötig:

    1. Ist alles selbst gecodet und kennst Du Dich in den Struckturen aus?
    2. Wenn kein Eigenbau, was wird verwendet? (ggf. gibt es ja schon entsprechende Mods/AddOns/etc.)
    3. Logs als Datei oder in die DB?


    Also wenn der Kunde auf die Daten recht einfach zugreifen möchte und das ganze auch noch übersichtlich sein soll. Dann solltest Du auf jeden Fall in die Datenbank, ggf. auch in eine CSV, loggen und das ganze dann via HTML aufbereiten, damit es übersichtlich bleibt. Das ganze geht zwar auch mit ner TXT, is aber net wirklich übersichtlich und mann kann auch keine Filter anwenden, um das auslesen ein wenig zu vereinfachen.
  • in: REGEX: WertA und WertB aus einem String extrahieren

    geschrieben von strange

    An den weg über explode() habe ich garnet gedacht, danke für den denkanstoß :D
  • in: REGEX: WertA und WertB aus einem String extrahieren

    geschrieben von strange

    Moin,

    der Titel ist denke mal nicht wirklich gut gewählt, aber trifft ungefair das Ziel was ich erreichen will.

    Ich möchte aus folgendem Beispiel-String WertA und WertB in ein 2D-Array packen:
    nutzloses Zeug...
    Komische Zeichen {WertA.WertB} weitere Zeichen
    ...
    ...
    ...
    Wieder nen paar Zeichen {WertA.WertD} und so weiter...


    Das Array soll am Ende wie folgt aussehen:
    $array = array(
        'WertA+WertB' => array('type' => $WertA, 'name' => $WertB),
        'WertA+WertD' => array('type' => $WertA, 'name' => $WertD),
        ...
    );


    Sprich pro {*} einen neuen Eintrag in der ersten Dimension und dort dann halt die beiden Werte aus {*} separiert.


    Danke schon mal für die Hilfe, ich habe da im Moment irgend wie nen Brett vorm Kop und komm einfach nicht wirklich weiter -.-
  • in: Frage wieso der Code nicht funktioniert ?

    geschrieben von strange

    mysql_query('INSERT INTO `info` VALUES ('', '.$_SESSION['user_id'].', UNIX_TIMESTAMP(), '.$info_name.', '.$info_sex.', '.$info_age.')');


    QueryCode war falsch... will jetzt keinen Roman schreiben, wirst schon sehen was ich geändert habe.

    Und gewöhne Dir entweder SingleQoutes oder DoubleQoutes an, nicht beides!
  • in: Monitor "sendet" Hochfrequenzton, was tun?

    geschrieben von strange

    Es kommen da so einige Sachen in Frage die da im Eimer sind, vorher aber noch einmal ein paar Fragen:

    1. Ist der Ton auch noch da wenn Du das Netzkabel entfernt hast?
    2. Ist der Ton auch noch da wenn Du den Monitor vom PC getrennt hast?
    3. Ist der Ton auch direkt nach dem Einschalten da, sprich wenn der Monitor noch kalt ist?
    4. Ist der Ton noch da wenn Du den Monitor leicht abklopfst (nicht dagegen Schlagen, sondern nur leicht Klopfen, am besten in der Nähe der Platinen)?
    5. Überschneiden Sich keine anderen Kabel mit den Monitor-Kabeln, bzw. verlaufen parallel?

    6. Sicher dass der Ton vom Monitor kommt?
  • in: HTML Code verschlüsseln oder unsichtbar machen?

    geschrieben von strange

    Kurze Antwort: Es geht nicht!

    Lange Antwort: Sowas macht nicht wirklich Sinn, da es dann zulange dauert die Seite entschlüsseln und es dabei auch noch häufig zu Problemen kommen kann (unterschiedliche Methoden, falscher Key, etc.).

    Der Umweg über iFrames ist zwar möglich, hindert aber keinen daran die Seite doch zu kopieren. Außerdem sind iFrames somit der letzte scheiß den man verwenden kann, da sie mehr Probleme verursachen, als zu lösen.

    JavaScript ist auch eine Möglichkeit, den Aufbau der Seite zu bremsen, denn um was mit JS darstellen zu können, muss es wieder HTML sein, also Sackgasse und je nach Browser braucht die Seite dann eh eine Ewigkeit bis sie geladen ist.

    Nächste Möglichkeit Flash... ähm ja, vergiss es!

    Silverlight... ähm ja... siehe Flash!


    Kurz gesagt, vergiss es einfach Deine Seite zu verschlüsseln, wenn ich an den Code ran will, dann komme ich da auch ran und das ohne großen Aufwand. Außerdem was ist überhaupt an genau Deiner Seite so besonders, das Du den Quelltext schützen musst? Passwort abfrage via JS direkt im HTML Code? Dann solltest Du Dir mal eher Gedanken darüber machen, wie Du eine andere Methode bei Dir einbauen kannst, z.B. PHP, AJAX/PHP, etc., denn sowas ist war sogar schon vor 10-15 Jahren einfach nur dumm!
  • in: SESSION funktioniert so nicht...

    geschrieben von strange

    Die Fehlerberichte sind mit Absicht auf Lima deaktiviert und auch via ini_set kann man da nicht viel machen. Sprich Lokal bei Dir via XAMPP Deinen Code testen und dann hier hochladen, wenn alles richtig läuft. XAMPP ist aber eine recht unsichere Sache und es kann sein, das bei Dir Lokal alles richtig läuft, Du aber in einer richtigen Serverumgebung Deinen Code nicht zum laufen bekommst. Kurz gesagt, was bei XAMPP läuft, läuft nicht unbedingt auf allen Servern!

    Btw. error_reporting(E_ALL | E_STRICT) und ini_set('display_errors', 'On'), kannst Dir bei XAMPP ebenfalls sparen, ist per Default so definiert, aber es schadet nicht wirklich...


    Außerdem entscheide Dich entweder für Double- oder Single-Qoutes, nicht beides. Du wirst sonst später auf Probleme treffen, die Dir ziemlich den Tag versauen können. Persönlich bevorzuge ich Single-Qoutes, da man nicht mehr escapen muss, aber man kann dann leider nicht mehr \n und so weiter verwenden. Aber da man sowas eher selten verwendet, rate ich Dir zu Single-Qoutes.


    Dass das fehlende Semikolon am Ende des Scripts keinen Fehler verursacht hat, liegt einfach daran, das keine anderen Befehle mehr hinter dem "echo" sind. Dennoch solltest Du auch dort das Semikolon setzen, falls Du Datei inkludierst, sonst gibt es halt nen Fehler.
  • in: OOP - Get und Array...

    geschrieben von strange

    Wenn Du es auf diese Art nur für Dich verwendest, ist es egal wie Du es umsetzt. Aber wenn Du jetzt Deine Class für andere bereitstellen willst, solltest Du ein paar Sachen ändern, den bei $class->getArray($param); erwarte ich als Ausgabe das Array und nicht die Value eines Eintrags aus dem Array, selbst wenn es eigentlich klar sein sollte dass wenn man einen Parameter an die Methode weitergibt, und es mit Arrays zu tun hat, das am Ende die Value raus kommt.

    Außerdem macht es keinen Sinn eine Methode für ein Array bereitzustellen, das eh public geflagt ist. Sprich ich kann eh via $class->array[$param] direkt auf die Value zugreifen und brauch nicht erst den "Umweg" über eine Methode nehmen. Kurz um:

    protected $array;
    
    public function getArrayValue($param) {
        return $this->array[$param];
    }


    Oder wenn man mehrere Werte ausgeben will, bzw. eine Methode für alle Werte haben will:

    <?php
    
    // Class
    class myClass {
    
    	// Vars->
    	protected $array = array("Hallo", "Welt");
    	protected $string = "Hallo Welt";
    	protected $int = 25;
    
    
    	// getValue ->
    	public function getValue($var, $param = null) {
    		if(is_array($ret = $this->$var) and $param != null) {
    			return $ret[$param];
    		} else {
    			return $this->$var;
    		}
    	}
    
    }
    
    $class = new myClass();
    echo var_dump($class->getValue("array", "1"));
    // Ausgabe: string(4) "Welt"
    
    echo var_dump($class->getValue("array"));
    // Ausgabe: array(2) { [0]=> string(5) "Hallo" [1]=> string(4) "Welt" }
    
    echo var_dump($class->getValue("string"));
    // Ausgabe: string(10) "Hallo Welt"
    
    echo var_dump($class->getValue("int"));
    // Ausgabe: int(25)
    
    ?>


    Musst das ganze ggf. noch ein wenig anpassen und nen Abfangmechanismus einbauen falls es die übergebene Variabel nicht gibt, oder die Variable kein Array ist, aber es sollte klar sein was gemeint ist und ich will hier auch nicht alles vorkauen. Sollst ja auch noch was lernen dabei ;)
  • in: Mit Windows 8 kein DualBoot mehr

    geschrieben von strange

    DualBoot ist immer noch vorhanden, habe auf diesem System Win8 als auch Win7 und ein Linux installiert. Beim Boot des System kann ich wie gewohnt auswählen welches System ich booten will. Win8 hat sogar einen neuen BootLoader, der endlich via Maus gesteuert werden kann und wesentlich besser aussieht als der alte Loader, der sich seid Windows Xp nicht mehr wirklich geändert hat.

    Nachteil, der Win8 Loader startet das System neu, wenn man nicht Win8 auswählt. Das hat denke mal mit der Win8 Boot-Routine zu tun, da Win8 im Prinzip nicht mehr wirklich heruntergefahren wird. Damit kann man denke ich mal leben... so viel Zeit geht dabei nämlich nicht verloren.

    Kurz gesagt, mit Win8, kann man immer noch wählen welches System man laden will...
  • in: [C#] - MethodOverload oder optionale Parameter?

    geschrieben von strange

    Ok, 76ms bei 10Millionen Durchläufen ist fast nichts und vom Speicher her sollte es auch nicht wirklich extrem wichtig zu sein welche Variante man nun genau wählt. Danke für den kleinen Test ;)
  • in: [C#] - MethodOverload oder optionale Parameter?

    geschrieben von strange

    Es geht mir eher darum ob es zwischen dem Überladen und den optionalen Parametern, einen Leistungsunterschied gibt, sowohl was den Speicher und die Geschwindigkeit anbelangt. Lesbarkeit und so weiter, ist mir nicht wirklich wichtig, habe da eh meinen ganz eigenen Stil (zumindest wenn ich alleine Arbeite) :D
  • in: [C#] - MethodOverload oder optionale Parameter?

    geschrieben von strange

    Moin,

    aktuell bin ich grade dabei die ganze Nummer mit dem überladen von Methoden, bzw. optionalen Parametern, auseinander zu setzen und frage mich welche dieser Beiden Methoden nun eigentlich die bessere ist, in Hinsicht auf Speicher und Geschwindigkeit.

    Vom Quellcode her sind die optionalen Parameter ganz klar im Vorteil, das ich nur noch eine Methode schreiben muss, aber ist sie auch die effektivste?

    Danke schon mal für die Antworten, falls welche kommen :D


    EDIT: Meine Frage hat sich erübrigt. Ein Überladen ist anscheinend ein wenig besser, zwar nicht für mich, da ich mehr Arbeit habe, aber man rennt am Ende nicht so schnell in Probleme.

    EDIT2: Geht doch so wie ich mir das gedacht habe... also bleibt die Frage bestehen!
  • in: Aufklapplogin Webseite

    geschrieben von strange

    jQuery sollte Dir da helfen...

    Gibt dort genug Beispiele wie Du einen solchen Login gestalten, bzw. sogar via AJAX durchführen, kannst.
  • in: C# Verständnis Frage: Typen und Arrays

    geschrieben von strange

    Danke für die sehr ausführliche Beschreibung, bin mittlerweile auf die selbe Idee gekommen und beiße mir jetzt sogar in den Arsch, weil ich da noch nicht früher drauf gekommen bin. Bin wohl zu sehr in meine extrem verschachtelten Arrays in PHP verliebt :P

    Werde mir wohl angewöhnen müssen Arrays nur noch dann einzusetzen wenn ich sie wirklich brauche...
  • in: C# Verständnis Frage: Typen und Arrays

    geschrieben von strange

    Ok, das bestätigt meine Vermutung, das ich den "Umweg" über Umwandlungen nehmen muss. Aber danke ;)
  • in: C# Verständnis Frage: Typen und Arrays

    geschrieben von strange

    Danke erst einmal für die Info... das mit der Datenbank habe ich nur mal ein Beispiel genommen, da dies für mich dann ein wenig einfacher zu verstehen ist, da ich halt aus der PHP-Ecke komme und man dort halt Arrays mit dem vollpacken kann, was man will und man ist halt nicht nur auf Int oder andere Typen beschränkt.

    Mir geht es hauptsächlich darum, ob es eine Möglichkeit gibt dies auf C# zu übersetzen:
    $array = array('string1', true, 25, 'string2'), 42;

    (string / bool / int / string)

    Und laut Klassenbeschreibung ist auch List<> Typ-gebunden: [KlickMich]


    Aber danke schon mal für den Tipp mit dem Wrapper, den werde ich demnächst wohl brauchen :D
  • in: C# Verständnis Frage: Typen und Arrays

    geschrieben von strange

    Moin,

    als alter PHP Hase wollte ich nun mal C# anfangen und versuche im Moment diese ganze Sache mit den restriktiven Variablen zu verstehen. Um genauer zu sein, restriktiven Arrays (int[] myArr = new int[x];).

    Bis jetzt habe ich es so verstanden, dass ein Array einen Typ zugewiesen bekommt und dann nur diesen Typ halten kann. Sprich ich kann jetzt nicht beigehen und einen String oder Bool ins Array schmeißen, wie ich es aus PHP kenne. Wie kann ich jetzt, zum Beispiel, eine Tabelle aus einer Datenbank einlesen und als Array initialisieren, was verschiedene Datentypen enthält?

    Weil wenn ich das soweit richtig verstanden habe, müsste ich dann die Daten als Strings initialisieren und dann bei Verwendung entsprechend konvertieren? Aber das geht ja auch nicht wirklich immer gut... soweit ich weiß kann man String nicht zu Bool konvertieren, oder?#

    Wäre nett wenn mich da jemand aufklären kann :D


    EDIT: ggf. schlecht gewählter Titel...
  • in: Soundkarte piep bei Game

    geschrieben von strange

    Betriebssystem wäre noch interessant, wenn Du Windows 7 benutzt wundert mich das weniger. Win7 ist bekannt für seine kleineren Audio Probleme. Auch die Art des Piepen ist wichtig. Ist das mehr ein Feedback Piepsen?

    Leider ist ASROCK nicht gerade der Hersteller der seine Treiber recht aktuell hält, aber Du kannst mal via Google nach CM65XX suchen, bzw. nach Treibern suchen die einen SoundChip aus der selben Baureihe unterstützen, die sind meist kompatibel.
  • in: Windows 8 ab morgen 5 Uhr zum Download

    geschrieben von strange

    kalinawalsjakoff schrieb:
    strange schrieb:
    So hab jetzt mal ein wenig mit Win8 gespielt gehabt und es macht einen recht guten Eindruck. Aber wie schon befürchtet, die Metro Oberfläche ist der letzte Scheiß um per Maus und Tastatur bedient zu werden.

    Sonst habe ich aber nicht viel zu meckern, Win7 Treiber lassen sich ohne Probleme installieren und auch sonst sehe ich keinen massiven Unterschiede zu Win7 (ausgenommen die neue Oberfläche). Auf jeden Fall hoffe ich das MS den Schuss noch hört und eine Option einbaut um den Metro-Rotz zu deaktivieren und der gute alte Desktop per Default verwendet wird.

    Aber mal abwarten, dauert ja noch ne Weile bis zur richtigen Beta :D


    Ich habe zwar schon einiges über Windows 8 gelesen in der c't, war allerdings schon vor ein paar Ausgaben. Metro soll ja, wenn mich nicht alle täuscht, für die Verwendung auf Netbooks und Tablets vorgesehen sein, aber auch für PC's mit Touchscreen (ich weiß jetzt nicht wie die Dinger heißen). Aber es soll durchaus möglich werden zwischen dem alten Desktop und und diesem Metro hin und her zu wechseln bei Bedarf.

    Aber wie gesagt, das habe ich in einer Juni oder Juli Ausgabe der c't gelesen und das kann sich mittlerweile schon wieder geändert haben. Vielleicht sollte man Win8 überspringen und dann das nächste Windows nutzen wo diese Oberfläche schon besser integriert ist.... ich lass mich überraschen und warte erstmal den verkaufsstart ab um zu sehn, was dann die Leute über Windows 8 schreiben.


    Man kann ohne Probleme zwischen dem klassischen Desktop und der Metro-Oberfläche wechseln, nur ist die Metro-Oberfläche für jemand der kein Touch-Device hat nicht wirklich nützlich. Dazu ist es zu schwer zu bedienen und auch recht unlogisch (für Maus und Tastatur) aufgebaut. Aber wie gesagt, die DevPreview ist ja eher sowas wie eine etwas ausgereiftere Alpha-Version, also kann man noch darauf hoffen das sich da noch was ändert.


    EDIT: Habe mal ein wenig in der Registry herum gesucht und so wie es scheint sind einige Key dabei, die die alte Oberfläche wieder aktivieren können. Also könnte es durchaus sein, das MS einen Klassik-Mode mit integrieren wird, bzw. eine Option um Metro zu deaktivieren. Wenn es MS nicht selber macht, dann wird es mit Sicherheit entsprechende Tools geben die dass dann erledigen :D

    Wer auf Win8 das Klassik-Startmenü haben will einfach HKEY_CURRENT_USER\Software\Microsoft\Windows\Current Version\Explorer RPEnabled von 1 auf 0 ändern. Aber dieser Tweak ist mit Vorsicht zu genießen, bei mir bugt dadurch die gesamte Oberfläche!
  • in: Windows 8 ab morgen 5 Uhr zum Download

    geschrieben von strange

    So hab jetzt mal ein wenig mit Win8 gespielt gehabt und es macht einen recht guten Eindruck. Aber wie schon befürchtet, die Metro Oberfläche ist der letzte Scheiß um per Maus und Tastatur bedient zu werden.

    Sonst habe ich aber nicht viel zu meckern, Win7 Treiber lassen sich ohne Probleme installieren und auch sonst sehe ich keinen massiven Unterschiede zu Win7 (ausgenommen die neue Oberfläche). Auf jeden Fall hoffe ich das MS den Schuss noch hört und eine Option einbaut um den Metro-Rotz zu deaktivieren und der gute alte Desktop per Default verwendet wird.

    Aber mal abwarten, dauert ja noch ne Weile bis zur richtigen Beta :D
  • in: E-Mail mit angeblichem Gewinn

    geschrieben von strange

    Dieser Scam ist fast so alt wie meine Oma! Damals noch via Post, Heute via Email...


    Hier ein paar Faustregeln:
    - Sind Fehler in dem Schreiben?
    - Wird Dein Name im Text erwähnt? (Nicht nur bei der Adresse)
    - Kommt der Gewinn aus dem Ausland?
    - Fallen irgend welche Gebühren an?
    - Werden Email-Dienste verwendet? (Gmail, Live, GMX, etc.)

    Wenn Du auch nur eine dieser Fragen mit "Ja" beantworten kannst... Finger weg und löschen/wegwerfen.
  • in: Windows 8 ab morgen 5 Uhr zum Download

    geschrieben von strange

    Ist zwar alles noch PreBeta, aber angucken kann man sich das auf jeden Fall einmal. Außerdem soll es in der DevPreview auch Updates geben und so die fehlenden Features, Programme und so weiter, nachgeliefert werden. Und ich finde es eine gute Sache, das Microsoft schon jetzt die Plattform für Dev´s und Interessierte bereitstellt und nebenbei auch noch die ganzen Developer Tools kostenlos dazu packt. Da kann sich Apple mal eine Scheibe von abschneiden.

    Und nein, ich habe persönlich nichts gegen Apple, die machen einen großartigen Job mit deren Hard- als auch Software (Ausnahmen bestätigen die Regel), aber das man bei Apple extra zahlen muss, damit man Programme veröffentlichen darf und auf deren Plattform (AppStore/MacStore) hosten darf, schadet eher der Plattform. MS macht das mit Win8 anders. Keine Gebühren, nur MS bekommt einen Anteil vom Verkaufspreis, bzw. es ist sogar möglich Apps als "Links" in den Windows Store zu stellen, so das MS eigentlich nur Werbung für die App macht.

    Naja... erst mal abwarten wie die Metro Oberfläche ankommt, ich bin dort auf jeden Fall ein wenig skeptisch, ist mir zu sehr Touch und zu wenig auf Geschwindigkeit mit Maus und Tastatur ausgelegt. Aber ggf. irre ich mich ja auch und es fühlt sich alles ein wenig besser an... also abwarten :D


    PS: 56 Minuten noch :D

Login zum Webhosting ohne Werbung!