2016-06-26 2 views
0

Ich habe ein Skript wie folgt:Wie führe ich sowohl if als auch else Blöcke basierend auf einer Bedingung in if-statement Block aus?

if(isset($_SESSION["LoginValidation"]) && $_SESSION["LoginValidation"] == 1){ 

    $something = $db->prepare('SELECT cookie FROM users WHERE id = ?'); 
    $something->execute(array($_SESSION["Id"])); 
    $num_row = $something->fetch(); 
    $_SESSION["cookie"] = $num_row['cookie']; 

    if ($_SESSION["cookie"] != $_COOKIE['login'])){ 
     // jump to following else statement (outer else statement) 
    } 

} else { 
    /* here - this block should be execute when 
     - That inner if-statement is true 
     OR 
     - That outer if-statement is false 
    */ 
} 

Wie Sie sehen, ich brauche if -Anweisung auszuführen und wenn innere if -Anweisung ist true dann else -Anweisung auszuführen. Wie kann ich das machen?

+0

Ändern Sie die Bedingung und setzen Sie den Code in die if-Anweisung, die Sie ausführen möchten, wenn sie gleich sind. – Rizier123

+0

@ Rizier123 Nun kann ich das * nicht tun (basierend auf meinen echten Codes) * .. Eigentlich brauche ich ein * "jump" * oder * "go to" * code * (oder etwas ähnliches) * – stack

+0

Ist das sonst für die nötig 1. wenn? –

Antwort

0

versuchen, etwas wie folgt aus:

$doElse = true; 
if(isset($_SESSION["LoginValidation"]) && $_SESSION["LoginValidation"] == 1){ 

    $doElse = false; 
    $something = $db->prepare('SELECT cookie FROM users WHERE id = ?'); 
    $something->execute(array($_SESSION["Id"])); 
    $num_row = $something->fetch(); 
    $_SESSION["cookie"] = $num_row['cookie']; 

    if ($_SESSION["cookie"] != $_COOKIE['login'])){ 
     $doElse = true; 
    } 
    else { 
     //rest of the logic 
    } 

} 

if ($doElse) { 
    // here - this block should be execute when inner if-statement is true 
} 
+0

Falsch .. 'if ($ doElse) {' sollte auch ausgeführt werden, wenn die äußere 'if'-Anweisung * false * ist (wie ein' else 'dafür) – stack

+0

Unter welcher Bedingung wird' doElse 'falsch sein? – danh

+0

@stack Also, oder willst du nicht, dass die else-Bedingung auf dem if ausgeführt wird? Bitte seien Sie klar, da Ihre obige Aussage Ihrer Frage widerspricht. – Daedalus

1

Ich denke, dass ein Algorithmus Problem ist und nicht PHP. Wie auch immer, es gibt verschiedene Möglichkeiten. Zum Beispiel:

$innerCondition = false; 
$outerCondition = false; 

if(isset($_SESSION["LoginValidation"]) && $_SESSION["LoginValidation"] == 1) { 
    $outerCondition = true; 
    // ... 

    if ($_SESSION["cookie"] != $_COOKIE['login']) { 
     $innerCondition = true; 
     // ... 
    } 

} 

if ($innerCondition || !$outerCondition) { 
    // ... 
} 
+0

Sie brauchen nur 2 'if's. Der zweite würde sagen "if (! $ Valided || $ valided && $ _SESSION ..."). –

+0

@stack Schau dir das an. –

+0

Scheint ordentlich ...! upvote – stack

Verwandte Themen