我正在尝试从数据库中调用数据以便稍后发布
当有人使用此代码登录时:
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/