php code zentrieren

08154711

Erfahrenes Mitglied
Hallo,

Wie kann ich diesen Code auf der Webseite zentrieren? Da das zum Login gehört sollte ja session_start(); am anfang des Dokuments stehen. Habe das in ein div-tag gepackt aber da kam eine Fehlermeldung.


PHP:
<?php
    error_reporting(E_ALL);
    include("mysql.php");
    include("functions.php");

    // Session starten
    session_start();
    include("autologout.php");

    if(isset($_POST['submit']) AND $_POST['submit']=='Einloggen'){
        // Falls der Nickname und das Passwort übereinstimmen..
        $sql = "SELECT
                        ID
                FROM
                        User
                WHERE
                        Nickname = '".mysql_real_escape_string(trim($_POST['Nickname']))."' AND
                        Passwort = '".md5(trim($_POST['Passwort']))."'
               ";
        $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
        // wird die ID des Users geholt und der User damit eingeloggt
        $row = mysql_fetch_assoc($result);
        // Prüft, ob wirklich genau ein Datensatz gefunden wurde
        if (mysql_num_rows($result)==1){
             doLogin($row['ID'], isset($_POST['Autologin']));
             echo "<h4>Willkommen ".$_SESSION['Nickname']."</h4>\n";
             echo "Sie wurden erfolgreich eingeloggt.<br>\n".
                  "Zur <a href=\"index.php\">Startseite</a>\n";
        }
        else{
             echo "Sie konnten nicht eingeloggt werden.<br>\n".
                  "Nickname oder Passwort fehlerhaft.<br>\n".
                  "Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Login-Formular</a>\n";
        }
    }
    else{
        echo "<form ".
             " name=\"Login\" ".
             " action=\"".$_SERVER['PHP_SELF']."\" ".
             " method=\"post\" ".
             " accept-charset=\"ISO-8859-1\">\n";
        echo "Nickname :\n";
        echo "<input type=\"text\" name=\"Nickname\" maxlength=\"32\">\n";
        echo "<br>\n";
        echo "Passwort :\n";
        echo "<input type=\"password\" name=\"Passwort\">\n";
        echo "<br>\n";
        echo "eingeloggt bleiben :\n";
        echo "<input type=\"checkbox\" name=\"Autologin\" value=\"1\">\n";
        echo "<br>\n";
        echo "<input type=\"submit\" name=\"submit\" value=\"Einloggen\">\n";
        echo "<br>\n";
        echo "<a href=\"passwort.php\">Passwort vergessen</a> oder noch nicht <a href=\"registrierung.php\">registriert</a>?\n";
        echo "</form>\n";
    }
?>
 
HTML:
<div style="text-align: center;"></div>

Kannst du direkt nach session_start(); aufrufen. Der Endtag muss dann natürlich hinter dem zu zentrierenden Text stehen. Alternativ kannst du nach ob_start(); und ob_end_flush(); nutzen.
 
Entweder hinter session_start():
PHP:
<?php
session_start();
?>
<div style="text-align: center;">
<?php
//...
?>
</div>

oder mit den outputbuffering Funktionen
PHP:
<?php
ob_start();
?>
<div style="text-align: center;">
<?php
session_start();
//...
?>
</div>
<?php
ob_end_flush();
?>

Hier würde ich zum ersten Codesnippet greifen.
 
Habe das erste Beispiel genommen.
Fehlermeldung
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\xampp\htdocs\login\login.php:6) in C:\xampp\xampp\htdocs\login\login.php on line 8
 
Vor dem Beispiel darf keinerlei Ausgabe stattfinden. Weder Leerzeichen, Htmlcode oder sonst irgendwas. Das muss praktisch in den ersten Zeilen deines Scriptes stehen.
 
Deswegen bietet es sich meist an den Code so aufzubauen:
PHP:
<?php
    session_start();
    // jetzt der ganze Include-Teil
    echo "<div style=\"text-align: center\">";
    // jetzt der Teil der zentriert sein soll
    echo "</div>";
?>

Grundsätzlich, um zur Ausgangsfrage zu kommen, ist dies aber eigentlich kein PHP-Problem.
 
Aber um deine Frage zu beantworten: In mysql.php oder functions.php wird irgendwo eine Ausgabe direkt gemacht. Das kann z.B. auch dadurch passieren, das du hinter dem Schluss-Tag von PHP ein Return, eine Leerzeile oder der gleichen hast. Sowas fällt dann auch nicht sofort auf.
 
Danke für die Antworten, jetzt ist es mittig muß jetzt noch 400px nach unten.

?>
<div style="text-align: center; margin-top:400px; position: relative; z-index:1000;">
<?php

Geht leider so nicht der Content wird ebenfalls nach unten verschoben, dachte das kann ich mit dem z-index kompensieren...
 
Nimm mal position: absolute; ggf musst du die anderen Elemente dann auch neu positionieren, aber ohne die zu kennen lässt sich da nicht mehr zu sagen.
 
Zurück