ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » echo "\n"; vor xajax Kommandos crashen

Geschlossen
  1. #1
    User Pic
    plan_rich Mitglied
    Registriert seit
    23.09.2010
    Beiträge
    4
    Beitragswertungen
    0 Beitragspunkte
    Hallo zusammen!

    Habe einen ärgerlichen Fehler gefunden der die xajax engine unbrauchbar macht:

    Ein simples "echo '\n';" (oder auch nur 1 mal return vor <?php gedrückt) vor der Initialisierung der xajax Klasse und den dazugehörigen Methodenaufrufen, legen jeden ajax Aufruf lahm.

    Zum selber testen die test.php in include/contents und test.htm in include/templates kopieren und index.php?test aufrufen!

    Wenn ihr das echo '\n'; in der ersten Zeile entfernt funktioniert alles ohne Probleme.
    Anderenfalls (mit echo) passiert nichts und der Browser (in meinem Fall Firefox) läd nur dumm herum!

    Der Hund liegt im Javascript begraben:
    Fehler: XML- oder Text-Deklaration nicht am Beginn der Entität
    Quelldatei: localhost/juo/index.php?test
    Zeile: 2, Spalte: 1
    Quelltext:
    <?xml version="1.0" encoding="utf-8" ?><xjx><cmd n="as" t="vvv" p="innerHTML">test</cmd></xjx>


    test.php:
    <? 
    echo "\n"; //haha -> this breakes the xajax engine!
    $xajax = new xajax();
    $xajax->registerFunction("m");
    
    function m($arg)
    {
    	$n = "it works";
    	$res = new xajaxResponse();
    	$res->assign("vvv", "innerHTML", $n);
    	return $res;
    }
    
    $xajax->processRequest();
    $xajax->printJavascript(); 
    
    $title = $allgAr['title'].' :: test '.$cattitle;
    $hmenu = '<a class="smalfont" href="?test">test</a>'.$catname;
    $design = new design ( $title , $hmenu );
    $design->header();
    $tpl = new tpl ('test');
    $tpl->out(0);
    $design->footer();
    ?>


    test.htm:
    <input type="button" length="15" onclick="xajax_m('test');" />
    <div id="vvv">click on button plz</div>



    PS: Warum ist xajax.inc.php und alle xajax*.js so komisch formatiert?
    Glaube nicht, dass jemand die 1000 Zeilen Code mit Formatierung durchlesen würde um xajax zu hacken. Außerdem gibt es Formatierprogramme, die die komische Formatierung sowieso wieder auflösen!


    betroffene Homepage: localhost


    Zuletzt modifiziert von plan_rich am 23.09.2010 - 15:20:56
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    oink Mitglied
    Registriert seit
    23.09.2010
    Beiträge
    740
    Beitragswertungen
    227 Beitragspunkte
    echo "\n"; vor session Kommandos crashen

    Hallo, ICH HABE EINEN FEHLER GEFUNDEN!!!!!!!

    wenn man ein echo "\n"; (oder ENTER vor dem <?php tag) vor session_start() setzt gehen sessions nicht mehr!!!

    PS:
    minifiing durch entfernen der space und tabulator characters machen den quellcode voll unlesbar! dabei ist gerade so eine minifizierte css/js datei der interessanteste content meiner webseite!

    (anmerkung an den vorredner:
    bitte les die xajax dokumentation, nutze das ilch template system aus und sende nicht einfach output vor dem html header)
    before creation there must be destruction
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    plan_rich Mitglied
    Registriert seit
    23.09.2010
    Beiträge
    4
    Beitragswertungen
    0 Beitragspunkte
    Habe leider keine Dokumentation von xajax im Benutzerhandbuch oder auf den Entwicklerreferenzen gefunden! Wo ist diese Docu?

    @oink, nur für dich, damit auch du es verstehst:
    index.php:
     ->loader.php
       ->...
     ->config.php
     ->test.php


    Hier oben ist die grobe Darstellung wie der Server die Webseite meinen Content zusammenstellt. Er durchläuft die index.php, parst die loader.php Datei, die config.php Datei und zum Schluss die test.php. Natürlich sind das nicht alle Dateien.

    Falls ich versehentlich in der config.php nach dem schließen des php tags ?> EINMAL ENTER gedrückt habe und die Datei und speichere funktioniert mein xajax Aufruf, wie ich ihn mit der test.php und test.htm erstellt habe, nicht mehr.

    Ich glaube nicht, dass das Script mit einem ENTER seine Funktionalität verlieren sollte?


    (Anmerkung an den Vorredner:
    Vielleicht solltest dir einmal einen Post durchlesen, den Post wirklich verstehen und anschließend antworten!)

    PS: Ich tue auch am liebsten Code lesen der 3000 Zeichen auf einer Zeile hat, weil es gefällt mir so wenn ich den horizontalen Scrollbalken benutzen kann.

    lg plan_rich
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    f00b4r Mitglied
    Registriert seit
    23.09.2010
    Beiträge
    2
    Beitragswertungen
    0 Beitragspunkte
    Ich muss mir erstmal die Tränen aus den Augen wischen... Sekunde..


    Also ENTER-Zeichen, landläufig bekannt als \n oder char(13) haben schon bemannte Raummissionen zum Absturz gebracht.

    Mal im Ernst, du hast offensichtlich nich viel Erfahrung und gehst hier ab als hätten die Autoren keine Ahnung von dem was sie da tun. Wie oink schon treffend anmerkte würde zB jedes beliebige Zeichen vor session_start() das setzen vom SessionCookies verhindern.

    Das Enter-Zeichen gehört in diesem Fall zur Gruppe der Whitespaces. WhiteSpaces (egal welches Zeichen) verhindern die korrekte Ausgabe der Response in XML. Header Informationen können nicht korrekt erzeugt werden und u.U. das XML-Parsing im Browser beeinträchtigen.

    Soviel zum Punkt 1.

    Die Formatierung des Codes, speziell des JavaScripts, wurde speziell für Choleriker eingeführt um diese schnellstmöglich von den freundlichen Menschen zu trennen.
    Gleichzeitig hilft es die Antwortzeiten des Servers, respektive Renderingzeiten im Browser, drastisch zu reduzieren. Solltest du gesteigerten Wert darauf legen den Code trotzdem lesen zu wollen und auch bereit sein von deinem hohen Ross herunterzukommen, empfehle ich dir die *_uncompressed.js files zu lesen. Die sind hübsch eingerückt, mit Kommentaren usw usw...
    Sollten diese Dateien auf deinem Localhost nicht verfügbar sein, tut es sicher auch ein handelsüblicher download von der Xajax-Website. Dort findest du alle Dateien im Originalformat.

    Alles in allem finde ich es aber löblich dass in Schulen heutzutage auch PHP unterrichtet wird.

    Grüße lächeln
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    oink Mitglied
    Registriert seit
    23.09.2010
    Beiträge
    740
    Beitragswertungen
    227 Beitragspunkte
    wobei anzumerken ist das sich die xajax projektseite seit neuestem aufgrund eines hackerangriffs auf die alte domain auf xajax-project.org/ umgezogen worden ist.
    before creation there must be destruction
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    plan_rich Mitglied
    Registriert seit
    23.09.2010
    Beiträge
    4
    Beitragswertungen
    0 Beitragspunkte
    Danke für die Aufklärung f00b4r.

    Ich wusste garnicht das es whitespaces gibt und was ist bitte ein char(13) lol

    ZitatZitat
    Wie oink schon treffend anmerkte würde zB jedes beliebige Zeichen vor session_start() das setzen vom SessionCookies verhindern.


    Ich setze keine Zeichen vor session_start()? o.O? Ich habe versehentlich vor meiner test.php ein \n das sich nicht so einfach ausfindig machen lässt!

    Der Satz:

    ZitatZitat
    WhiteSpaces (egal welches Zeichen) verhindern die korrekte Ausgabe der Response in XML. Header Informationen können nicht korrekt erzeugt werden und u.U. das XML-Parsing im Browser beeinträchtigen.


    hätte vollkommen ausgereicht, damit ich im klaren bin, dass ich falsch liege.

    ZitatZitat
    deinem hohen Ross herunterzukommen


    Tut mir leid wenn du denkst ich sitze auf einem hohen Ross, mein ERSTER Beitrag sollte keine Kritik ausüben, sondern eher einen Fehler beseitigen.

    Der zweite, naja... Hätte nicht so ausgesehen nach der komischen Antwort!

    Ich habe schon öfter eine XML in ein Programm geparsed (u.A. Java,C#), nur leider egal wie viele \n ich davor gemacht habe, das Ergebnis im Programm war immer das Gleiche!

    Es ist natürlich auch nicht so das ich einfach so \n in eine Datei feuere, sondern ein \n ist irgendwo im Script untergegangen und untersagt mir jetzt jeglichen xajax Aufruf...

    *_uncompressed.js leider bei meiner alten Ilchausgabe nicht vorhanden und ich wusste auch nicht das Xajax ein eigenes Projekt ist!

    Eines ist mir noch aufgefallen:
    Hier fühl ich mich richtig wohl, da alle gleich sehr konstruktive Beiträge schreiben.

    lg plan_rich
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    plan_rich Mitglied
    Registriert seit
    23.09.2010
    Beiträge
    4
    Beitragswertungen
    0 Beitragspunkte
    ZitatZitat
    Whitespaces
    Whitespaces can cause big troubles, but it's easy to avoid them. The easiest trick is, to not close the php tag. If you don't add the final "?>" in your PHP file(s) then the PHP parser will automatically insert a virtual one after the last character.
    This affects all sorts of PHP applications that create anything fussier than HTML (GIF, PDF, etc). Leaving exterior whitespace is particularly bad form for include()d/require()d files. A typical consequence for HTML apps is being unable to send headers (including cookies). Also keep an eye out for your error reporting level and display_errors setting.


    Wenn ich gewusst hätte, das xajax ein eignes Projekt ist hätte ich uns viel Ärger erspart!

    Wenn das Wörtchen wenn nicht wäre...
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    uD Psaicon Mitglied
    Registriert seit
    22.09.2006
    Beiträge
    85
    Beitragswertungen
    16 Beitragspunkte
    jo... ich dachte schon, das ich manchmal schlimm bin^^.. ich finde es i.o. wenn hier nen Fehler gepostet wurde, aber take it easy!

    Lasst doch das Sachliche drin, den Rest könnt ihr ja per PN debattieren, damit die anderen das wichtigste lesen können, nämlich die Fehler zunge
    VISIT:[ externer Link ] [ Xbox360 E-Sports Clan ]---[ Microsoft Xbox Clan des Monats Oktober 07 ]
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    oink Mitglied
    Registriert seit
    23.09.2010
    Beiträge
    740
    Beitragswertungen
    227 Beitragspunkte
    oink oink
    before creation there must be destruction
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    f00b4r Mitglied
    Registriert seit
    23.09.2010
    Beiträge
    2
    Beitragswertungen
    0 Beitragspunkte
    Na dann ist doch alles geklärt lächeln

    Cheers! Drink
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten