ログインしているユーザーがユーザー名、パスワード、電子メールを編集できるメンバーシップ Web サイトのアカウント設定ページを作成しています。以下のこのコードは、データベース内のすべてのユーザーを編集オプション付きのすべてのユーザーに表示します。
$result = mysql_query("SELECT * FROM user") or die(mysql_error());
私はそれをしたくありません。自分の個人情報を編集できるように、ログインしているユーザーの情報のみが必要です。ここに私のテーブルがあります:
TABLE user (
id int(4) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID number of member',
username varchar(32) NOT NULL COMMENT 'Username of member',
password varchar(32) NOT NULL COMMENT 'Password of member',
email varchar(100) NOT NULL COMMENT 'Email of member',
level int(4) DEFAULT '1' COMMENT 'Permission Level of member',
PRIMARY KEY (`id`)
)
ページ全体のphpコードは次のとおりです。
<?php
ob_start(); //keep output in buffer
session_start();
require_once( 'database.php' );
include("head.php");
if (!isset($_SESSION['loggedin'])) {
?>
<body>
DO NOT HAVE ACCESS PRIVILEDGES TO THIS PAGE.
<?php }
elseif (isset($_SESSION['loggedin']) && ($_SESSION['adminuser']=='0' )){ //logged in and NOT an Admin
?>
<body>
<?php
$result = mysql_query("SELECT * FROM user")
or die(mysql_error());
?>
<table width="600" border="0" cellspacing="1" cellpadding="0">
<form name="form1" method="post" action="">
<tr>
<td>
<table width="600" border="0" cellspacing="1" cellpadding="0">
<tr>
<td align="center"><strong>UserName</strong></td>
<td align="center"><strong>Password</strong></td>
<td align="center"><strong>Email</strong></td>
</tr>
<?php
while($row = mysql_fetch_array( $result )){
?>
<tr>
<td align="center"><? echo $row['username']; ?></td>
<td align="center"><? echo $row['password']; ?></td>
<td align="center"><? echo $row['email']; ?></td>
<td align="center"><? echo '<a class="login" href="edit_user.php?id=' . $row['id'] . '">Edit</a>'; ?> </td>
</tr>
<?php
}
?>
<tr>
</tr>
</table>
</td>
</tr>
</form>
</table>
<?php
}
elseif (isset($_SESSION['loggedin']) && ($_SESSION['adminuser']=='1' )){ //logged in and an Admin
?>
<body class="loggedin">
<?php include("admin_menu.php"); ?>
<?php
$result = mysql_query("SELECT * FROM user")
or die(mysql_error());
?>
<table width="600" border="0" cellspacing="1" cellpadding="0">
<form name="form1" method="post" action="">
<tr>
<td>
<table width="600" border="0" cellspacing="1" cellpadding="0">
<tr>
<td align="center"><strong>UserName</strong></td>
<td align="center"><strong>Password</strong></td>
<td align="center"><strong>Email</strong></td>
</tr>
<?php
while($row = mysql_fetch_array( $result )){
?>
<tr>
<td align="center"><? echo $row['username']; ?></td>
<td align="center"><? echo $row['password']; ?></td>
<td align="center"><? echo $row['email']; ?></td>
<td align="center"><? echo '<a class="login" href="edit_user.php?id=' . $row['id'] . '">Edit</a>'; ?> </td>
</tr>
<?php
}
?>
<tr>
</tr>
</table>
</td>
</tr>
</form>
</table>
<?
}
include("footer.php");
ob_flush(); //flush output buffer
?>
問題を解決するために、次の 2 つの方法を既に試しましたが、うまくいきませんでした。
$result = mysql_query('SELECT * FROM user "'. mysql_real_escape_string(isset($_SESSION['loggedin']) && ($_SESSION['adminuser']=='0' )) . '"')
or die(mysql_error());
^ 列のタイトル以外は何も表示されません。私もこれを試しましたが、うまくいきませんでした:
$result = mysql_query("SELECT * FROM user '". mysql_real_escape_string($_SESSION['loggedin']) . "'")
or die(mysql_error());
助けてください。