移动浏览器绕过elseif语句但在桌面和本地主机上运行良好

时间:2018-05-13 19:19:32

标签: php if-statement mobile

我确认密码/用户名正确后,我有一组非常简单的elseif语句来重定向用户使用标题。它可以在localhost和所有桌面浏览器上完美地工作。 (如果toms密码正确/其他正确密码转到指定页面,tom会进入管理页面)

但是,在移动移动设备上运行时,它会跳到else语句。 (如果汤姆斯密码正确/其他正确的密码转到主页而不是他们被分配的页面,汤姆会转到主页(错误页面)

我尝试将所有语句更改为if而不是elseif(如另一个堆栈溢出问题中所述)

警告:我意识到这不安全,并打算包含准备好的语句/密码哈希以确保安全性。但是,在我继续之前,我需要弄明白这一点。

我花了好几个小时试图找出原因并尝试了很多变化。我希望这是一件我看不到的简单事。

我是使用PHP的新手,所以如果这看起来非常明显,请保持温和。我已经花了很多时间试图通过这个网站和其他人来解决这个问题,而且我也在努力学习,因为我一直在努力学习。

提前致谢.....

<?php

session_start();


if (isset($_POST['submit'])) {

include_once 'dbh.inc.php';

$name = mysqli_real_escape_string($conn, $_POST['name']);
$pwd = mysqli_real_escape_string($conn, $_POST['pwd']);

//error handlers

//check for empty fields

if (empty($name) || empty($pwd) ){

   header("Location: ../index.php?entry=empty");
   exit();

} else {

    // check if input characters are valid

    if (!preg_match("/^[a-zA-Z]*$/", $name) || !preg_match("/^[a-zA-Z]*$/", $pwd))  {

        header("Location: ../index.php?entry=invalid-entry");
        exit();

    } else {

        $sql = "SELECT * FROM users WHERE user_name='$name' AND user_pwd='$pwd'";
        $result = mysqli_query($conn, $sql);
        $resultCheck = mysqli_num_rows($result);

        if ($resultCheck < 1) {

            header("Location: ../index.php?login=error");
            exit();

        } else {
            if ($row = mysqli_fetch_assoc($result)) {
                $_SESSION['u_name'] = $row['user_name'];
                $_SESSION['u_pwd'] = $row['user_pwd'];

                if ($name == 'tom') {
                    header("Location: ../admin.php?login=success");
                    exit;

                } elseif ($name == 'dick') {
                    header("Location: ../page_one.php?login=success");
                    exit;    

                } elseif ($name == 'harry') {
                    header("Location: ../page_two.php?login=success");
                    exit;

                } elseif ($name == 'joe') {
                    header("Location: ../page_three.php?login=success");
                    exit;

                } elseif ($name == 'bloggs') {
                    header("Location: ../page_four.php?login=success");
                    exit;

                } else {
                    header("Location: ../HOME.php?login=success");
                    exit;
                }
            }
        }            
    }
}

} else {
header("Location: ../index.php");
exit();
}

1 个答案:

答案 0 :(得分:2)

我认为这与移动浏览器没有任何关系,因为PHP脚本是在服务器上执行的。

另一方面,当您在大多数移动设备上键入内容时,默认情况下第一个字母为大写,并且您的检查区分大小写。你确定你在手机上写'汤姆'而不是'汤姆'吗?