• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Switch: Jeder Case-Teil wird ausgelöst!

hansi3000

Neues Mitglied
Hallo, ich habe wie vor ca. 2 Wochen wieder ein Scritp angefangen :D .
Nun habe ich ein richtes PW eingegeben (1), aber jeder Case-Teil wird ausgelöst!?
Was soll ich tun damit nur der erste auslöst, wenn die var. 1 enthällt?

mfg hansi3000.

PHP:
<?php session_start(); ?>
<!DOCTYPE html>
<html>
    <head>    
        <?php
        include 'func.inc.php';
        include 'logged_in.inc.php';
        ?>
        <title>Test</title>
        <link rel="stylesheet" type="text/css" href="screen.css"/>
        <link rel="icon" href="http://www.favicon-generator.de/images/icons/a6cd6df1-69d6-4105-afdc-3182bb54f303-16.ico" type="image/vnd.microsoft.icon">
    </head>
    <body onselectstart="return false" oncontextmenu="return false">
    <?php
        check($_GET['supadm'], $check, 'Superadministrator');
        check($_GET['adm'], $check, 'Administrator');
        check($_GET['mod'], $check, 'Moderator');
        check($_GET['tit'], $title, '1');
        check($_GET['pw'], $docheckpw, '1');
        check($_GET['docheckpw'], $checkpw, '1');
        if ($title == '1') {
            title('Hallo');
        }
        if (isset($docheckpw) and $docheckpw == '1') {
            echo '
            <form action="index.php?docheckpw" method="post">
                <input type="password" name="inputpw" value="1234567890">
                <input type="hidden" name="docheckpw" value="1">
                <input type="submit" value="Daten absenden">
            </form>
            ';
        }
        if ($checkpw == '1') {
            switch ($_POST['inputpw']) {
                case 1:
                    $check = 'echter Superadministrator';
                    $_SESSION['check'] = 'echter Superadministrator';
                case 2:
                    echo "Irgendwas wird nun gespeichert";
                default:
                    echo "Zeige etwas an, oder mache etwas, falls kein case-teil trifft";
                case 3: // kann gefunden werden und wird nicht automatisch durch default abgefangen 
                    echo "Etwas wird neu geladen";
            
            }
        }
        if (isset($check) or isset($_SESSION['check'])) {
            if (!isset($check)) {
                $check = $_SESSION['check'];
            }
            echo 'Du bist ein '.$check.'.<br/>';
            $_SESSION['check'] = $check;
        }
    ?>
    </body>
</html>

PS: Die genutze Funktionen existieren natürlich, hier der Code in der func.inc.php:

PHP:
function check ($invar, &$outvar, $contentvar) {
                if (isset($invar)) {
                    $outvar = $contentvar;
                }
            }
 
Werbung:
Man sollte noch hinzufügen, dass das gewollt ist. Somit kannst du eine Funktion mehreren Cases zuweisen.

Kleines Beispiel:
PHP:
switch($variable){
    case 'a':
    case 'b':
    case 'c': abc(); break;
    default: xyz(); break;
}
Ist $variable gleich a, b oder c, wird die Funktion abc() ausgelöst, ansonsten die Funktion xyz(). Spart Quellcode bei bestimmten Prüfungen ;D
 
Werbung:
Ähh noch ein Problem, hier wird nur eine Tabelle ohne jeglichen Inhalt ausgegeben, warum?

PHP:
echo '<table border="1">';
            while(!feof($plog)) {
                $zeile = fgets($plog, 10000);
                echo '<tr><td>'.$zeile.'</td></tr>';
            }
            echo '</table>';
 
$plog ist ein File Pointer (und nicht etwa false, herauszufinden mit var_dump($plog);) und die Datei hat Inhalt?
 
Zuletzt bearbeitet:
Werbung:
Zurück
Oben