【问题标题】:Load disparate views based on user name using PHP使用 PHP 根据用户名加载不同的视图
【发布时间】:2013-12-11 18:11:40
【问题描述】:

我使用 PHP 和 MySQL 创建了一个学生和教师反馈系统。学生和讲师登录后应显示单独的视图。学生用户名采用B******** 的形式,讲师的用户名采用E******** 的形式。我在想有没有办法获取用户输入的用户名并将其截断并匹配 BE 然后为给定用户提供相关的 PHP 视图,或者有更好的方法来实现我的目标追了我对 PHP 比较陌生,因此非常感谢任何帮助。

【问题讨论】:

  • 您可以为用户使用标志。例如,-s 代表学生,-l 代表讲师。然后当用户登录并检查密码时,也要检查标志,提供由标志确定的视图。

标签: javascript php mysql database login


【解决方案1】:

以下是我的方法:

  1. 在数据库中,创建一个“userType”列,指示用户名是属于学生还是教师。
  2. 用户提交他们的登录详细信息。您找到一个匹配项,检查“userType”列并相应地显示一个视图。

这是一个非常基本的代码示例

$sql = $this->db->query("
 SELECT userType
 FROM userTable
 WHERE userName = //Username typed in by the user
 AND password = //Password typed in by the user
");
$result = $sql->fetchAll();
if($result[0][0] == "student") include_once "student.php";
if($result[0][0] == "teacher") include_once "teacher.php";
else echo "User does not exist";

【讨论】:

  • 所以,现在我已经为学生和讲师设置了一张桌子。一个包含 StudentID,一个包含 LecturerID。如果是这种情况,我是否需要一个 userType 类来区分它们之间的区别,或者我可以像IF SELECT StudentID from Student; THEN include student.php; ELSE IF SELECT LecturerID from Lecturer; THEN include lecturer.php; ELSE PRINT 'You have entered an incorrect user ID'; 这样的东西吗?或者这完全错了吗?
  • 我建议您为两者使用一个表并使用“userType”列来区分它们。这样你的数据库设计会更干净,查询也会更简单。
【解决方案2】:

您可以通过数组访问语法[]、字符串访问语法{}以及其他多种方法轻松获取字符串的第一个字符。

if ("B" == $name[0]) {
    // show student page
}
else {
   // show instructor page
}

【讨论】:

  • “红色是红色吗?”最容易理解的莫过于“颜色是红色的吗?”
  • @DusteD 你可以随心所欲地阅读它,但"B" = $name[0] 是一个语法错误。 $name[0] = "B" 始终是 true
【解决方案3】:
if ( $username[0] == 'E' )
{
  // It's a teacher
} else if ( $username[0] == 'B' )
{
  // It's a student
} else {
  // Username is invalid
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    相关资源
    最近更新 更多