kostenloser Webspace werbefrei: lima-city


Problem mit "PHP else"

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    pokerleben

    pokerleben hat kostenlosen Webspace.

    Hallo,

    seit kurzem mach ich mal wieder was mit php. hab seit ca 1 Jahr nix mehr dazu getan und relativ viel wieder vergessen... Also ist mein Wissenstand diesbezüglich recht gering.

    Ich will grad ein Login File für eine HP basteln (ja, ich kenn php Fusion, aber ich wollts selbst mal probieren :wink:)
    Eine Registrierung hab ich schon gemacht (funktioniert auch ganz gut bisher) und jetzt soll man sich halt mit Benutzernamen und Kennwort einloggen können.
    Dafür will ich nur ein File, also nicht eins für die Eingabe der Daten und eins für die Bestätigung "sie sind jetzt eingelogt" oder so was sonder das soll über phpself in einem php file sein. Und darin steckt das Problem.

    Und zwar folgendes: Als erstes soll geprüft werden, ob schon Anmeldedaten eingegeben wurden. das mach ich mit
    <?php if (!isset($_GET['username'])):
    ?>


    Danach kommt eine html Eingabe der Daten
    <form action="login.php" method="post">
    <div align="center"><br>
    <table width="62%" border="0" cellpadding="0">
    <tr>
    <td>Benutzername:</td>
    <td><div align="left">
    <input name="username" size="25" maxlength="20"/>
    </div></td>
    </tr>
    <tr>
    <td> Passwort:</td>
    <td><div align="left">
    <input type="password" name="passwort1" size="25" maxlength="20"/>
    </div></td>
    </tr>
    <tr>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td><div align="left">
    <input name="submit" type="submit" value="Login" />
    </div></td>
    </tr>
    </table>
    <br />


    Das soll halt nur dann Angezeigt werden, wenn der Benutzer das erste mal auf die Seite kommt und folglich noch keine Logindaten (für diese Session) eingegeben hat.

    Und danach gehts so weiter:
    <?php else: 
    //Überprüfen ob schon Daten eingegeben wurden, ansonsten abbrechen
    if($username != true)
    {
    exit;
    }
    session_start();
    
    $verbindung = mysql_connect("localhost", "****" , "****")
    or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
    mysql_select_db("****") or die ("Datenbank konnte nicht ausgewählt werden");
    
    $username = $_POST["username"];
    
    $passwort = md5($_POST["password"]);
    
    $abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1";
    $ergebnis = mysql_query($abfrage);
    $row = mysql_fetch_object($ergebnis);
    
    if($row->passwort == $passwort)
        {
        $_SESSION["username"] = $username;
        echo "Login erfolgreich";
        }
    else
        {
        echo "Anmelden fehlgeschlagen";
        }
    
    ?>


    Das mit <?php if isset... und <?php else: steht so wortwörtlich in dem PHP Buch dass ich noch hab. Aber ich bekomm für die Zeile in der php else steht immer eine fehlermeldung und es funktioniert auch nicht, dass nachdem daten eingegeben wurden das Anmeldeformular nicht mehr angezeit wird. woran kann das liegen?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hi,

    mir ist der Doppelpunkt bei der if-Funktion noch nicht bekannt gewesen. Bei switch-case gibt es diesen, aber bei if wird normalerweise mit geschweiften Klammern {} gearbeitet, wie du es in deinem Skript teilweise ja auch gemacht hast...

    Ich würde es also wie folgt machen:
    <?php if () {
    ?>
    erster Teil der Bedingung
    <?php } else {
    ?>
    zweiter Teil der Bedingung
    <?php }
    ?>

    Gruß
    Karlja
  4. Autor dieses Themas

    pokerleben

    pokerleben hat kostenlosen Webspace.

    ja, ich dacht mir auch, dass ich da irgenwo klammern brauch. aber in meinm buch wars halt explizit so geschrieben und da das das erste mal war, dass ich sozusagen eine übergreifende if-else beziehung hab hab ich das aus dem Buch übernommen.

    Aber ich werd das jetzt dann gleich mal testen mit den klammern, mal schaun ob das dann funzt.

    Danke schonmal
    Gruß
  5. Das liegt wahrscheinlich am Doppelpunkt.
    Du kannst if Funktionen auf folgende Arten schreiben:
    <?php
    if($var == 1){
     echo "so kannst du beliebig viel in den If blog schreiben";
     echo "<br>";
    } else {
     echo "irgendwasanderes";
    }
    
    if($var == 1)
     echo "So kannst du nur eine Zeile schreiben";
    else
     echo "hier genauso nur eine Zeile";
    
    echo "var ist 1 ".($var == 1 ? "Wahr" : "Falsch")."<br>";
    ?>


    Natürlich muss das else auch nicht immer erscheinen, und du kannst auch z.B. nur das if mit {} schreiben, das else aber nicht.

    Grüße,
    Prog
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!