мобильные браузеры, пропускающие операторы elseif, но отлично работающие на десктопе и локальном хосте - PullRequest
0 голосов
/ 13 мая 2018

У меня есть очень простой набор операторов elseif для перенаправления пользователей с использованием заголовка после подтверждения правильности пароля / имени пользователя. Как и ожидалось, он отлично работает на локальном хосте и во всех настольных браузерах. (Том переходит на страницу администратора, если пароль Томса правильный / другие правильные пароли переходят на назначенную им страницу)

Однако при запуске на мобильных мобильных устройствах происходит переход к оператору 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 голосов
/ 13 мая 2018

Я не думаю, что это имеет какое-либо отношение к мобильному браузеру, поскольку скрипт PHP выполняется на сервере.

С другой стороны, когда вы набираете что-то на большинстве мобильных устройств, первоепо умолчанию буква заглавная, а ваши чеки чувствительны к регистру.Вы уверены, что пишете «Том», а не «Том» на мобильном телефоне?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...