1

クエリ結果からセッションに値を割り当てようとしていますが、うまくいきません..

以下のセッションユーザー名 、私はユーザーの電子メールであるセッションユーザー名を登録しています

$_SESSION['myusername'] = $myusername;

ログインの確認 ここでは、電子メールが保存されている同じテーブルから顧客名を取得し、「名前」セッションに保存しようとしています

$_SESSION['name'] = $row['name']; 

ここに記録された成功 ユーザーの名前を取得しようとしています

echo "Welcome ". $_SESSION['name'];

ログインページをチェック*

<?php
ob_start();
$host="localhost"; // Host name 
$username="xx"; // Mysql username 
$password="xx"; // Mysql password 
$db_name="xx"; // Database name 
$tbl_name="customer"; // Table name
$db_usercol="email"; // Field containing username
$db_passcol="password"; // Field containing password

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// username and password sent from form 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE $db_usercol='$myusername' and $db_passcol='$mypassword'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){
// Register $myusername, $mypassword and redirect to file "profile.php"
session_register("myusername");
session_register("mypassword");
$_SESSION['myusername'] = $myusername;
$_SESSION['name'] = $row['name']; 
header("location:profile.php");
}
else {
echo "Wrong Username or Password";
}
ob_end_flush();
?>

ログイン成功時*

<?
// Check if session is not registered , redirect back to main page. 
// Put this code in first line of web page. 
session_start();
if(isset($_SESSION[$myusername])){
header("location:members.php");
}
else
include("header.php");
?>

<body id="profile">
<div id="wholewrap">
<div id="bodywrap">

<div id="content">
<h1>Your Profile</h1>

<?php

echo "Welcome ". $_SESSION['myusername'];
echo "Welcome ". $_SESSION['name'];
?>

</div>  <!-- content #end -->

<div id="sidebar">

Lorem Ipsum

</div>  <!-- sidebar #end -->

</div>  <!-- bodywrap #end -->
</div>  <!-- wholewrap #end -->

 <?php include("footer.php"); ?>

結果は

ユーザー名のみを取得しますが、名前という名前の同じテーブルのフィールドであるユーザーの名前は取得しません

結果

4

1 に答える 1

1

まず、次のようなクエリが必要です

$query = mysql_query("SELECT `name` FROM `users` WHERE `email`='".$_POST['email']."'") or die(mysql_error()); // of course you want to clear the strings and validate them

その後、あなたは

if(mysql_num_rows($query) > 0)
{
   $row = mysql_fetch_assoc($query);

   $_SESSION['name'] = $row['name'];
}
于 2012-04-06T21:49:11.210 に答える