Tom: <table> in HTML als echo ausgeben!

Beitrag lesen

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