Я просматривал свою регистрационную форму и регистрационную форму, и меня беспокоит то, что у меня есть несколько сеансов, определенных для отдельных переменных каждой формы. Вот то, что я говорю:Неужели несколько сеансов, связанных с элементами одной таблицы, плохо?
Часть моей регистрационной формы:
$pass = md5($pass);
$regSQLI = "INSERT INTO users (id, email, birth_date, first_name, last_name, password, sign_up_date, activated) VALUES ('','$em','$bday','$fn','$ln','$pass','$sud','0')";
$regQuery = mysqli_query($con, $regSQLI);
//variables that will be passed over from the register fields to forthcoming sessions
$_SESSION["email_login"] = $em;
$_SESSION["first_name"] = $fn;
$_SESSION["last_name"] = $ln;
Часть моего входа в форме:
if ($userCount == 1) { //if the search finds a matching record of the login input form
while($row = mysqli_fetch_assoc($sqli)) { // use fetch_assoc
$id = $row["id"];
}
$_SESSION["email_login"] = $email_login;
$_SESSION["first_name"] = $fn;
$_SESSION["last_name"] = $ln;
header("location: home.php");
exit();
}
else {
echo '<div id="regerrormsg">Login information is invalid. </div>';
}
}
Все работает, но я хочу знать, могу ли я сохранить некоторые производительности путем очистки, чтобы вызвать несколько сеансов. Причина, почему у меня есть несколько сеансов, потому что даже если пользователи будут использовать свою электронную почту, чтобы зарегистрироваться и войти в систему, система будет решать/эхо их по именам:
<?php
echo $_SESSION["first_name"]." ".$_SESSION["last_name"].".";
?>
Есть ли способ, где я могу просто одну переменную сеанса (возможно, электронную почту) в качестве валидатора и извлекать данные из базы данных, которая соответствует рассматриваемой переменной сеанса? Будет ли это чище и гладко? Спасибо.
Нет никакой разницы. Клиент все еще получает только один файл cookie. То, как вы это делаете, прекрасно. Руководствуясь, пользователь может иметь несинхронизированную информацию, поэтому в этом случае вам может потребоваться только сохранить «users.id» в вашем сеансе и вытащить из него данные пользователя. –
вы не вызываете «несколько сеансов». это сеанс SINGLE, который содержит несколько бит данных. ничто из этого НИКОГДА не доходит до клиента –
@DaveChen Большое вам спасибо. Из любопытства, однако, что заставляет пользователя иметь несинхронизированную информацию? – CodeMerchant