2017-07-28 7 views
-1

Ich versuche, eine dynamische Seite mit $ _GET Vars (params) zu machen, und ich habe es funktioniert, wenn die var etwas gleich ist, wird es Inhalte angezeigt werden soll. Aber wenn die var nicht gleich ist, dann zeigt es entweder den Inhalt noch an, oder zeigt den Fehler nicht an; oder zeigt den Fehler und den Inhalt zur gleichen Zeit

<?php 
if(!isset($_GET['type'])){ 
    header("location: ?type=login"); 
} else { 
    $type = trim(strip_tags(stripslashes(mysql_real_escape_string($_GET['type'])))); 
} 
if($type != 'login' || $type != 'register'){ 
    ?> 
    <h1>What your looking for can't be found!</h1> 
    <?php 
} 
if($type == 'login'){ 
    ?> 
    <h1>Login page:</h1> 
    <?php 
} 
if($type == 'register'){ 
    ?> 
    <h1>Register page:</h1> 
    <?php 
} 

>

Antwort

0

Sie haben zwei Probleme in Ihrem Code:

  1. Ihr Scheck für den Fehler verwenden muss && und nicht || . Sie möchten sehen, ob loginUNDregister beide nicht verwendet werden.
  2. Sie müssen if/else if Aussagen verwenden, um nur eine Bedingung allgegenwärtige stellen Sie sicher ist.

überprüfen Sie diesen Code aus:

<?php 
if(!isset($_GET['type'])){ 
    header("location: ?type=login"); 
} else { 
    $type = trim(strip_tags(stripslashes(mysql_real_escape_string($_GET['type'])))); 
} 

if($type != 'login' && $type != 'register'){ 
    ?> 
    <h1>What your looking for can't be found!</h1> 
    <?php 
} else if($type == 'login'){ 
    ?> 
    <h1>Login page:</h1> 
    <?php 
} else if($type == 'register'){ 
    ?> 
    <h1>Register page:</h1> 
    <?php 
} 
0

Das Problem auftritt, weil Sie einen Vergleich Operator in Ihrem Scheck verwenden:

if($type != 'login' || $type != 'register')

Im Wesentlichen ist dies zwei getrennte Bedingungen; der erste Wille wird true bewerten, wenn die Seite nicht login ist, wird der zweite zu true bewerten, wenn die Seite nicht register ist. Allerdings, sie nicht für einander überprüfen. Die erste Bedingung berücksichtigt register als gültig, da register für if($type != 'login') gilt. Die zweite wird login als gültig ansehen, da login für if($type != 'register') gültig ist.

Sie müssen sicherstellen, dass weder dieser Seiten erlaubt, durch die UND Komparator mit (&&): if($type != 'login' && $type != 'register')

jedoch für die Sache, Sie müssen nicht die über die Einstellung zur Sorge $type Variable überhaupt. Einfach überprüfen, was _GET['type'] zugleich entspricht, dass Sie es losgehen Überprüfung:

<?php 

if (isset($_GET['type']) && $_GET['type'] == 'login') { 
    ?> 
    <h1>Login page:</h1> 
    <?php 
} 
else if (isset($_GET['type']) && $_GET['type'] == 'register') { 
    ?> 
    <h1>Register page:</h1> 
    <?php 
} 
else { 
    header("location: ?type=login"); 
} 

Bitte beachten Sie, dass der mysql_ Konstruktor ist deprecated as of PHP 5.5 und ist geradezu removed in PHP 7. Bitte beachten Sie entweder MySQLi oder PDO Schalten, um sicherzustellen, dass Sie auch parameterised queriesSQL injection zu verhindern verwenden.

Hoffe, das hilft! :)

0

Sie müssen nur die Logik arbeiten, ein wenig mehr ... if, else if, else. Case-Handling ist das Problem.

<?php 
if(!isset($_GET['type'])){ 
    header("location: ?type=login"); 
} else if(isset($_GET['type'] { 
    If ($_GET['type'] !== "") { 
    $type = trim(strip_tags(stripslashes(mysql_real_escape_string($_GET['type'])))); 
    } 
} 
...... 
?> 

Sorry für die Hälfte gebacken Antwort, ich bin auf mein Handy und es ist nicht sehr Code freundlich

Verwandte Themen