簡體   English   中英

如果2數據庫表的其他條件,則登錄php

[英]Login php if else condition for 2 database table

大家好,我認為這對每個人都是一個好問題。

我試圖做一個登錄頁面。 但是我有一個問題。 我的數據庫中有2個用戶表 第一用戶表用於普通用戶第二用戶表用於vip用戶

下代碼為普通用戶使用。 我想確定電子郵件和密碼是否用於VIP用戶,然后打開vip_user_profile.php,如果不是電子郵件和密碼是VIP用戶,則檢查普通用戶表中是否有電子郵件和密碼,然后打開normal_user_profile.php ,我該怎么做。 有人可以幫助我嗎?

我可以在我的登錄php代碼中添加代碼嗎?

我的代碼是這個。

<?php  
 include("includes/connect.php");

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

   $email = $_POST['email'];
   $password = $_POST['pass'];

    $check_user = "SELECT * FROM users WHERE password='$password' AND email='$email'";

     $run = mysql_query($check_user);

     if(mysql_num_rows($run)>0) {

        echo"<script>window.open('normal_user_profile.php','_self')</script>";

     }
     else {
       echo"<script>alert('email or password is incorrect!')";

     }
   } 
?>

如果您堅持將信息存儲在兩個表中,則仍然可以使用一個查詢來獲取數據。 有很多方法可以做到這一點,但是您可能會發現以下一種有趣的方法:

select
  sum(usertype) as usercheck
from
  ( select nu.username, nu.password, 1 as usertype 
    from NormalUser nu
  union all 
    select vu.username, vu.password, 2 
    from VipUser vu
) u
where
  u.username = '$username' and 
  u.password = '$password'

此查詢將返回單個整數字段,該字段可以具有以下兩個值之一:

  • null:用戶名/密碼不存在組合
  • 1:用戶是普通用戶
  • 2:用戶為VIP用戶
  • 3:兩個表都包含一個具有相同密碼的用戶。

請注意,在1和2的情況下,仍然可能存在相同的用戶名,但密碼不同。

現在,要解決此問題,您可以將所有用戶放在一個表中並為他們提供用戶類型。 您可以創建許多額外的列,可以將其留空。 如果您確實希望將該信息存儲在單獨的表中(並且有很好的參數),則仍可以使用基本用戶信息(例如,用戶名和密碼)創建一個表。 然后,在VipUsers表中,您不存儲用戶名和密碼,而僅存儲用戶的ID和其他信息。 此用戶ID應該是兩個Users表的主鍵,也就是VipUsers表。 另外,它應該是VipUsers中的外鍵,引用用戶,這樣,如果沒有基本的用戶信息,就無法擁有孤立的VipUser記錄。

但是,我會選擇具有類型和可為空字段的單個表。 而且,我覺得這種感覺也更適合您當前的技能水平。

嗨,我認為這可以幫助您。 我已經閱讀了您所有的問題。 您有兩種類型的用戶。 但是, 用戶在中的情況有所不同 真實商家名稱。 您需要集中精力。 *如果用戶登錄到您的網站時使用此名稱,則其配置文件會自動打開vip_user_profile.php。當然,您必須在代碼中使用它。*

這對您來說很容易使用。 為您的VIP用戶header("vip_user_profile.php"); header("normal_user_profile.php");

暫無
暫無

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

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