如何判断$ _GET参数是否等于或等于

时间:2017-07-28 01:58:16

标签: php html

我试图用$ _GET vars(params)创建一个动态页面,如果var等于某个东西,我会让它工作,它会显示内容。但是如果var不等于某个东西,那么它要么仍然显示内容,要么不显示错误;或同时显示错误和内容

<?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
}

&GT;

3 个答案:

答案 0 :(得分:0)

您的代码中存在两个问题:

  1. 您对错误的检查需要使用&&而不是||。您想查看是否未使用login AND register
  2. 您需要使用if/else if语句来确保只有一个条件存在。
  3. 检查此代码:

    <?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
    }
    

答案 1 :(得分:0)

问题出现了,因为您在支票中使用比较运算符:

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

基本上,这是两个独立的条件;当页面不是true时,第一个将评估为login,当页面不是true时,第二个将评估为register然而,他们没有检查彼此

第一个条件会将register视为有效,因为registerif($type != 'login')有效。第二个会认为login有效,因为loginif($type != 'register')有效。

您需要使用 AND 比较器(&&)确保允许这些页面:if($type != 'login' && $type != 'register')

但是,就此而言,您根本无需担心设置$type变量。只需检查_GET['type']等同于您检查设置的内容:

<?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");
}

另请注意,mysql_构造函数为deprecated as of PHP 5.5,并且是removed in PHP 7。请考虑切换为MySQLiPDO,确保您还使用parameterised queries来阻止SQL injection

希望这有帮助! :)

答案 2 :(得分:0)

你只需要更多地计算出逻辑... if,else if,else。案件处理是个问题。

<?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']))));
    }
}
......
?>

对不起半个问题的答案,我在手机上并且它不是非常适合代码的