您應該在查詢中包含@
字符,以查找其電子郵件地址中具有相同域的用戶。如果不是,您將冒險獲得多個不同域的不需要的匹配。例如域mail.com
將在您的查詢匹配的用戶的電子郵件[email protected]
和[email protected]
等。
在你的榜樣,你可以只取出+1
到包括@
字符:
<?php
public function sr_get_identical_users()
{
$user_email = substr($this->session->userdata('email'), strrpos($this->session->userdata('email'), '@'));
$this->db->like('email', $user_email, 'before');
$query = $this->db->get('users');
return $query->result_array();
}
?>
也許你已經知道在session->userdata
的電子郵件地址是有效的,但我可能會在執行查詢之前反正驗證的電子郵件地址:
<?php
public function sr_get_identical_users()
{
$email = $this->session->userdata('email');
// CHECK IF EMAIL ADDRESS IS VALID
if (($email = filter_var($email, FILTER_VALIDATE_EMAIL)) !== false) {
$email = substr($email, strrpos($email, '@')); // EXTRACT DOMAIN PART
$this->db->like('email', $email, 'before');
$query = $this->db->get('users');
return $query->result_array();
}
}
?>
還要考慮安全性,如果包含敏感數據和散列密碼等,請避免從users
表中選擇所有數據。如果表中有許多列不需要特定性能方面的原因目的。
爲什麼你需要這樣做?解釋這可能有助於回答你的問題。 – Sparky
我正在製作分享功能。同一個域的用戶可以與其他用戶分享他的故事。 – shazyriver