Beiträge von cottton

    "Exit" macht dann also erst wirklich Sinn, wenn man den Inhalt anhängt und nicht überschreibt, richtig?


    Naja, nein.
    exit() hat nix mit dem Schreiben in die Datei zu tun. Es wird geht bei der Funktion "einfach nur" um das beenden des Scripts.

    Guck mal hier rein: http://php.net/manual/de/function.exit.php (btw eine sehr schöne Doku)

    INFO:
    Man kann der Funktion exit() also auch einen String mitgeben.
    zB

    PHP
    $a = 3 / 10;
    // ... weiterer code ...
    // irgendwo im ablauf muss dann $a unbedingt grösser als 0 sein:
    if($a < 0){
        exit("ERROR: $a ist nicht größer als 0!"); // AB HIER ist ende gelände =) der string "ERROR: $a ist .... " wird ausgegeben und das programm beendet
    }
    echo "$a ist größer als 0";
    // ...

    exit(); beendet das laufende Script.
    Bsp:

    Dass bei jedem neuen Eintrag im Formular die alten Werte in der Datei überschrieben werden liegt daran,
    dass im Beispiel "w" für "write" genutzt wurde.

    PHP
    $handle = fopen ( "anfragen.txt", "w" );


    Ich denke dort sollte ein "a" für "append" (dt. "anhängen") genutzt werden.

    Liste möglicher Parameter für fopen() => http://php.net/manual/de/function.fopen.php

    Wenn Du das Formular 1 mal absendest - siehst Du dann diesen Text?: "Danke - Ihre Daten wurden speichert"
    und kein Formular?

    Wenn nicht, dann poste mal deinen Code - evtl hat sich ein Fehler eingeschlichen.

    Einer der Nachteile ist, das du es nicht selbsständig schaffst es wieder als Bild herrauszuholen.


    Das ist doch kein Nachteil - das ist eine Hürde :D

    Ich denke das ~Format in der db ist anders, als "erwartet".
    Du liest die Bilddatei und schickst die Daten durch addslashes().
    Dabei werden .. naja, slashes ge-added.
    Wenn Du die Rohdaten über der Tabelle ausgibst, dann wird (Vermutung) der Browser evtl damit klar kommen.
    Innerhalb der Tabelle werden die slashes wohl einiges "kaputt machen".

    Sinnvoll wäre es die Rohdaten der Datei (so wie sie sind) in die db zu schreiben.
    Aber - wie bereits erwähnt hat das Nachteile. Der wohl größte ist, dass Browser diese Bilder nicht cachen können.
    Browser cache im Detail: https://de.wikipedia.org/wiki/Browser-Cache


    Wenn Dus noch versuchen möchtest: Daten aus Blob-Feld in mysql-DB auslesen
    dort hatten wir ein ähnliches Problem.

    Wenn ich mich richtig erinnere, dann muss es zB ein jpeg sein, wenn es als <img src="data:image/jpeg ... ausgegeben werden soll.

    Der Ablauf von der Bilddatei bis hin zu Ausgabe wäre in etwa:
    - via <form ...> Bilddatei uploaden (lassen)
    - per PHP die Bilddatei in ein (zB) .png umwandeln (funktioniert das nicht, war es kein Bild)
    - die neuen Bilddaten in die db schreiben
    - bei der Ausgabe immer:

    HTML
    <img src="data:image/png;base64,{bilddaten}" />


    png nutzen. Denn alle Bilddaten in der db sind ja nach der Umwandlung pngs.

    Gestern durch nen Zufall mitbekommen, dass es keinen Fatal Error gibt,
    wenn man beim Verketten am Ende kein Semikolon setzt
    und die nächste Operation zB eine Zuweisung ist.
    Bsp:


    Man beachte:

    Zitat

    ... is not completed by a semicolon.pa$$w0rd


    pa$$w0rd wäre jetzt direkt ausgegeben.

    Jemand ne Idee, wie man sowas per regex o.ä. in Scripten suchen kann?

    EDIT:
    hab da was:


    output

    Code
    //' Because i commented out this line.';
    //for(;;);


    Allerding wird jedes aukommentierte Semikolon gefunden.
    Suche gerade nach einer Möglichkeit, dass man auskommentierte Semikolons findet auf die eine Zuweisung folgt.

    Wenn der Benutzer die Seite neu lädt, dann startet ja Dein Ablauf/Script neu -- also weiß nix von der vorigen Auswahl.
    Du musst also die Auswahl irgendwo zwischenspeichern.
    Was mir spontan sinnvolles einfällt wäre da
    url:
    angenommen die URL lautet page.com?d=1
    dann hängst Du per JS ein &link={LINK} an.
    Kommt dann raus: page.com?d=1&link={dein link ...}
    Beim neuladen (auch bem ersten Laden) der Seite prüfst Du, ob der Parameter link gesetzt ist. Wenn ja, dann die onclick function gleich einmal ausführen.
    siehe: window.location
    Beisp: Mit Javascript etwas an die URL anhängen


    oder
    localStorage:
    dabei legst Du beim Benutzer Daten lokal ab. Eigtl recht einfach.
    siehe: http://www.w3schools.com/html/html5_webstorage.asp

    Das könnte enorm viel Speicher verbrauchen (Endlos-Script, ... soll hunderte Clients bedienen können).
    Ich müsste auch alle Pakete zwischenspeichern die nach dem ersten Paket kommen, um die Reihenfolge einzuhalten.

    Im Netz findet man viel über Protokolle - was wie wann passieren muss. Aber dazu find ich nix :/
    Ach ja - bei den Clients geht es um Browser (Websocket) falls es entscheidend ist.

    Vorweg: es geht um ein Tool, das viele Clients bedient und nicht auf einen warten kann. Es geht also um speed.

    Ich bin gerade am rätseln, was man am besten macht, wenn
    - ich einen Server laufen habe
    - Client verbindet
    - ich (Server) dem Client Pakete schicke, dieser aber "lahmt" und -
    - ich nicht mehr senden kann, da Client überläuft (socket würde blockieren bis Timeout greift oder Senden wieder möglich ist)

    Alle folgenden Pakete droppen, bis das Senden an den Client wieder möglich ist,
    oder Verbindung zum Client schließen?
    (Oder irgendwas, das mir nicht einfällt =)

    Ich denke Pakete droppen wäre falsch, denn dann verpasst der Client evtl wichtige Pakete und "kommt nicht mehr klar".
    Weiß auch grad nicht wie ich danach im Netz suchen soll :D

    EDIT:
    so kann man sich das in etwa vorstellen:

    Vorweg: siehe Der Feine Unterschied: != und !==

    Ersteres. Du willst ja eine Zahl ablegen.

    Auch immer daran denken, dass Werte aus $_GET, $_POST, und auch aus der db als String kommen.
    Wenn Du also zB über ein Formular den Wert bekommst, dann:

    PHP
    $val = $_POST['feld']; // ist immer ein string, es sei denn im form-feld wurde zB [] genutzt

    Am besten Du legst beim Zuweisen gleich fest, was Du erwartest:

    PHP
    // angenommen der wert kommt aus einer var $success
    $_SESSION['success'] = (int)$success; // (int) ^= einen integer erzwingen
    // get auch mit float, string, ...

    Naja, dann gäbe es Probleme mit Zeichen wie
    漢字
    (wird hier nicht dargestellt -- siehe http://stackoverflow.com/a/21648161 das Japanische Zeichen)

    Jetzt hab ich es hinbekommen. Nutze jetzt für mich die "Intel-Konvention" (https://de.wikipedia.org/wiki/Hexadezimalsystem) -- Format {hex}h
    um verketten zu können.
    Gibt allerdings einen "bug" beim letzten Test:
    functions:


    tests:


    output:


    Das Problem beim letzen Test:
    hex str: 0x610x620x630x2d0x230x2a0xb40x5e0x3f0x6f220x5b57
    pattern: 0x[0-9A-F]+
    result: 0x610 0x630 0x230 0xb40 0x3f0 0x5b57
    expected: 0x61 0x62 0x63 0x2d 0x23 0x2a 0xb4 0x5e 0x3f 0x6f22 0x5b57

    Ich bekomme per regex die 0 vom Prefix x0 hinten "angehängt".
    Eigtl logisch, denn die 0 zählt unter 0-9.
    Bekommt man ds mit regex hingebogen?

    Ich suche nach einer einfachen Lösung einen String in eine valide Css-id zu wandeln.
    Perfekt wäre, wenn die id dann wieder zurück formatiert werden könnte.

    Momentan habe ich das hier:


    and die id würde ich jetzt noch "p_" vorn anhängen, damit sie nicht mit einer Zahl begint
    Wie man aber sieht, ist die id sehr lang.
    Jemand ne Idee, wie was ich da noch drüber laufen lassen könnte?

    Die form ... die buttons und checkboxen müssen doch in die form =)
    index.html:


    start.php:

    PHP
    if(!isset($_POST['check1']) and !isset($_POST['check2']) and !isset($_POST['check3']))
    {
        header("Location: test.html");
        exit();
    }


    Du hattes die Bedingung, dass wenn nicht alle angehakt sind, dann zurück.
    Mit and läufts

    Naja, es gibt einiges:

    PHP
    // beispiele:
    $num = $num + $c;
    // oder
    $num += $c;
    // ... geht auch mit -= ect

    ich denke Du hast was verdreht: die Werte die Du angibst sind schon mit MwSt. Wenn ich die durch die Funktion jage, bekomm ich > 80.
    Hab mal hier die MwSt weggelassen, damit wir beide auf das gleiche Ergebnis kommen:


    Bekomme 67,34 raus.

    Welche PHP-version nutzt Du?

    PHP
    echo PHP_VERSION;

    Du könntest zwar in der ersten Query SUM nutzen, würdest dann aber die Spalte `betragKomplett` mit dem Gesamtpreis in jeder Zeile bekommen.
    Das macht also wenig Sinn.
    Mit der Zusatzfunktion kannst Du das auch erledigen.
    Ich würde allerdings die Daten nutzen, die Du ja schon geholt hast - $warenkorb
    in etwa:

    btw: warum speicherst Du "," -separierte Beträge in der db ?(

    Gerade auf heise gelesen, allerdings ist die Originalgeschichte besser: https://medium.com/@Stunna/breaking-the-house-63f1021a3e6d
    Wort(e) des Tages: “Schrödinger” seeds :D

    Zitat

    Our database had seeds that were both inactive and in use at the same time


    Will nicht den Besswerwisser raushängen lassen, aber klingt für mich nach db-Einträgen die nicht auf unique gezwungen wurden.
    Und der Zustand wurde offensichtlich auf mehr als ein Feld gelegt.
    Dazu noch

    Zitat

    all connected to [User]Hufflepuff


    was man doch vermeiden kann.
    primary/unique user_name, seed -- und die Sache wäre wohl nie passiert :whistling:
    (wobei ich nicht weiß welche db da genutzt wird)

    Transparenz:
    bin ich ja voll dafür. Wenns allerdings um viel Geld geht, dann sollte man schon ein bisschen zurückschrauben.