2013-06-11 2 views
1

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 사용) 전자 메일을 찾고있다

+0

일반적으로,이 공개 포럼에 비밀번호를 게시하는 것은 좋지 않습니다. – vascowhite

답변

0

, 당신은 아마이 원하는

$stmt = $mysqli->prepare("SELECT email FROM users WHERE email = ?"); 
$stmt->bind_param("s", $email); 
+1

있어! 감사! – ewizard