Я пытаюсь создать систему входа PHP. Я нахожусь в точке, где я зарегистрировал данные пользователя в переменных сеанса, а также в базе данных пользователей, используя mysqli. Когда пользователь создает учетную запись, они перенаправляются на страницу профиля. На этой странице я пытаюсь отобразить электронную почту пользователя и имя пользователя пользователя. У меня нет проблем с отображением имени пользователя, поскольку я сохранил его в переменной сеанса. Однако я не могу понять, как получить сообщение по электронной почте. Я не хранил сообщение в переменной сеанса. Я пытаюсь извлечь его из базы данных пользователя (а не из базы данных сеансов). Вот код:fields and and bind_param/ajax post request
showuser.php (страница профиля):
<?php
session_start();
$host="localhost"; // Host name
$uname="root"; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name="users"; // Table name
// Connect to server and select database.
$mysqli = mysqli_connect($host, $uname, $password, $db_name);
$stmt = $mysqli->prepare("SELECT email FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$stmt->bind_result($em);
$stmt->fetch();
?>
<h2>Username - Email</h2>
<div id="userinfo"><? echo $_SESSION["username"] ?> - <? echo $em ?></div>
<?
$stmt->close();
mysqli_close($mysqli);
?>
storeuser.php
<?php
session_start();
$host="localhost"; // Host name
$uname="root"; // Mysql username
$password=""; // Mysql password
$db_name="itit"; // Database name
$tbl_name="users"; // Table name
// Connect to server and select database.
$mysqli = mysqli_connect($host, $uname, $password, $db_name);
// Get values from form
$username=$_POST['username'];
$pw=$_POST['pw'];
$email=$_POST['email'];
$_SESSION["timeout"] = time();
$_SESSION["username"] = $_POST['username'];
$_SESSION["password"] = $_POST['pw'];
$_SESSION["loggedIn"] = true;
// Insert data into mysql
$sql = "INSERT INTO $tbl_name(username, password, email)VALUES(?,?,?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("sss", $username, $password, $email);
$stmt->execute();
?>
<?php
// close connection
mysqli_close($mysqli);
?>
application.js
$("#signupform").submit(function(e) {
e.preventDefault();
$.post('storeuser.php', $(this).serialize(), function(data){
$("#showuser").load("templates/showuser.php");
$("#userinfo").text(data);
$("#signupform").remove();
});
});
Было отмечено, мне в предыдущем вопросе, который я имел (относительно PDO), - что для того, чтобы письмо отображалось на странице профиля, мне нужно передать «dat переменной "в мой вызов ajax $ .post(). Где устанавливаются данные? И что находится в «данных»?
Одна странная вещь, что если я заменить эту строку:
$stmt->bind_param("s", $email);
к этому:
$stmt->bind_param("s", $_SESSION["email"]);
получает отображается электронная почта ... но я никогда не хранить электронную почту в сессии в любом месте! Нет даже поля электронной почты! Почему последний работал, а не первый?
Как правило, это не рекомендуется размещать пароли на публичных форумах. – vascowhite