alexx: PHP SESSION und jq Ajax

Hallo,

Kann es sein das SESSIONs in verbindung mit ajax nicht funktionieren? Hier ein beispiel bzw mein problem:

Inder index.php lade ich bei einen klick auf login via jquery das php skript in ein div rein. soweit funktioniert das ganze auch wen das skript bei erfolgreichen login aber die seite neu läd wird die SESSION nicht übernommen. Woran liegt das?

das js:
$(d).load("login.php",{user: uname, passwort: pass});

Das PHP Script:

  
<?php include("connect.php");?>  
<?php  
  
$user = strtolower($_POST["user"]);  
$passwort = strtolower($_POST["passwort"]);  
  
$control = 0;		  
$abfrage = "SELECT * FROM user WHERE name = '$user' AND pass = '$passwort'";  
$ergebnis = mysql_query($abfrage);  
while($row = mysql_fetch_object($ergebnis))  
	{  
	$control++;  
	}	  
  
if($control != 0) {  
$_SESSION["username"] = $user;  
?>  
Vielen Dank sie werde Weiter geleitet  
<meta http-equiv="refresh" content="3; URL=index.php" />  
<?php }  else { ?>  
Benutzername oder Passwort ist Falsch  
<?php } ?>  
  

  1. Hallo Alex,

    zu Deinem Ajax-Problem will ich mich nicht äußern, aber Dein Login ist anfällig für SQL-Injection.

    <?php include("connect.php");?>
    <?php

    #  warum strtolower?

    $user = strtolower($_POST["user"]);
    $passwort = strtolower($_POST["passwort"]);

    $abfrage = "SELECT * FROM user WHERE name = '$user' AND pass = '$passwort'";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis))
    {
    $control++;
    }

    if($control != 0) {
    $_SESSION["username"] = $user;

      
    Ich gebe einfach einen beliebigen Benutzernamen ein und das Passwort  
      
        egal' OR 1 = 1 --'  
      
    und schon bin ich eingeloggt :-)  
    Gern verlinke ich Dir dazu [xkcd: Exploits of a Mom](http://xkcd.com/327/)  
      
    Du solltest Dich mit dem [Kontextwechsel](http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel) vertraut machen.  
      
      
    Freundliche Grüße  
      
    Vinzenz
    
    1. Ich gebe einfach einen beliebigen Benutzernamen ein und das Passwort

      egal' OR 1 = 1 --'

      und schon bin ich eingeloggt :-)

      Versteh nicht wie du das meinst aber so wie ich das grade getestet hab funktioniert das nicht. Und die Passwörter werden in der finalen version md5 verschlüsselt.

      1. Hallo,

        Ich gebe einfach einen beliebigen Benutzernamen ein und das Passwort

        egal' OR 1 = 1 --'

        und schon bin ich eingeloggt :-)

        Versteh nicht wie du das meinst aber so wie ich das grade getestet hab funktioniert das nicht.

        mit dem von Dir hier gezeigten Code funktioniert das wunderbar.

        Und die Passwörter werden in der finalen version md5 verschlüsselt.

        Das ist bei dem Fehler völlig gleichgültig, abgesehen davon dass man vom einfachen Einsatz von MD5 sowieso abraten kann.

        Freundliche Grüße

        Vinzenz

        1. also du meinst wen ich das egal' OR 1 = 1 --' ins passwort feld eintrage kann ich mich mit jedem benutzer namen einloggen? klsppt bei mir jedenfalls nicht

          1. Hi,

            also du meinst wen ich das egal' OR 1 = 1 --' ins passwort feld eintrage kann ich mich mit jedem benutzer namen einloggen? klsppt bei mir jedenfalls nicht

            Dann ist bei dir vermutlich magic_quotes_gpc aktiviert - eine Konfigurationsoption, die die PHP-Entwickler mal eingeführt haben, um allzu naive Programmiererlein vor sich selber zu schützen.
            Die fällt in PHP 6 aber weg.

            Arbeite bitte den Wiki-Artikel zur Kontextwechsel-Thematik mal vollständig durch - das sind absolut elementare Grundlagen für halbwegs sicheres Programmieren.

            MfG ChrisB

            --
            RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Du lädst eine Weiterleitung in ein div, das ist ja an sich schon schräg?! <meta> in einem div funktioniert? Cool...

    In der weitergeleiteten Seite ist nirgends die SessionID zu sehen. Wenn die nicht in einem Cookie steckt, würd es mich nicht wundern wenn die nirgends mehr drin steckt.

    1. Du lädst eine Weiterleitung in ein div, das ist ja an sich schon schräg?! <meta> in einem div funktioniert? Cool...

      »»
      das neuladen funktioniert ja :) und isz ja sowiso nur 3 sec in code drinne^^

      In der weitergeleiteten Seite ist nirgends die SessionID zu sehen. Wenn die nicht in einem Cookie steckt, würd es mich nicht wundern wenn die nirgends mehr drin steckt.

      da hast du glaube ich recht, ich hab noch nie mit sessions gearbeitet und was du da sagst klingt ziemlich neu für mich muss ich wohl nochmal ein bisschen googlen

    2. In der weitergeleiteten Seite ist nirgends die SessionID zu sehen. Wenn die nicht in einem Cookie steckt, würd es mich nicht wundern wenn die nirgends mehr drin steckt.

      meinst du das mit SessionID? $_SESSION["username"]
      die weitergeleitete seite (index.php) ist die gleiche seite also die seite wird nur neu geladen.

      Kannst du mir bitte nochmal genau erläutern wie du das meinst?

      1. Die Session wird über die SessionID identifiziert. Die muss in jeder Seite zum Server übertragen werden, sonst kann er nicht wissen welche Session grad angemeldet ist.
        Das kann über Cookies passieren. Dann muss nur das Cookie gesetzt werden (geht auch irgendwie automatisch), bei jedem weiteren Aufruf schickt der Browser das Cookie dann mit, ohne dass du dazu was tun musst.
        Oder du baust die ID in jeden Aufruf mit ein. Bei dir wäre das dann die Weiterleitung zu index.php?sessionid=12345...
        Am besten mal ins Thema einlesen. Hab das auch schon gemacht, ist nicht schwer. Aber ich weiß es halt nimmer genau.

  3. Moin!

    Hallo,

    Kann es sein das SESSIONs in verbindung mit ajax nicht funktionieren? Hier ein beispiel bzw mein problem:

    Inder index.php lade ich bei einen klick auf login via jquery das php skript in ein div rein. soweit funktioniert das ganze auch wen das skript bei erfolgreichen login aber die seite neu läd wird die SESSION nicht übernommen. Woran liegt das?

    das js:
    $(d).load("login.php",{user: uname, passwort: pass});

    Das PHP Script:

    ...startet nirgendwo für uns sichtbar eine Session.

    <?php include("connect.php");?>

    ...außer vielleicht hier drinnen, das sieht aber eher wie das Skript für die DB-Verbindung aus.

    Es ist außerdem nicht notwendig bzw. sogar schädlich, wenn du das Include so einzeln in PHP-Tags einklammerst, denn die Leerzeile zwischen dieser PHP-Insel und der nächsten wird als Text an den Browser ausgegeben.

    Das bedeutet, du kannst ab hier keine Funktionen mehr benutzen, die die HTTP-Header verändert wollen. session_start() will das aber tun.

    <?php

    $user = strtolower($_POST["user"]);
    $passwort = strtolower($_POST["passwort"]);

    $control = 0;
    $abfrage = "SELECT * FROM user WHERE name = '$user' AND pass = '$passwort'";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis))
    {
    $control++;
    }

    if($control != 0) {
    $_SESSION["username"] = $user;
    ?>
    Vielen Dank sie werde Weiter geleitet
    <meta http-equiv="refresh" content="3; URL=index.php" />
    <?php }  else { ?>
    Benutzername oder Passwort ist Falsch
    <?php } ?>

      
    Ich würde ansonsten noch viel zu deinem Codestil schreiben wollen, der ist nämlich in keiner Weise gut, aber dazu habe ich im Moment keine Zeit.  
      
    Nur als Stichworte:  
    - Klammersetzung in Kontrollstrukturen  
    - Vernünftigere SQL-Querys  
    - Escaping, Kontextbehandlung  
      
     - Sven Rautenberg
    
    1. Tach!

      <?php include("connect.php");?>
      Es ist außerdem nicht notwendig bzw. sogar schädlich, wenn du das Include so einzeln in PHP-Tags einklammerst, denn die Leerzeile zwischen dieser PHP-Insel und der nächsten wird als Text an den Browser ausgegeben.

      Der Zeilenumbruch hinter einem ?> gehört zum PHP-Block und landet nicht in der Ausgabe.

      Das bedeutet, du kannst ab hier keine Funktionen mehr benutzen, die die HTTP-Header verändert wollen. session_start() will das aber tun.

      Nur dann nicht, wenn dem ?> noch mehr als ein Zeilenumbruch folgt.

      dedlfix.

    2. Hi,

      Es ist außerdem nicht notwendig bzw. sogar schädlich, wenn du das Include so einzeln in PHP-Tags einklammerst, denn die Leerzeile zwischen dieser PHP-Insel und der nächsten wird als Text an den Browser ausgegeben.

      das stimmt nicht. Zeilenumbrüche nach einem '?>' werden vom PHP-Parser ignoriert.
      http://www.php.net/manual/en/language.basic-syntax.instruction-separation.php beschreibt dies: "The closing tag for the block will include the immediately trailing newline if one is present."

      Schön ist das trotzdem nicht, da hast du recht.

      Bis die Tage,
      Matti

      1. Tach!

        Zeilenumbrüche nach einem '?>' werden vom PHP-Parser ignoriert.
        Schön ist das trotzdem nicht, da hast du recht.

        Doch, das ist schön, denn so kann man

        <section>
        <?php if (bla): ?>
          <p>foo</p>
        <?php else: ?>
          <p>foo</p>
        <?php endif; ?>
        </section>

        schreiben, ohne zu viele Zeilenumbrüche in der Ausgabe zu haben. Anderenfalls müsste man das so notieren:

        <section>
        <?php if (bla):
        ?>  <p>foo</p>
        <?php else:
        ?>  <p>foo</p>
        <?php endif;
        ?></section>

        dedlfix.

        1. Hi,

          ich habe eigentlich etwas anderes gemeint, deswegen war zwischen den beiden von dir zitierten auch ein Absatz.

          Zeilenumbrüche nach einem '?>' werden vom PHP-Parser ignoriert.
          Schön ist das trotzdem nicht, da hast du recht.

          denn so kann man
          [...]
          schreiben, ohne zu viele Zeilenumbrüche in der Ausgabe zu haben. Anderenfalls müsste man das so notieren:
          [...]

          Wen interessiert denn die Ausgabe? Wenn es syntaktisch relevant ist, dann ja. Aber ansonsten ist es doch meist eher irrelevant, vor allem, weil man mit geeigneten Entwicklertools das gelieferte HTML eh neu aufbereitet bekommt, z.B. bei den Chrome-Devtools.

          Ich bezog mich darauf, während der Programmlogik den PHP-Scope zu unterbrechen und dann wieder neu zu beginnen, um mehr Programmlogik unterzubringen. Wenn ich einen einzeiligen PHP-Scope sehe, erwarte ich eine Ausgabe oder eine Schleife um eine Ausgabe herum. Das hilft mir, mich im Quelltext zurechtzufinden.

          Bis die Tage,
          Matti

          1. Tach!

            Wen interessiert denn die Ausgabe? Wenn es syntaktisch relevant ist, dann ja. Aber ansonsten ist es doch meist eher irrelevant, vor allem, weil man mit geeigneten Entwicklertools das gelieferte HTML eh neu aufbereitet bekommt, z.B. bei den Chrome-Devtools.

            Es gibt Perfektionisten, die legen auch Wert auf eine ordentlich formatierte Ausgabe. Und es gab Zeiten, bevor der DOM Inspector erfunden war. Da war eine Formatierung des Quelltextes zwecks Übersichtlichkeit bei der Fehlersuche wichtiger als das vielleicht heute ist. Ich denke auch, dass der Quelltext einer Website weiterhin ein Aushängeschild ist (für die, die sich dafür interessieren).

            Ich bezog mich darauf, während der Programmlogik den PHP-Scope zu unterbrechen und dann wieder neu zu beginnen, um mehr Programmlogik unterzubringen. Wenn ich einen einzeiligen PHP-Scope sehe, erwarte ich eine Ausgabe oder eine Schleife um eine Ausgabe herum. Das hilft mir, mich im Quelltext zurechtzufinden.

            Man kann der Ausgabelogik doch nicht vorschreiben, wieviele Zeilen PHP-Code sie benötigen darf. Ich erwarte vor allem eine Lesbarkeit, egal zu welchen Teilen PHP- und HTML-Code vorhanden ist. (Ja, ich schrieb Ausgabelogik, denn der PHP-Code der Geschäftslogik ist gemäß EVA-Prinzip ja ohne Ausgaben und nicht in der Not, unterbrochen zu werden.)

            dedlfix.

            1. Hi,

              Es gibt Perfektionisten, die legen auch Wert auf eine ordentlich formatierte Ausgabe.

              Um Bandbreite zu sparen, könnte man den umgekehrte Weg gehen und all diese Formatierungen entfernen. Große Webseiten mit viel Traffic (z.B. google, facebook) tun genau das, da wird jedes byte eingespart.

              Ich würde nie im Leben auf ein Fitzelchen Übersicht in meinem Quelltext (PHP) verzichten, nur damit das HTML schöner wird. Wenn es nebenbei abfällt (ich schreibe HTML ja auch nicht als Textwurst), dann ist es OK. Aber Augenmerk darauf legen?

              es gab Zeiten, bevor der DOM Inspector erfunden war. Da war eine Formatierung des Quelltextes zwecks Übersichtlichkeit bei der Fehlersuche wichtiger als das vielleicht heute ist.

              Es ist bezeichnend, dass du in der Vergangenheit bei diesem Argument sprichst. Ja, früher haben sich best practices von denen von heute unterschieden. Aber nur weil es früher sinnvoll war, muss man es heute nicht noch tun.

              Ich denke auch, dass der Quelltext einer Website weiterhin ein Aushängeschild ist (für die, die sich dafür interessieren).

              Für wen soll es ein Aushängeschild sein? Andere Webentwickler? Besucher? Potentielle Kunden? Erstere und letzte dürften leicht davon überzeugt werden können, dass andere Gründe (Minification z.B.) wichtiger sind als schön formatierter HTML-Quelltext. Besucher dürften sich dafür nicht interessieren.

              Wenn ich einen einzeiligen PHP-Scope sehe, erwarte ich eine Ausgabe oder eine Schleife um eine Ausgabe herum.
              Man kann der Ausgabelogik doch nicht vorschreiben, wieviele Zeilen PHP-Code sie benötigen darf. Ich erwarte vor allem eine Lesbarkeit, egal zu welchen Teilen PHP- und HTML-Code vorhanden ist. (Ja, ich schrieb Ausgabelogik, denn der PHP-Code der Geschäftslogik ist gemäß EVA-Prinzip ja ohne Ausgaben und nicht in der Not, unterbrochen zu werden.)

              Ich schrieb von Erwartung. Das ist kein Muss, und natürlich gibt es bei der Ausgabelogik auch mal mehrere Zeilen PHP-Code. Aber das ist doch selten.
              I.d.R. hat man bei der Ausgabe doch eher Inline-Sachen, größere Teile sollte man dann eher in eine Funktion auslagern. Die Ausnahme sind dann Schleifen, die ich eher zeilenbasiert schreibe.

              Das ist etwas, was mich an PHP sehr stört. Bevor ich PHP schrieb, habe ich u.a. in Perl mit HTML::Mason oder ecpp (embedded C++) entwickelt. Für Einzeiler gibt es die %-Notation am Zeilenanfang, bei dem in den Programmkontext geschaltet wird bis zum Ende der Zeile.

              Das sieht dann etwa so aus:
              <ul>
              % foreach my $i (1 .. 10) {
                <li><% $i; %></li>
              % }
              </ul>

              Im Vergleich PHP:

              <ul>  
              <?PHP for ($i=1; $i<=10; ++$i) { ?>  
                <li><?PHP echo $i; ?></li>  
              <?PHP } ?>  
              </ul>
              

              Gerade die Zeile mit der schließenden Klammer empfinde ich das als unnötig lang.

              Bis die Tage,
              Matti

              1. Tach!

                es gab Zeiten, bevor der DOM Inspector erfunden war. Da war eine Formatierung des Quelltextes zwecks Übersichtlichkeit bei der Fehlersuche wichtiger als das vielleicht heute ist.
                Es ist bezeichnend, dass du in der Vergangenheit bei diesem Argument sprichst. Ja, früher haben sich best practices von denen von heute unterschieden. Aber nur weil es früher sinnvoll war, muss man es heute nicht noch tun.

                Muss man nicht, kann man aber, und dan sollte es genauso komfortabel sein wie früher. Ich suchte nur einen plausiblen Grund, warum das so ist. Und da man es früher öfter so machte, wurde vermutlich auch der Zeilenumbruch zum schließenden ?> hinzugefügt.

                Ich denke auch, dass der Quelltext einer Website weiterhin ein Aushängeschild ist (für die, die sich dafür interessieren).
                Für wen soll es ein Aushängeschild sein? Andere Webentwickler? Besucher? Potentielle Kunden? Erstere und letzte dürften leicht davon überzeugt werden können, dass andere Gründe (Minification z.B.) wichtiger sind als schön formatierter HTML-Quelltext. Besucher dürften sich dafür nicht interessieren.

                Wenn ich jemandem eine Web-Agentur empfehlen soll, dann schaue ich nicht nur wie ein Kunde die Selbstdarstellung in Prosa auf deren Webseiten an, sondern auch was dahinter liegt. Anhand dessen bilde ich mir mein Vorurteil über deren Arbeitsweise. Wer erkennbar kein Augenmerk auf die Kleinigkeiten legt, ist anzunehmenderweise ansonsten auch nicht besonders ordentlich.

                Das ist etwas, was mich an PHP sehr stört. Bevor ich PHP schrieb, habe ich u.a. in Perl mit HTML::Mason oder ecpp (embedded C++) entwickelt. Für Einzeiler gibt es die %-Notation am Zeilenanfang, bei dem in den Programmkontext geschaltet wird bis zum Ende der Zeile.

                Solche Template-Engines gibt es sicher auch für PHP. PHP ist jedoch selbst schon eine Template-Engine und als solche darauf ausgelegt, dass der Code einerseits in HTML eingebettet und andererseits mit HTML-Editoren bearbeitet werden kann. Dazu muss es sich zwangsläufig an die HTML/SGML-Syntax halten. Wenn das nicht deinen Vorstellungen entspricht, müsstest du dir eigentlich ein anderes Produkt suchen, dessen Philosophie eher zu deinem Anwendungsfall oder deinen Vorlieben passt.

                dedlfix.

                1. Hi,

                  Wenn ich jemandem eine Web-Agentur empfehlen soll, dann schaue ich nicht nur wie ein Kunde die Selbstdarstellung in Prosa auf deren Webseiten an, sondern auch was dahinter liegt. Anhand dessen bilde ich mir mein Vorurteil über deren Arbeitsweise. Wer erkennbar kein Augenmerk auf die Kleinigkeiten legt, ist anzunehmenderweise ansonsten auch nicht besonders ordentlich.

                  Ich würde es eher als Pluspunkt sehen, wenn sämtliche unnötigen Zeilenumbrüche weg wären. Das Fehlen von unnötigen Zeilenumbrüchen würde ich aber keinesfalls als Nachteil ansehen.

                  Aber ganz abgesehen davon, dass mir das Fehlen bzw. Entfernen des Zeilenumbruchs herzlich egal ist: dieses Feature macht es doch schwerer, "schönen" HTML-Code zu generieren. Beispiel von oben:

                  <ul>  
                  <?PHP for ($i=1; $i<=10; ++$i) { ?>  
                    <li><?PHP echo $i; ?></li>  
                  <?PHP } ?>  
                  </ul>
                  

                  erzeugt

                  <ul>  
                    <li>1</li>  <li>2</li>  <li>3</li>  <li>4</li>  <li>5</li>  <li>6</li>  <li>7</li>  <li>8</li>  <li>9</li>  <li>10</li>  
                  </ul>
                  

                  Damit du die Zeilenumbrüche bekommst, die das schön aussehen lassen, müsstest du entweder ein Leerzeichen nach dem ?> in der Zeile mit der öffnenden Schleifenklammer schreiben oder eine Leerzeile einfügen. Das ist also Programmierer maximal unhandlich.

                  Mir fällt eine Stelle ein, an der dieses Feature nützlich ist: am Ende einer Datei, wenn der PHP-Kontext mit '?>' beendet wird und korrekterweise ein Newline folgt. Dann wird dieses Newline unterdrückt und man kann include()en, ohne schon automatisch eine Ausgabe zu generieren. Dies ist aber obsolet, weil man das schließende PHP-Tag am Ende einer Datei auch einfach weglassen kann.

                  PHP ist jedoch selbst schon eine Template-Engine und als solche darauf ausgelegt, dass der Code einerseits in HTML eingebettet und andererseits mit HTML-Editoren bearbeitet werden kann. Dazu muss es sich zwangsläufig an die HTML/SGML-Syntax halten.

                  Ich hatte mit meinem Lieblings-Editor (vim) kein Problem damit, Mason- und Ecpp-Code zu bearbeiten. Dann ist es also kein Fehler der Sprache, sondern es sind unzureichende Fähigkeiten deines Editors?

                  PHP ist kein HTML/SGML. Deshalb gibt es keine Notwendigkeit, dass sich PHP beim Kontextwechsel an dessen Notationsweisen hält.

                  Bis die Tage,
                  Matti

                  1. Tach!

                    <ul>

                    <?PHP for ($i=1; $i<=10; ++$i) { ?>
                      <li><?PHP echo $i; ?></li>
                    <?PHP } ?>
                    </ul>

                    
                    > erzeugt  
                    > ~~~html
                    
                    <ul>  
                    
                    >   <li>1</li>  <li>2</li>  <li>3</li>  <li>4</li>  <li>5</li>  <li>6</li>  <li>7</li>  <li>8</li>  <li>9</li>  <li>10</li>  
                    > </ul>
                    
                    

                    Nein, der Zeilenumbruch hinter dem </li> landet in der Ausgabe.

                    Mir fällt eine Stelle ein, an der dieses Feature nützlich ist: am Ende einer Datei, wenn der PHP-Kontext mit '?>' beendet wird und korrekterweise ein Newline folgt.

                    Was ist daran korrekt oder auch nicht? Gibt es eine Vereinbarung, dass (Text-)Dateien mit Zeilenumbruch aufzuhören haben?

                    PHP ist jedoch selbst schon eine Template-Engine und als solche darauf ausgelegt, dass der Code einerseits in HTML eingebettet und andererseits mit HTML-Editoren bearbeitet werden kann. Dazu muss es sich zwangsläufig an die HTML/SGML-Syntax halten.
                    Ich hatte mit meinem Lieblings-Editor (vim) kein Problem damit, Mason- und Ecpp-Code zu bearbeiten. Dann ist es also kein Fehler der Sprache, sondern es sind unzureichende Fähigkeiten deines Editors?

                    Es ging damals kaum um meinen oder deinen Editor. Sei mal etwas weniger egoistisch und denk mal, was auch andere nützlich finden könnten. Natürlich kann ein einfacher Texteditor einfachen Text bearbeiten. Das <?php ?> ist ein Entgegenkommen an beispielsweise WYSIWYG-Editoren, die damals logischerweise weder was von PHP gehört haben konnten, noch in Zukunft für alle möglichen in HTML eingebetteten Sprachen eine eigene Unterstützung implementieren können/wollen/wasauchimmer.

                    PHP ist kein HTML/SGML. Deshalb gibt es keine Notwendigkeit, dass sich PHP beim Kontextwechsel an dessen Notationsweisen hält.

                    Ich hab nicht behauptet, dass es HTML/SGML ist, sondern dass es sich gemäß dessen Regeln dahinein einbettet. Wenn dir das nicht zusagt oder obsolet erscheint, steht es dir frei, einen Änderungswunsch in der Entwickler-Community zu platzeren.

                    dedlfix.

                    1. Hi,

                      Nein, der Zeilenumbruch hinter dem </li> landet in der Ausgabe.

                      Ja, da hast du Recht, entschuldige das falsche Beispiel. Da hätte ich es doch eher testen sollen :)
                      Ich erinnere mich, dass ich einen Fall gesehen habe, wo dieses Feature dafür gesorgt hat, dass mein HTML gerade nicht "pretty-printed" war. War dann eher soetwas wie

                      <p>  
                        [code lang=php]<?PHP echo date('Y-m-d'); ?>
                      

                      </p>[/code]

                      Das erzeugt (diesmal getestet):

                      <p>  
                         2012-01-25</p>
                      

                      Dies ist genau eine Stelle, wo mir die saubere Formatierung meiner Quelltextes (PHP) wichtiger ist als die Ausgabe. Würdest du hier das Leerzeichen nach '?>' einfügen, um den Zeilenumbruch zu bekommen?

                      Was ist daran korrekt oder auch nicht? Gibt es eine Vereinbarung, dass (Text-)Dateien mit Zeilenumbruch aufzuhören haben?

                      Zumindest vim meckert, wenn eine Datei nicht mit Newline endet, und fügt dieses automatisch hinzu. Kurzes googlen hat ergeben: C/C++/Java scheinen dieses Newline zu erfordern. CVS ebenfalls, ich meine mich zu erinnern, dass SVN es auch braucht. Daher gilt für mich der Grundsatz, dass Dateien mit einem newline zu enden haben.

                      Es ging damals kaum um meinen oder deinen Editor. Sei mal etwas weniger egoistisch und denk mal, was auch andere nützlich finden könnten. Natürlich kann ein einfacher Texteditor einfachen Text bearbeiten.

                      Das sollte nicht egoistisch klingen. Ich merke nur, dass mich das Fehlen von PHP-Einzeilern gerade bei eingebetteten Schleifen (analog Fallunterscheidungen) extrem stört. Die Existenz dieser Syntax bei anderen Sprachen zeigt mir, dass ich mit meinem Wunsch nicht alleine bin.

                      Bis die Tage,
                      Matti

                      1. Tach!

                        Ich erinnere mich, dass ich einen Fall gesehen habe, wo dieses Feature dafür gesorgt hat, dass mein HTML gerade nicht "pretty-printed" war. War dann eher soetwas wie

                        <p>

                        [code lang=php]<?PHP echo date('Y-m-d'); ?>

                        
                        > </p>[/code]  
                        >   
                        > Das erzeugt (diesmal getestet):  
                        > ~~~html
                        
                        <p>  
                        
                        >    2012-01-25</p>
                        
                        

                        Dies ist genau eine Stelle, wo mir die saubere Formatierung meiner Quelltextes (PHP) wichtiger ist als die Ausgabe. Würdest du hier das Leerzeichen nach '?>' einfügen, um den Zeilenumbruch zu bekommen?

                        Hier würde ich gar keine Zeilenumbrüche einfügen und alles in einer Zeile notieren (zuzüglich der Leerzeichen, wenn sie wirklich benötigt werden). Mir fällt auch grad kein sinnvolles Beispiel ein, bei dem ich zumindest mal schauen würde, ob es sich ohne zu verrenken "ordentlicher" machen lässt.

                        dedlfix.