gpt4 book ai didi

php - 在 Codeigniter 中获取具有相同电子邮件地址域的用户的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-29 10:56:02 24 4
gpt4 key购买 nike

我有这个功能可以让用户与当前用户具有相同的电子邮件地址域。 我的问题是在 codeigniter 中是否有更好的方法来做到这一点?

我的代码是

<?php
public function sr_get_identical_users()
{
$user_email = substr( $this->session->userdata('email'), strrpos( $this->session->userdata('email'), '@' ) + 1 );
$this->db->like('email', $user_email, 'before');
$query = $this->db->get('users');
return $query->result_array();
}
?>

谢谢。感谢您的意见。

最佳答案

您应该在查询中包含 @ 字符,以查找电子邮件地址中具有相同域的用户。否则,您将面临获得多个不同域的不需要的匹配的风险。例如,域mail.com将在您的查询中匹配具有电子邮件name@gmail.comname@hotmail.com等的用户。

在您的示例中,您可以删除 +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 表包含敏感数据和散列密码等,请避免从该表中选择所有数据。如果您有大量数据,则出于性能原因仅选择特定列也是一种很好的做法表中的列不需要用于此特定目的。

关于php - 在 Codeigniter 中获取具有相同电子邮件地址域的用户的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com