IF/Elseif/Switch oder doch ein anderes Problem ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • IF/Elseif/Switch oder doch ein anderes Problem ?

    Hi,

    aus meinem alten Treahd habe ich gelernt und was neues gemacht. Jetze wierd auch die Session registriert. So also zum Problem ich habe eine If /elseif anweisung die Funktioniert nicht zb:

    PHP-Code:
    if ($_SESSION['rechte'] = 0) {
       echo 
    "nix<br>";
    } elseif (
    $_SESSION['rechte'] = 1) {
       echo 
    "admin";
    } elseif (
    $_SESSION['rechte'] = 2) {
       echo 
    "user";

    bei dieser If/elseif Kombination bekomme ich keine Ausgabe. Bei der Switch sache nur den Default. var_dump() und echo $_SESSION['rechte'] zeigt den Inhalt Korrekt an nur halt bei den genannten Sachen nicht. Nu meine Frage Muss ich erst die $_SESSION[] umwandeln in eine Normale Variabel ?

    Gruß
    Dennis

    Edit ich finde auch Komisch erst steht bei der var_dump() ausgabe diese hier:

    string(2) "28" 28admin
    DRücke ich dann F5 steht das da:

    int(1) 1admin
    Ps: hab mir ein PHP5 buch bestellt nur mal so am Rande
    Zuletzt geändert von /etc/; 03.09.2006, 18:49.

  • #2
    Du kennst den Unterschied zwischen = und ==?

    Sind aber nur absolute Grundlagen.

    Kommentar


    • #3
      Klar aber man muss beides mal versuchen aber auch mit == gibt es überhaupt keine Ausgabe. Mit einem = wurde wenigstens Admin angezeigt.

      Kommentar


      • #4
        Wo ist denn die Testausgabe, von der du redest, die sehe ich im Script nicht.

        Zeig mal den aktuellen Code, so dass man nachvollziehen kann.

        error_reporting hast du ja sicher auch drin.

        Kommentar


        • #5
          Wo ist denn die Testausgabe, von der du redest, die sehe ich im Script nicht.
          Zeig mal den aktuellen Code, so dass man nachvollziehen kann.
          PHP-Code:
          <?php
          error_reporting
          (E_ALL);
              include_once 
          'checkLogin.inc.php';

          ?>

          <html>
          <head>
             <title>folgt</title>
          </head>
          <body>
          <?php
          var_dump
          ($_SESSION['rechte']); 

          echo 
          $_SESSION['rechte'];

          if (
          $_SESSION['rechte'] == 0) {
             echo 
          "nix<br>";
          } elseif (
          $_SESSION['rechte'] == 1) {
             echo 
          "admin";
          } elseif (
          $_SESSION['rechte'] == 2) {
             echo 
          "user";
          }


          ?>



             <p><a href="logout.php">Logout</a></p>

          </body>
          </html>
          ^^ Der Komplette Code.

          error_reporting hast du ja sicher auch drin.
          Mittlerweile immer ohne fange ich nix an.

          Kommentar


          • #6
            und die zugehörige (komplette) Ausgabe? (sollte ja nicht zu viel sein)

            Kommentar


            • #7
              Ups Sorry, hier die validateLogin.inc.php



              PHP-Code:
              <?php

                  session_start
              ();


                  if( isset(
              $_POST['username'], $_POST['passwort'])
                      AND
                      
              strcmp(trim($_POST['username']),'') != 0
                      
              AND
                      
              strcmp(trim($_POST['username']),'') != ) {



                        include_once 
              'config.inc.php';


                        if( !
              $connection mysql_connect
              $_config['host'], $_config['user'], $_config['password'] ) ) {
                             die( 
              'Verbindung zum Datenbankserver konnte nicht hergestellt werden.' );
                        }

                        if( !
              mysql_select_db$_config['database'], 
              $connection ) ) {
                            die ( 
              'Die Datenbank ' $_config['database'] . 
              kann nicht verwendet werden. <br />
                                     MySQL-Error: <br />' 
              mysql_error() );
                        }



                        
              $sql "SELECT
                                         _id,
                                         _anzahlLogins
                                         _rechte
                                    FROM
                                         archiv_login
                                    WHERE
                                         _username = '" 
              trim($_POST['username']) . "'
                                    AND
                                         _passwort = '" 
              md5(trim($_POST['passwort'])) . "'";



                        
              $res mysql_query($sql) or die( 'Error[SELECT|User]: <br />
                                                                         <pre>' 
              $sql '</pre>
                                                                         <br />
                                                                         MySQL-Error: ' 
              mysql_error() );


                        if( 
              mysql_num_rows($res) != ) {
                            
              header'Location: http://localhost/lst/loginfehler.php' );
                            exit();
                        }
                        else {

                           
              $_SESSION['loggedIn'] = true;


                           
              $user mysql_fetch_object($res);
                           
              $_SESSION['anzahlLogins'] = $user->_anzahlLogins;
                           
              $_SESSION['id'] = $user->_id;
                           
              $_SESSION['rechte'] = $user->_rechte;

                           
              $sql 'UPDATE
                                            archiv_login
                                       SET
                                            _anzahlLogins = _anzahlLogins + 1
                                       WHERE
                                            _id = ' 
              $user->_id;

                           
              mysql_query($sql) or die( 'Error[UPDATE|User]: <br />
                                                                        <pre>' 
              $sql '</pre>
                                                                        <br />
                                                                        MySQL-Error: ' 
              mysql_error() );

                           
              header'Location: http://localhost/lst/index2.php );
                           exit();
                        }

                  }
                  else {
                        header( '
              Locationhttp://localhost/lst/login.php
              ' );
                        exit();
                  }

              ?>
              checkLogin.inc.php

              PHP-Code:
              <?php

                  session_start
              ();

                  if( !
              $_SESSION['loggedIn'] ) {
                      
              header'Location: http://localhost/loginformular.html' );
                      exit();
                  }

              ?>
              Zuletzt geändert von /etc/; 03.09.2006, 19:26.

              Kommentar


              • #8
                Ähm..
                Original geschrieben von TobiaZ
                und die zugehörige (komplette) Ausgabe? (sollte ja nicht zu viel sein)
                Deine Beiden Dateien da oben haben auf dein Script gar keinen Einfluss, sind also irrelevant.

                Kommentar


                • #9
                  Re: IF/Elseif/Switch oder doch ein anderes Problem ?

                  PHP-Code:
                  if ($_SESSION['rechte'] = 0) {
                     echo 
                  "nix<br>";
                  } elseif (
                  $_SESSION['rechte'] = 1) {
                     echo 
                  "admin";
                  } elseif (
                  $_SESSION['rechte'] = 2) {
                     echo 
                  "user";

                  Du machst hier jeweils eine Zuweisung an $_SESSION['rechte'] und da 0 den Wahrheitswert false entspricht, wird die erste else if auch ausgeführt, der session also 1 zugewiesen! Darum bekommst du beim aktualisieren mit F5 die 1 anstatt der 28 ausgegeben! Dieses admin das da noch bei steht, wird ja im ersten else if strang ausgegeben!!

                  Aber im grunde, solltest du solche dinge im schlaf beherrschen, wenn du php oder irgendeine andere sprache programmieren willst

                  Kommentar


                  • #10
                    @Tobiaz

                    Jetze weiß ich was du meinst also die Ausgabe habe ich oben gepostet :

                    string(2) "28" 28admin
                    Also string(2) "28" lasse ich mit var_dump($_SESSION['rechte']); ausgeben. die 28 vorm Admin Lasse ich mit echo $_SESSION['rechte']; ausgeben. was ich noch nicht verstehe ist warum sich die Zahl zb. 28 bei jedem Login um eine Zahl sich erhöht. Das Admin ist halt die Ausgabe von der IF Funktion.

                    @PHP-Desaster

                    If und co. kann ich für meine Anforderungen schon sehr gut bzw damit vergleich durchführen etc. Die 0 habe ich noch drinne da ich mehre Funktionen getestet habe sprich If und mit switch.

                    Kommentar


                    • #11
                      Die "28" ist die Anzahl logins, welche halt irgendwie ausgegeben werden. Das kann irgendein syntaxfehler im loginskript sein, ein = anstatt ein ; oder so... irgendwo... : Im Zusammenhang mit dem "=" anstatt "==" entsteht immer 'admin' und $_SESSION['rechte']=1 !! (wie PHP-Desaster schon bemerkt hat).

                      Im 'SELECT _id,_anzahl_Login _rechte' fehlte ein Komma. Interessanterweise gab es keinen mysql-Fehler aber wer weiss was wirklich selected wurde und gespeichert.
                      Zuletzt geändert von nix_wie_weg; 03.09.2006, 22:17.

                      Kommentar


                      • #12
                        Vielen Dank für euer Super Hilfe. nix_wie_weg hats erkannt ein Komma fehlte Muss ich vergessen haben als ich gefummelt hatt

                        Kommentar


                        • #13
                          das fehlende Komma bedeutet AS
                          alles klar.

                          Kommentar

                          Lädt...
                          X