Beiträge von cottton

    Naja, es sind mehr als 2 Ebenen.
    Noch dazu weiß ich nicht, wie viele Ebenen es beim nächsten Request sein werden. Kann mal mehr und mal weniger sein.
    Ich suche also eine Lösung jede auffindbare value in einem sich ständig änderden Array zu de-codieren.


    Da leichteste wäre ja, einfach von 10 Ebenen auszugehen. Wenn dann nur 5 rüber kommen, erledigen sich die anderen 5 durch ein "else".
    Aber das scheint mir schlecht, da es "auf Verdacht" geschrieben wäre.
    Ich komme irgentwie nicht dahinter, wie man eine (endlos)schleife schreiben könnte.

    Hab da ein Problem.
    Über eine API bekomme ich Daten die vor-formatiert sind (htmlspecialchars.
    Diese Formatierung kann ich rückgänging machen, indem ich einfach bei der Verwendung des Teils des Arrays,
    was ich verwende (die values) htmlspecialchars_decode verwende.
    Aber dann müsste ich zu vieles in den Scripten verändern.


    Der Gedanke: eine function die das komplette Array durchläuft, und so alle values de-codiert.
    Beim Schreiben kam ich allerdings schnell an meine Grenzen ;D



    Jemand schon Erfahrung damit?

    cloudflare im falle ddos, soweit ich das gelesen hab.


    Auf Metabans.com liefen etliche ddos und die waren schon massiv.
    Die haben dann eine Lösung gefunden - ein server provider, der "nicht gleich abschaltet"
    und wohl ne Lösung über cloudflare.


    Falls du Fragen hast - i3lack (owner Metabans.com) hat wohl sehr lange nach einer Preis/Leistung-Lösung gesucht (und gefunden)
    http://forums.metabans.com/index.php?action=profile;u=1
    (english only)

    "if ($a * $b * $c != 0) #überprüfen, ob alle variablen den jeweiligen wert hat"


    klar -.-
    oh man, ich glaub ich muss mal abstand von php nehmen ;D
    Da sucht man nach ner lösung in php und vergisst, dass x*0 immer 0 ist -.-


    Ist natürlich genau das, was ich brauche ;D
    Danke! =)

    ;D ja das kannte ich schon.
    Ich glaub ich habs wieder nicht deutlich genug beschrieben, was ich eigentlich wollte.


    Ich möchte sozusagen das != 0 nur einmal verwenden.
    Habe ~10 oder mehr var´s die ich alle prüfen möchte, ob sie nicht 0 sind.
    Mir ist zB eingefallen, dass ich alle zusammen zählen könnte. Wenn dann das ergebnis 0 ist, sind alle 0 - klar.


    Was ich aber suche ist ein "||" vergleich.
    Also wenn auch nur eine der var´s 0 ist, dann { ... code ...}

    Sorry wegen Doppelpost aber wenn ich da ^oben immer mehr editiere, sieht keiner mehr durch.


    Ich weiß jetzt warum mir das passiert. Hab mal ein Testscript geschrieben, um es zu verdeutlichen:


    Ergebnis:

    Zitat


    {"unformatiert":"<<<<<<<<<<<<<<<","htmlspecialchars":"&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;"}


    Das heißt, dass die Daten, welche ich von der API bekomme, mit htmlspecialchars vor-formatiert sein müssen.
    Nun weiß ich wirklich, was das Problem ist. Wenn jemand eine Lösung hat - bitte her damit =)



    EDIT: Lösung
    Danke einem der Leute hinter der API kann ich jetz hier die Lösung für das Problem posten.


    WENN Daten von der API (oder sonst wo her) htmlspecialchars-formatiert kommen
    einfach
    $data=htmlspecialchars_decode($data, ENT_QUOTES);
    nutzen.

    PHP
    ...
    $data = curl_exec($ch);
    $data=htmlspecialchars_decode($data, ENT_QUOTES);
    $data = json_decode($data,true); // (wenn in json formatiert ...)
    ...


    Logisch, aber blöd, wenn man sich erstmal selbst "beschuldigt" in den eigenen Scripten htmlspecialchars benutzt zu haben.
    ... und normal kommen ja daten auch net vor-formatiert(?).

    Ja das echo gibt es richtig aus, so wie es im scipt auch bearbeitet wird.
    Deswegen wundere ich mich ja auch.


    Das gleiche Verfahren nutze ich fpr Spielernamen wie zB <<ISTER>>.
    Habe haufenweise in der gleichen db mit '<' und '>' und was da noch so an Sonderzeichen möglich ist.


    Kurz: Was bei der einen Tabelle funktioniert, funktioniert in einer anderen Tabelle bei gleicher Art und Weise des Speicherns nicht.


    Die Unterschiede die ich zwischen beiden Tabellen feststellen kann wären:
    - Tabelle (in der es funktioniert) ist die Zelle auf "varchar" gesetzt und nicht mit json_encode formatiert.
    - Tabelle (in der das Problem auftaucht) ist die Zelle auf "longtext" gesetzt und der String vor speichern mit json_encode formatiert.


    Werd mal um ganz sicher zu gehen die SQL query ausgeben lassen.


    EDIT:
    Also hab die SQL query und es liegt tatsächlich am Scipt -.-

    Zitat


    UPDATE mb_follower SET servers ='[{\"server_name\":\"iXBT &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; PRIMAL RAGE &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;\",\"game_mode\":\"BF_3\",\"number_players\":80}]', last_check ='1348760985', times_empty = 0, updated_rand_nr = '8212' WHERE account_id = 591


    Irgent ne Idee wieso alle <> umformatiert werden?



    EDIT:²
    ich raff das grad nicht.
    Es ist nicht die db. Es ist irgentwas zwischen API und json_decode oO?


    Ich nutze eine API und die Daten zieh ich ganz normal duch json_decode($data, true)
    Wenn ich nun auf meinem Rechner teste:


    Der gleiche Ablauf bring auf dem Webserver schon nach dem json_decode($data, true) die "Falschkodierung".
    Zum Testen auf dem Webserver mitschreiben lassen:


    serialize ergibt:

    Zitat

    "group_name";s:146:"iXBT &lt;&lt;&lt;&lt;&lt;&lt;&lt;& ...


    genauso json_encode:

    Zitat

    "group_name":"iXBT &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt ...


    Und das direkt nach Empfangen der Daten oO?
    Die Daten der API sind ja richtig, wie ich auf meinem Rechner testen konnte.



    Komm hier echt nicht mehr klar 8|



    EDIT³:
    json_encode scheint das Problem zu verursachen.
    Hab da was gefunden, was allerdings nicht wirklich eine Lösung ist.
    http://stackoverflow.com/quest…ot-creating-original-json


    Man könnte also html_entity_decode() nutzen. Ist ja aber nicht Sinn der Sache, einen "Fehler" (?) im code zu berichtigen.
    Ich will den Fehler ja vermeiden.


    Aber wie?




    EDIT4:


    Dass die &lt; als < auf meinem Rechner richtig angezeigt werden liegt wohl daran, dass der Browser diese (HTML ... eigl klar) umwandelt.
    Also bekomme ich das, was wirklich "da drin steckt" nur, wenn ich es mitspeichere.


    Beim testen mit der query, die ich eigl möchte, werden die Daten auch korrekt in der db abgespeichert:

    Zitat


    UPDATE mb_follower SET servers ='[{\"server_name\":\"iXBT <<<<<<<<<<<<<<<< PRIMAL RAGE >>>>>>>>>>>>>>>>\",\"game_mode\":\"BF_3\",\"number_players\":42},{\"server_name\":\"iXBT = MixMode = > Gun Master \\/ Domination < GGC PBBans\",\"game_mode\":\"BF_3\",\"number_players\":21}]', last_check ='1348845085', times_empty = 0, updated_rand_nr = '7909' WHERE account_id = 591


    Ergebnis in db:

    Zitat


    [{\"server_name\":\"iXBT <<<<<<<<<<<<<<<< PRIMAL RAGE >>>>>>>>>>>>>>>>\",\"game_mode\":\"BF_3\",\"number_players\":42},{\"server_name\":\"iXBT = MixMode = > Gun Master \\/ Domination < GGC PBBans\",\"game_mode\":\"BF_3\",\"number_players\":21}]


    Es liegt also 100% an json_encode.
    Jetz brauch ich nur noch ne Idee was ich da machen kann ;D


    [/code]

    EDIT: Lösung letzter Post

    Ich weiss, dass bei "doppel"-htmlspecialchars zB aus '<' ein "ungewolltes" '&gt;' wird.
    Aber warum speichert meine bd das '<' ohne dass ich htmlspecialchars o.ä. verwende?


    In dieser Art handle ich es momentan:


    So scheint alles i.O.
    In der db kommt es aber so an:

    Zitat


    [{\"a\":\"&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; TEST &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;\",\"b\":\"aaa\",\"c\":1}]


    Wo könnt ich noch suchen, wenn ich keine Vormatierung verwendet hab, ausser mysql_real_escape_string und json ?

    Ich hab mich gewundert, warum immer nur ein onload ausgeführt wird.
    Über google hab ich dann erfahren, dass wohl nur eines möglich ist.


    Frage: gibts einen Trick? Oder muss ich wirklich erst alle "sammeln" und am Ende des Scripts alle in (zB) einer JS funktion aufrufen?



    Bsp, wie ich es momentan nutze: