Jay Symphonix: <table> in HTML als echo ausgeben!

Hi ich probiere nun schon seit einiger Zeit eine Seite auf meiner Page nur für registrierte User anzuzeigen.

Also wenn eingeloggt wird etwas ausgegeben und wenn nicht eingeloggt etwas anderes. Im Grunde weiß ich auch wie also ich habe bisher:

<?php  
  
session_name('UserLogin');  
session_set_cookie_params(2*7*24*60*60);  
session_start();  
?>

erklärt sich von allein ;)

Dann:

<?php  
  
		if(!$_SESSION['id']):  
  
		?>

Danach kommt dann reine HTML die nur für eingeloggte User sein soll.

Im Anschluss:

<?php  
  
		else:  
  
	       ?>

Nun wieder reine HTML die für nicht eingeloggte User da stehen soll.

am ende dann noch:

<?php  
		endif;  
		?>

Mein Problem er ignoriert die Befehle komplett und gibt einfach alles aus. Bei meinem Log und Register funktioniert es aber auf diese weise.

Eine andere Möglichkeit wäre noch das ich es so mache:

<?php  
	if($_SESSION['id'])  
	echo '<h1>Hallo, '.$_SESSION['usr'].'! Viel Spaß im internen Bereich!</h1>';  
	else echo '<h1>Bitte, <a href="login.php">einloggen</a> um diesen Bereich zu sehen!</h1>';  
    ?>

Mein Problem ich will nicht die ganze Seite als echo ausgeben, ist ja viel umständlicher als in HTML.

Hinzu kommt das die Seite fast nur aus einem riesen <table> besteht ala Lebenslauf:

<h1>Lebenslauf</h1>  
  
<h3>Pers&ouml;nliche Daten</h3>  
    <table>  
        <tr><td>Name:</td><td>Henriete van der Nette</td></tr>  
        <tr><td>Anschrift:</td><td>Milchstraße 25</td></tr>  
        <tr><td></td><td>0000 Universum</td></tr>  
        <tr><td>Geburtsdatum:</td><td>19.02.1920</td></tr>  
        <tr><td>Eltern:</td><td>Prinz Eisenherz</td></tr>  
        <tr><td></td><td>Rapunzel</td></tr>  
        <tr><td>Geschwister:</td><td>Gabi Hinterhof</td></tr>  
        <tr><td>Staatsangeh&ouml;rigkeit:</td><td>Alien</td></tr>  
        <tr><td>Familienstand:</td><td>Ledig</td></tr>  
        <tr><td>Kinder</td><td>20</td></tr>  
    </table>  
<hr/>  
<h3>Schulbildung</h3>  
    <table>  
        <tr><td>Grundschule:</td><td>1920-1945</td><td>Grundschule</td></tr>  
        <tr><td>Orientierungsschule:</td><td>1945-1950</td><td>Realschule</td></tr>  
    <table>

Und so weiter!
Versteht ihr mein Problem?
Es wäre viel zu umständlich dieses per echo ein zufügen.
Zumal es nur so Fehlermeldungen hagelt.
Und std daran sitzen und immer wieder Fehler zu suchen und diese dann um zu schreiben ist sehr nervig.

Ich beschäftige mich erst seit 2 Wochen mit PHP und bitte keine verweise auf Grundlagen. Denn nur wer Ziele hat kann an den Aufgaben wachsen.

Bisher ging alles glatt dies ist die erste Hürde die ich einfach ohne Tipps anscheinend nicht hin bekomme.

Ich Danke im voraus allen die mir bei der Problemlösung behilflich sind.

