php - 从数据库中读取不带@或的电子邮件

标签 php mysql

我正在尝试从数据库中调用数据以便稍后发布

当有人使用此代码登录时:

    function login($email, $password, $mysqli)
    {
        // Using prepared statements means that SQL injection is not possible. 
        if ($stmt = $mysqli->prepare("SELECT id, username, password, salt, phnumber, realname, age, sex FROM members WHERE email = ? LIMIT 1")) {

            $stmt->bind_param('s', $email);  // Bind "$email" to parameter.
            $stmt->execute();    // Execute the prepared query.
            $stmt->store_result();

            // get variables from result.
            $stmt->bind_result($user_id, $username, $db_password, $salt, $phnumber, $realname, $age, $sex);
            $stmt->fetch();
             }
     }

然后我使用以下代码设置电子邮件和姓名变量:

$realname = preg_replace("/[^a-zA-Z0-9_\-]+/", "", $realname);        
$_SESSION['realname'] = $realname;
$email = preg_replace("/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/", "", $email);        
$_SESSION['email'] = $email;

然后,当我使用 print_r($_SESSION); 记忆起所有变量时,电子邮件将在没有 @ 或 的情况下发布。例如:johnsmithyahoocom 并且发布的名称没有空格,如 JohnSmith 这是不可取的。
我怎样才能让它发布正确的电子邮件表单和名称之间的空格?

最佳答案

为什么使用 preg_replace?

如果您已经在使用数据库,我建议您仅在 SESSION 中存储用户 ID,并在需要用户信息时从数据库中获取其他数据。

关于php - 从数据库中读取不带@或的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32220508/

相关文章:

php - 使用 composer 在 cakephp 3 中安装 Facebook-php-ads-sdk

java - Java(Eclipse)调用MySQL存储过程OUT参数错误

mysql - 无法查询零记录的连接

php - 如何为具有多个版本的 Apigility ZF2 应用程序设置 PHPUnit?

php - 如何导航 html 表单并使用 php mysql 保存输入,而不继续进入 .php 文件页面?

php - php错误处理错误(文件上传)

PHP:限制foreach()语句?

mysql - 在 where 子句中将整数分配给 varchar 列时,性能存在巨大差异

MySQL插入相同的值

MySQL - SELECT 返回模糊的空值