[PHP]Sessions funktionieren nicht...

  • Hi, ich wollte gerade bei meinem Loginsystem machen das man auch als eingeloggt zählt.



    Man wird richtig weitergeleitet doch normalerweise sollte sich das login verändern(Anderer Text). Das funktioniert nicht.


    PHP
    <?
    			$loggedin = $_SESSION['loggedin'];
    			$username = $_SESSION['username'];
    			$password = $_SESSION['password'];
    		?>


    HTML
    <? if($loggedin == true) { ?>
    				<a href="/ucp.php" class="left">Ucp</a>
    				<a href="/logout.php" class="right">Logout</a>
    			<? } else { ?>
    				<a href="/login.php" class="left">Login</a>
    				<a href="/register.php" class="right">Register</a>
    			<? } ?>


    Was ist falsch?


    MFG Acrio

  • Hm. Jetzt habe ich andere Fehler aber ich glaube das sollt jetzt klappen :)


    HTML
    Warning: mysql_query() [function.mysql-query]: Access denied for user ''@'localhost' (using password: NO) in /users/acrio/www/login.php on line 15
    
    
    Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /users/acrio/www/login.php on line 15
    
    
    Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in /users/acrio/www/login.php on line 16
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ok, das lag wohl nur an dem @. Nur irgendwie checkt er das Passwort etc nicht richtig. der gitb mir immer die alertbox aus...


  • Hier:

    PHP
    $submit = @$_POST["submit"];            $username = @$_POST["userNameField"];            $password = @$_POST["passwordField"];            if($submit) {				$username = @mysql_real_escape_string($username);				$password = @mysql_real_escape_string($password);                $query = @mysql_query("SELECT * FROM accounts WHERE Benutzername='$username' AND Passwort='$password'");                if( @mysql_num_rows($query) == 1) {                    $_SESSION["loggedin"] = 1;                    $_SESSION["username"] = $username;                    $_SESSION["password"] = $password;                    echo "                        <script>                            window.location.href='/index.php';                        </script>                        ";                }                else {                    echo "                        <script>                            alert('Die Eingaben sind inkorrekt oder der Account existiert nicht.');                        </script>                        ";                }            }

  • Das wars auch nicht. Dachte liegt daran das ich fetch row und nicht num rows nahm, doch er sagt immer noch das der Account nicht existier.(Tut er jedoch)


    edit: Wie dumm von mir... hatte vergessen config.php zu includieren -.-

    Einmal editiert, zuletzt von Acrio ()

  • Kurz noch eine Bemerkung am Rande: das @ behebt Fehler in keinster Weise sondern zeigt sie einfach nicht an - beim Debuggen ist das also die dümmste Empfehlung, die man geben kann.
    Siehe dazu auch http://php.net/manual/en/language.operators.errorcontrol.php.


    dümmste Empfehlung?
    Ahja, und du willst wenn dein Mysql Server down ist, das da ca. xx Fehler Meldungen kommen, anstatt es schön abfragen zu können
    und dann iwo anzeigen wenn der Server down ist.

  • Wenn er nicht zum Server verbinden kann, kann es mehrere Ursachen dafür geben: Host ist falsch geschrieben, Nutzer existiert nicht, Passwort ist falsch oder Server ist nicht erreichbar. Wenn du das via

    PHP
    if(!$connectionhandler)

    abfragst, weißt du nicht, um was es sich genau handelt, ist also sehr hinderlich beim Debuggen.
    Gut, die allerdümmste Empfehlung wäre vielleicht, den Code einfach zu löschen, aber wenn man ein PHP-Skript erst aufbaut und da das @ verwendet, findet man Fehler nicht gerade leicht, wo sie auch sein mögen.

    Ich bin Dittis Signatur.

  • Naja, wenn man das @ weg lässt, und der Server down ist kommen warnings.
    Und sollte der Server down sein, kommt bei jeder mysql_ funktion ein warning.


    Deshalb setzt man an den Anfang eine solche Abfrage. Bei negativem Ergebnis (Server Down; Daten falsch w.e.) nutzt man die die("Service aufgrund von Serverproblemen kurzzeitig nicht erreichbar");
    Fertig. Fehler ausklammern ist nie eine sinnvolle "Fehlerlösung" :D


  • Deshalb setzt man an den Anfang eine solche Abfrage. Bei negativem Ergebnis (Server Down; Daten falsch w.e.) nutzt man die die("Service aufgrund von Serverproblemen kurzzeitig nicht erreichbar");
    Fertig. Fehler ausklammern ist nie eine sinnvolle "Fehlerlösung" :D


    Man kann ja das die weglassen und iwo, schlicht im Design halt reinschreiben, "Service aufgrund von Serverproblemen kurzzeitig nicht erreichbar",
    und das geht nur mit @ ;)

  • Mir geht es bei dem @ aber darum, dass der Themenersteller das Thema eröffnete, weil er ein Projekt mit PHP hochzieht, das ganze ist also noch im Aufbau. Ergo: es kann schnell zu Fehlern kommen. Wenn er nun ein @ davor setzt, kann er schlecht etwas debuggen, da er den genauen Fehler nicht sieht - beim Debuggen ist das @ also hinderlich. ;)

    Ich bin Dittis Signatur.