移动浏览器绕过 elseif 语句,但在桌面和本地主机上工作正常



我有一组非常简单的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();
}

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

另一方面,当您在大多数移动设备上键入内容时,第一个字母默认为大写,并且您的支票区分大小写。您确定在移动设备上写的是"汤姆"而不是"汤姆"吗?

相关内容

最新更新