我想從數據庫中調用數據後張貼在
當有人使用此代碼登錄:閱讀從數據庫郵件沒有@或
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._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b/", "", $email);
$_SESSION['email'] = $email;
後來,當我回憶起使用print_r($_SESSION);
電子郵件張貼不@或所有變量。例如:johnsmithyahoocom
並且該名稱的發佈沒有像JohnSmith
這樣的空間,這是不可取的。
如何讓它發佈正確的電子郵件地址和名稱之間的空格?
在將信息放入數據庫之前,您應該驗證您的輸入,而不是在出路 – BobbyTables
@zedd在輸入數據之前使用Javascript進行驗證,並在數據庫中驗證它是否爲'johnsmith @ yahoo.com'我只是不能回想一下,它沒有@或者是張貼的。並且名稱沒有空格發佈。 –
如果這個正則表達式被用來「清理」電子郵件地址,那麼你在那裏遇到了一堆問題......嘗試比用戶更聰明並「修復」他們的輸入永遠不是一個好主意。你會失敗。例如,TLD可以有4個以上的字符,一個域可以有兩個以上的標籤... – arkascha