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="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);
?>
이
$("#signupform").submit(function(e) {
e.preventDefault();
$.post('storeuser.php', $(this).serialize(), function(data){
$("#showuser").load("templates/showuser.php");
$("#userinfo").text(data);
$("#signupform").remove();
});
});
를 application.js
<?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 그것은 나에게 지적 된 몇 가지 코드입니다 이전 질문에서 (PDO 관련) - 이메일이 프로필 페이지에 표시되게하려면 "dat a "변수를 내 ajax $ .post() 호출에 전달합니다. "데이터"는 어디에 설정됩니까? 그리고 "데이터"에 무엇이 있습니까?
한 이상한 일이 내가이 줄을 교체 할 경우이에
$stmt->bind_param("s", $email);
을 :
$stmt->bind_param("s", $_SESSION["email"]);
이메일 표시 ...하지만 난 아무데도 세션에서 이메일을 저장하지 않습니다됩니다! 이메일 필드도 없습니다! 왜 후자가 작동합니까? 이 대신
$stmt = $mysqli->prepare("SELECT email FROM users WHERE username = ?");
$stmt->bind_param("s", $_SESSION["username"]);
: 당신은 대신 사용자의 (정의되지 않은 변수 $email
사용) 전자 메일을 찾고있다
일반적으로,이 공개 포럼에 비밀번호를 게시하는 것은 좋지 않습니다. – vascowhite