Mit freundlichen Grüßen
Jay

  1. Hello,

    Hi ich probiere nun schon seit einiger Zeit eine Seite auf meiner Page nur für registrierte User anzuzeigen.

    Also wenn eingeloggt wird etwas ausgegeben und wenn nicht eingeloggt etwas anderes. Im Grunde weiß ich auch wie also ich habe bisher:

    <?php

    session_name('UserLogin');
    session_set_cookie_params(27246060);

    Die Session wird vermutlich(*) nach Nichtbenutzung von session.gc_maxlifetime weggeputzt vom Garbage Collector. Wenn session.gc_maxlifetime also auf Standard 1440 eingestellt ist, nützen dir die zwei Wochen hier gar nichts.

    (*) wenn das System frequentiert ist. Anderenfalls gammelt die Datei eventuell auch noch nach zwei Jahren auf dem System.

    session_start();
    ?>

    
    > erklärt sich von allein ;)  
    >   
    > Dann:  
    > ~~~php
    
    <?php  
    
    >   
    > 		if(!$_SESSION['id']):  
      
    Warum hier 'NOT' (!)? Das soll doch der Angemeldet-Zweig sein, oder?  
    
    >   
    > 		?>
    
    

    Danach kommt dann reine HTML die nur für eingeloggte User sein soll.

    Im Anschluss:

    <?php

      else:  
    

    ?>

    
    >   
    > Nun wieder reine HTML die für nicht eingeloggte User da stehen soll.  
    >   
    > am ende dann noch:  
    > ~~~php
    
    <?php  
    
    > 		endif;  
    > 		?>
    
    

    Mein Problem er ignoriert die Befehle komplett und gibt einfach alles aus. Bei meinem Log und Register funktioniert es aber auf diese weise.

    Was gibt 'er' denn aus? Sowohl den If- als auch den Else-Zweig?

    Eine andere Möglichkeit wäre noch das ich es so mache:

    <?php

    if($_SESSION['id'])
    echo '<h1>Hallo, '.$_SESSION['usr'].'! Viel Spaß im internen Bereich!</h1>';
    else echo '<h1>Bitte, <a href="login.php">einloggen</a> um diesen Bereich zu sehen!</h1>';
        ?>

    
    >   
    > Mein Problem ich will nicht die ganze Seite als echo ausgeben, ist ja viel umständlicher als in HTML.  
    >   
    > Hinzu kommt das die Seite fast nur aus einem riesen <table> besteht ala Lebenslauf:  
    > ~~~html
    
    <h1>Lebenslauf</h1>  
    
    >   
    > <h3>Pers&ouml;nliche Daten</h3>  
    >     <table>  
    >         <tr><td>Name:</td><td>Henriete van der Nette</td></tr>  
    >         <tr><td>Anschrift:</td><td>Milchstraße 25</td></tr>  
    >         <tr><td></td><td>0000 Universum</td></tr>  
    >         <tr><td>Geburtsdatum:</td><td>19.02.1920</td></tr>  
    >         <tr><td>Eltern:</td><td>Prinz Eisenherz</td></tr>  
    >         <tr><td></td><td>Rapunzel</td></tr>  
    >         <tr><td>Geschwister:</td><td>Gabi Hinterhof</td></tr>  
    >         <tr><td>Staatsangeh&ouml;rigkeit:</td><td>Alien</td></tr>  
    >         <tr><td>Familienstand:</td><td>Ledig</td></tr>  
    >         <tr><td>Kinder</td><td>20</td></tr>  
    >     </table>  
    > <hr/>  
    > <h3>Schulbildung</h3>  
    >     <table>  
    >         <tr><td>Grundschule:</td><td>1920-1945</td><td>Grundschule</td></tr>  
    >         <tr><td>Orientierungsschule:</td><td>1945-1950</td><td>Realschule</td></tr>  
    >     <table>
    
    

    </table>

    Versteht ihr mein Problem?

    Ja. Du schreibst schlecht wartbaren Code.
    Mach wenigstens Funktionen aus den Ausgaben. Dann kannst Du eine saubere Kontrollstruktur schreiben und rufst je nach if und else die passende Ausgabefunktion auf.

    Du kannst die Zweige auch auslagern in externe Dateien für Members und Gäste und lädst dann die Datei mit readfile() (für reines HTML) dazu.

    if (is_logged())
    {
        readfile('/includes/membertext.htmbody');
    }
    else
    {
        readfile('/includes/gueststext.htmbody');
    }

    Das kann man auf einen Blick lesen!

    Die Verzeichnisstruktur auf dem Host sollte dann z.B. so aussehen:

    /var/www/virthosts/example.org/htdocs
    /var/www/virthosts/example.org/data
    /var/www/virthosts/example.org/sessions
    /var/www/virthosts/example.org/includes
    /var/www/virthosts/example.org/tmp
    /var/www/virthosts/example.org/logs

    Die geschützten Inhalte stehen also außerhalb der Document Root.

    Und wenn Dein Code noch aktive Elemente (<?php echo $_SESSION['username']; ?>) enthält, dann nimmst Du anstelle von readfile() eben include(). Das ist immer noch besser, als dieser Mischcode...

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bikers-lodge.com
  2. Tach!

    Mein Problem er ignoriert die Befehle komplett und gibt einfach alles aus.

    Wer ist "er"? Welche Befehle sind es denn, die "er" ignoriert? Und was ist "alles"? Auch den Anfang oder erst ab einer bestimmten Stelle? Und wenn er sie komplett ignoriert, hat er die Datei vielleicht nicht als PHP gelesen?

    Mein Problem ich will nicht die ganze Seite als echo ausgeben, ist ja viel umständlicher als in HTML.

    Durchaus.

    <h3>Pers&ouml;nliche Daten</h3>

    Ebenfalls umst&auml;ndlich ist, die Umlaute zu verst&uuml;n. Speicher deine Dateien in einer bestimmmten Kodierung und gib diese wenn möglich im HTTP-Header Content-Type und auf alle Fälle als Meta-Element an.

    Versteht ihr mein Problem?

    Ja, aber dessen Ursache geht aus deinem Posting nicht hervor.

    Es wäre viel zu umständlich dieses per echo ein zufügen.
    Zumal es nur so Fehlermeldungen hagelt.

    Erst beim Umschreiben auf echo oder auch jetzt schon?

    Und std daran sitzen und immer wieder Fehler zu suchen und diese dann um zu schreiben ist sehr nervig.

    Fehler zu suchen gehört zu Programmieren wie gegnerische Gewinne zum Spiel.

    Ich beschäftige mich erst seit 2 Wochen mit PHP und bitte keine verweise auf Grundlagen. Denn nur wer Ziele hat kann an den Aufgaben wachsen.

    Ziele lassen sich nicht erreichen, wenn du nicht die notwendige Erfahrung im Umgang mit dem System und vor allem mit der Fehlersuche erarbeitest.

    Wenn es reine Syntaxfehler sind, ist eine IDE (integrierte Entwicklungsumgebung) sehr hilfreich. PHPStorm für etwas Geld finde ich sehr gut, aber auch Eclipse mit PHP-Zusatz kann man nehmen. Da werden Syntaxfehler gleich beim Tippen angezeigt. Logische Fehler kann man aber dabei noch nicht finden. Da muss man dann zur Laufzeit prüfen, was zum Beispiel in den Variablen für Werte enthalten sind und inwieweit die vom Wunsch abweichen.

    dedlfix.

  3. ... und diese dann um zu schreiben ist sehr nervig.

    Um "umzuschreiben" zu schreiben benötigt man keine Lehrzeichen. Schimpft mich von mir aus einen in-Foren-die-Rechtschreibung-Korrigierer, aber die Getrenntschreibung von Worten, die in keiner Version der Rechtschreibreform je getrennt geschrieben worden, nervt wirklich.

    1. Hallo,

      ... und diese dann um zu schreiben ist sehr nervig.
      Um "umzuschreiben" zu schreiben benötigt man keine Lehrzeichen.

      und erst recht keine Leerzeichen. *scnr*

      Schimpft mich von mir aus einen in-Foren-die-Rechtschreibung-Korrigierer, aber die Getrenntschreibung von Worten, die in keiner Version der Rechtschreibreform je getrennt geschrieben worden, nervt wirklich.

      Wenn's dich beruhigt: Das geht mir genauso.

      So long,
       Martin

      --
      F: Was ist wichtiger: Die Sonne oder der Mond?
      A: Der Mond. Denn er scheint nachts. Die Sonne dagegen scheint tagsüber, wenn es sowieso hell ist.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. ... und diese dann um zu schreiben ist sehr nervig.
        Um "umzuschreiben" zu schreiben benötigt man keine Lehrzeichen.

        und erst recht keine Leerzeichen. *scnr*

        Ich bin wirklich nicht kleinlich, schon weil meine Rechtschreibung auch nicht so gut ist, aber daß ich das so dusselig demonstriere, weia.