PHP if, esleif else zusammenziehen?

  • Hallo Forum,

    ich versuche die Bedingungen ordnungsgemäß auszugeben.


    Er zeigt mir aber nun nicht beides an wenn beide Felder leer gelassen wurden.

    Gruß Nico

  • naja stopf des doch in eine bedingung

    PHP
    if( $user == "" && $pass == ""){
         echo "Bitte Usernamen und Passwort eingeben!"; 
     }else{
        if( $user == "" ) {
            echo "<p>Bitte Usernamen eingeben!</p>"; 
        } 
        if ( $pass == "" ) {
            echo "<p>Bitte Passwort angeben!</p>"; 
        } 
      }
  • Ja, wenn beide Fehlen, wird er bei dir ja schon bei der ersten abfrage was ausgebene, und aufgrund der elseifs ja dann aufhören.

    Mit Synaptics Methode klappt es =)

    wert.TeeeX.de
    Wie gut ist die technische Umsetztung deiner Website wirklich?
    Teste es!

  • danke für die Hilfe, eventuell bin ich nu auch schon ein Stück weiter


    Wenn jetzt nur der Username eingegeben wird dann erscheint trotzdem folgende Meldung

    Zugang gestattet!

    Ich versuche eben mal das Formular in eine extra Datei zu packen , is glaub besser...


    Ich werde mich hier wohl registrieren --)

  • Die Abfrage muss mit einem && oder and kommen.
    Andernfalls reicht es ihm ja schon, wenn nur der Name eingegeben wird.

    wert.TeeeX.de
    Wie gut ist die technische Umsetztung deiner Website wirklich?
    Teste es!

  • Und hier mal eine elegantere Lösung:



    <edit>
    Und so könnte das komplett aussehen:


    </edit>

    4 Mal editiert, zuletzt von bandit600 (14. Februar 2010 um 12:38)

  • Und hier mal eine elegantere Lösung:


    <edit>
    Und so könnte das komplett aussehen:


    </edit>


    Und kann ich in deinem Script die $_POST Variablen nicht in variablen abspeichern?

    Gruß Nico

  • Bin Änfänger.... der Übersicht halber, ich möchte die befehle verstehen. Ich kann es für mich so besser verstehen und kürzer is es doch auch....

    Gruß Nico

  • "Kürzer" ist kein Argument. So kannst du an allen Stellen des Scriptes erkennen, wo die Variable herkommt. Ist bei längeren Scripte hilfreich. Es ist also relativ sinnlos, wenn man

    $blub = $_POST['blub'];

    schreibt.

  • ja in meinem Fall würde es dann wohl

    PHP
    $user = $_POST['user'];
    $pass = $_POST['pass'];
    
    
    
    
    ....


    heissen. Natürlich keine unsinnigen Variablennamen :p


    @ Ich würde gerne noch wissen wie sich die ersten beiden if abfragen erläutern...


    PHP
    if (isset($_POST['user']))   // wenn variable existiert
      		{
         		$errors = array(); // erstelle ein array unter $errors
     
         		if (empty($_POST['user'])) //wenn variable nicht gesetzt erstelle automatische den Namen: Username
           		$errors[] = "Username";

    Die Kommentare sind so wie ich es verstehe.
    Und warum die Var errorText am Anfang leer ist?

    Gruß Nico

  • Und kann ich in deinem Script die $_POST Variablen nicht in variablen abspeichern?

    Gruß Nico

    Auf der anderen Seite wirst du die POST oder GET Daten aber noch weiter verarbeiten müssen, denn eine ungesicherte Usereingabe ist in einem Loginscript nicht zu empfehlen.

    wert.TeeeX.de
    Wie gut ist die technische Umsetztung deiner Website wirklich?
    Teste es!

  • Das beste ist, wenn du Funktionen und Klassen benutzt. Dann kannst du die POST-Variablen als Argument an die Funktion login übergeben und login macht dann damit, was es für nötig hält.

    Viele liebe Grüße
    The User

  • Ich habe das Script jetzt mal etwas umgeschrieben, so dass man mit den Variablen bzw usereingaben (username, passwort ) noch geschickter weiterarbeiten kann:

    Ich versuche nun eine Session Variable zu setzten und wenn diese wahr ist darf man weiter. Ich bin nicht ganz sicher ob ich verstehe was ich tue, auf jeden Fall ward ihr mir hier eine große Hilfe bisher :p

    Das ist die Logout.php

    PHP
    <?php 
                              session_start();
    		session_destroy();
    		echo 'Sie wurden erfolgreich abgemeldet!';
    
    	?>

    Und das der interne bereich:

    PHP
    <?php 
    	if ( $_SESSION['eingeloggt'] == TRUE )
    	{
    	echo "Hallo ".$user;
    }
    else 
    {
    echo 'NO';
    }
    ?>


    Leider funktioniert noch nicht alles so. z.b wenn ich nur Username eingebe dann erscheint trotzdem nicht mehr der Startseiten Inhalt also Herzlich Willkommen auf bla..bla..blabla

    Gruß Nico

  • Schreibe manan den Anfang deines Scriptes diese Zeilen:

    PHP
    error_reporting(E_ALL);
    ini_set("display_errors", true);


    Dann siehst du, wie geschickt deine Version ist.

    Und wieso sieht dein Quellcode so zerschossen aus? Das sah bei mir ordentlicher aus.

    Aus der Doku:

    3 Mal editiert, zuletzt von bandit600 (14. Februar 2010 um 17:21)

  • Schreibe manan den Anfang deines Scriptes diese Zeilen:

    PHP
    error_reporting(E_ALL);
    ini_set("display_errors", true);


    Dann siehst du, wie geschickt deine Version ist.


    Hab ich es erscheint keine meldung bzw local ist es glaub eingestellt. vorher kamen mal fehler aber jetzt keine mehr :p


    Und wieso sieht dein Quellcode so zerschossen aus? Das sah bei mir ordentlicher aus.

    Entschuldige ich musste ihn etwas trennen um den Überblick zu bekommen was geschieht, wenn alles noch enger steht kann ich ihn fast nicht mehr lesen und die befehle auseinanderhalten. Wir machen noch nicht so lange PHP...


    @ ich hatte in der logout datei noch versucht mit

    PHP
    Header("Location: http://127.0.0.1/index.php"); 
    exit();

    auf die indexseite zurückzuleiten, dies mislang auch :(

  • Hier

    PHP
    $user = $_POST['user']; 
    $pass = $_POST['pass'];


    kommt bei hochgedrehtem Error-Reporting garantiert eine Notice-Meldung, wenn das Script das erste Mal augerufen wird!


    Entschuldige ich musste ihn etwas trennen um den Überblick zu bekommen was geschieht, wenn alles noch enger steht kann ich ihn fast nicht mehr lesen und die befehle auseinanderhalten. Wir machen noch nicht so lange PHP...


    Und deshalb sind die Einrückungen alle hinüber???

  • Hier

    PHP
    $user = $_POST['user']; 
    $pass = $_POST['pass'];


    kommt bei hochgedrehtem Error-Reporting garantiert eine Notice-Meldung, wenn das Script das erste Mal augerufen wird!

    Ist es möglich zu sagen das nur wenn das script arbeitet das die variablen dann gesetzt werden?
    für weitere Uberprüfungen erscheint mir das logisch sinnvoll


    Und deshalb sind die Einrückungen alle hinüber???

    Bei mir im Quellcode sieht es ganz anders aus, alles ab <?php in einer Reihe :p

    Gruß Nico