簡體   English   中英

移動瀏覽器繞過elseif語句,但可以在台式機和本地主機上正常運行

[英]mobile browsers bypassing elseif statements but working fine on desktop and local host

在確認密碼/用戶名正確之后,我有一組非常簡單的elseif語句來使用標題重定向用戶。 如預期的那樣,它在localhost和所有桌面瀏覽器上均能完美運行。 (如果toms密碼正確,則tom進入管理頁面/其他正確的密碼進入其分配的頁面)

但是,在移動設備上運行時,它會跳到else語句。 (如果toms密碼正確,則tom進入主頁(錯誤頁面)/其他正確的密碼進入主頁,而不是分配給他們的頁面)

我嘗試將所有語句更改為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();
}

我認為這與移動瀏覽器無關,因為PHP腳本是在服務器上執行的。

另一方面,當您在大多數移動設備上鍵入內容時,默認情況下首字母為大寫字母,並且支票區分大小寫。 您確定在手機上寫“ tom”而不是“ Tom”嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM